0;95;0c Introduction to Program Synthesis

Introduction to Program Synthesis 6.S084/6.887 2020

© Armando Solar-Lezama. 2018. All rights reserved.

Introduction to program synthesis

Lecture0:Slide1; Lecture0:Slide2; Lecture0:Slide3; Lecture0:Slide4; Lecture0:Slide5; Lecture0:Slide6


Recitation scheduled: The optional recitation will be Fridays at 2-3 PM in room 56-162.

Office hours scheduled: Office hours will be weekly on Thursdays 4-5 PM, in 32-G716 or the nearby lounge by the elevators.

PSet 1 now posted: Pset 1 is now posted and can be found here.

PSet 2 now posted: Pset 2 is now posted and can be found here.

PSet 3 now posted: Pset 3 is now posted and can be found here.

Course description

This course aims to give an introduction to program synthesis, a new field at the intersection of programming languages, formal methods and AI. The course will explore a number of fundamental questions around the problem of how to automatically discover programs that do what the user expects. In particular, the class will explore the following questions:


The course will be graded based on three hands-on assignments as well as a final project where you will get to apply the concepts learned in the course to the problem of your choice. If you sign up to receive graduate credit for the course, the three problem sets will involve additional problems suitable for graduate students who will be expected to have read some of the original papers from which the course material is derived. The final project will also have additional requirements in terms of the depth expected of the project. All psets are due at 5pm on the posted day. The late penalty will be 10 points per day up to a maximum of 4 days.


An important part of the grade will be a term project where students will demonstrate their mastery of the topics covered in the course. The projects can apply concepts from the course to a new problem, or explore new techniqes. The project grade be based on the following benchmarks: Graduate vs. Undergraduate credit If you are getting graduate credit for the course, the expectation in terms of originality of the project will be higher than for undergraduate credit. In particular, if you are getting undergraduate credit, a project that simply compares existing techniques, for example, or that applies an existing tool to a problem you are interested in and describes the result is sufficient. For graduate credit, we expect some technical novelty. This can involve exploring a variation of an existing technique, or an application to a problem where these techniques have not been applied before. Again, the project grade will not depend on whether the result is positive or negative, but on how well it is executed.

The webpage for an earlier version of this course can be found here.