ii
IntroductionWelcome to the Tutorials Session of NAACL HLT 2018 in New Orleans.The NAACL-HLT tutorials session is an opportunity for conference attendees to participate in a tutorial on a timely topic of importance to the field, and to hear from experts on that topic. This year, the tutorials committee comprised of tutorials chairs from four conferences: ACL, COLING, EMNLP and NAACL-HLT. A total of 51 tutorial submissions were received, of which 6 were selected for presentation at NAACL-HLT.We hope you find the six NAACL-HLT tutorials for this year to combine depth within each tutorial, and breadth across a set of topics that demonstrate the increasing relevance of NLP to a wide range of fields within and beyond computer science.We would like to thank Marilyn Walker (NAACL general chair), Ying Lin (NAACL website chair), Stephanie Lukin and Margaret Mitchell (NAACL publications chairs), and Priscilla Rasmussen (local arrangement chair) for their help during the whole process. We also want to extend our sincere gratitude to the other conferences' tutorial chairs who jointly helped with reviewing for all the tutorial submissions: Yoav Artzi, Jacob Eisenstein, Pascale Fung, Donia Scott, Marilyn Walker, Mausam, and Lu Wang.
DescriptionJust like natural language is a tool that humans use to communicate with each-other, programming languages are tools that humans use to communicate with computers. Because of the increasing need for programs and programming in our working and everyday lives, there are now massive amounts of source code being produced every day. As a result, it is ever more important for an ever increasing segment of the populace to be able to understand and create programs to do what they would like to do. However, programming is a specialized skill, IT education is hard-pressed to make up for this demand.One key insight that can help us tackle this problem is that source code is bimodal . While one modality is targeted towards explicitly instructing the hardware on the actions to perform, the other is targeted towards the humans that need to read, understand, maintain and extend the code. Given that it is humans that are producing the software, the human-oriented modality is very strong and often takes the form of natural language: from natural language identifiers, such as variable and method names, to code comments and natural language documentation.As a result, there is recently a burgeoning interest in research that connects natural language with the programming language artifacts. This research area has the potential to improve the efficiency and ease of programming by making connections to natural language, which is (in general) easier for humans to understand and communicate with, particularly humans who are not yet well-versed in programming. Some examples of relevant tasks include:• Automatic explanation of programs in natural language (code-to-language): Highly connected with the task of grounded natural language generation in the NLP community, this is the task of generating natural lang...