6.885 Introduction to Principles and Practice of Software Synthesis


Graduate H-level - AUS 
Units:  3-0-9
Prerequisites: 6.035
Instructor:  Prof. Armando Solar-Lezama
Schedule: MW1-2:30, room 34-304
This subject qualifies 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 cover classical work on automata-based synthesis of reactive systems, as well as recent advances in the use of SAT/SMT solvers to synthesize programs from sketches. It will also cover the use of heuristic search techniques to explore large spaces of candidate programs. The course will also discuss different approaches to address the specification problem, ranging from logic-based specification mechanisms to programming by demonstration. The course will be graded on the basis of three major homework assignments and a final project.