Program Synthesis

About This Course  

The goal of program synthesis is to automatically find a program that satisfies the user intent expressed in the form of some specification.
Program synthesis stands at the intersection of multiple disciplines, programming languages, artificial intelligence and data science.This course gives an introduction to the field, and requires the students to learn about the state-of-the-art by reading recent articles and working on a course project.

Learning Objectives  

The topics we plan to cover include inductive, functional, counter-example guided and type-driven synthesis.

Reading Material

  • There is no required textbook for this course. Students require to read the relevant papers introduced during the course.
  • Some materials of this course have been borrowed from the similar course given by Armando Solar-Lezama.


12 EsfandCourse Overview
24 EsfandIntroduction to Inductive Synthesis
39 EsfandBottom-Up Enumerative Search
411 EsfandTop-Down Enumerative Search

Marking Criteria 

  • 20% Paper review and presentation
  • 20% Project
  • 60% Final Exam