Automating programming is a long-standing goal in computer science. In spite of significant recent progress in program synthesis, we remain very far from achieving this goal. For example, on almost all programming assignments that they receive, a freshman CS major would perform better than today's best program synthesizers.

Two key capabilities that human programmers (indeed, freshmen) have and program synthesizers do not are that humans learn from experience, i.e., data, and can easily generalize from ambiguous problem definitions. In this talk, I will describe a recent statistical attempt to imbue program synthesizers with these capabilities. Here, specifications of programming tasks are seen to be "clues" towards a "true" specification that fully defines the task. Large corpora of real-world programs are used to learn a statistical model that correlates specifications with "sketches" (syntactic abstractions) of their implementations. During synthesis, this model predicts "sketches" that are likely to match the user's intent; these sketches are then concretized into programs using state-of-the-art combinatorial techniques.

I will give a demo of Bayou, an implementation of this approach that is suited to the synthesis of API-manipulating Java code. I will end with a discussion of some other ways in which statistical learning can be a central idea in program synthesis.



Swarat Chaudhuri is an Associate Professor of Computer Science at Rice University. His research has two main thrusts: (a) algorithms, based on automated deduction, combinatorial search and optimization, and statistical machine learning, for program analysis and synthesis; and (b) the use of these algorithms in practical tools for increasing programmer productivity. The applications that motivate his work come from a mix of areas, including industrial software engineering, end-user programming, multiagent systems, and robotics an cyber-physical systems.

Swarat received a bachelor's degree in computer science from the Indian Institute of Technology, Kharagpur, in 2001, and a doctoral degree in computer science from the University of Pennsylvania in 2007. From 2008-2011, he was an Assistant Professor at the Pennsylvania State University, University Park. He is a recipient of the National Science Foundation CAREER award and the ACM SIGPLAN John Reynolds Doctoral Dissertation Award. He has served on the committee of many conferences in formal methods and programming languages, and chaired the 2016 Conference on Computer-Aided Verification (CAV).

This page was last modified on 17 Oct 2017.