6.S084/6.887 Introduction to Program Synthesis


Undergraduate level -AUS
Meets with Graduate subject 6.887
Units: 3-0-9
Prereqs: 6.009, 6.042
Instructor: Professor Armando Solar-Lezama
Schedule:  MW1-2:30, room 32-144
This subjects counts as an Independent Inquiry subject. The graduate version counts as a Computer Systems concentration subject.
The goal of this course is to provide a comprehensive introduction to the field of Software synthesis, an emerging field that sits at the intersection of programming systems, formal methods and artificial intelligence. The course will be divided into three major sections: the first will focus on program induction from examples and will cover a variety of techniques to search large program spaces. The second section will focus on synthesis from expressive specifications and the interaction between synthesis and verification. Finally, the third unit will focus on synthesis with quantitative specifications and the intersection between program synthesis and machine learning. The course will be graded on the basis of three homework assignments and an open ended final project.