Triangle Computer Science Distinguished Lecturer Series

Natural Language is a Programming Language

Speaker:Michael Ernst
Date: Monday, January 23, 2017
Time: 4:00pm - 5:00pm
Location: LSRC D106 (telecast from NCSU), Duke
Light snacks will be served beginning at 3:45pm.


A program is commonly thought of as source code: a sequence of instructions that achieve some particular task. Source code is amenable to formal mathematical analysis, such as abstract interpretation and model checking to indicate whether the program satisfies a formal specification. This is a limited way to view a program. Software developers also make use of test cases, executions, documentation, variable names, the program structure, version control repositories, issue trackers, and more. I argue that it is time to take the blinders off of software analysis tools: tools should use all this information to deduce more powerful and useful information about the program. Researchers are beginning to make progress towards this vision. In this talk, I will discuss four initial results that find bugs and generate code, by applying natural language processing to English that appears in or with source code. * Comparing observed error messages to text in the user manual to determine whether the error message is adequate. * Using dictionary similarity among variable names to discover when variables are used incorrectly. * Creating test oracles (assert statements) from English descriptions of behavior (Javadoc documentation). * Translating user queries into executable bash commands. This is joint work with Juan Caballero, Alberto Goffi, Alessandra Gorla, Victoria Lin, Mauro Pezze, Irfan Ul Haq, Kevin Vu, Luke Zettlemoyer, and Sai Zhang.


Michael D. Ernst is a Professor in the Computer Science & Engineering department at the University of Washington. Ernst's research aims to make software more reliable, more secure, and easier (and more fun!) to produce. His primary technical interests are in software engineering, programming languages, type theory, security, program analysis, bug prediction, testing, and verification. Ernst's research combines strong theoretical foundations with realistic experimentation, with an eye to changing the way that software developers work. Ernst is an ACM Fellow (2014) and received the inaugural John Backus Award (2009) and the NSF CAREER Award (2002). His research has received an ACM SIGSOFT Impact Paper Award (2013), 8 ACM Distinguished Paper Awards (FSE 2014, ISSTA 2014, ESEC/FSE 2011, ISSTA 2009, ESEC/FSE 2007, ICSE 2007, ICSE 2004, ESEC/FSE 2003), an ECOOP 2011 Best Paper Award, honorable mention in the 2000 ACM doctoral dissertation competition, and other honors. In 2013, Microsoft Academic Search ranked Ernst #2 in the world, in software engineering research contributions over the past 10 years. In 2016, AMiner ranked Ernst #3 among all software engineering researchers ever. Dr. Ernst was previously a tenured professor at MIT, and before that a researcher at Microsoft Research. More information is available at his homepage: