EECS 700: Introduction to Program Synthesis

Fall, 2023

Instructor: Sankha Narayan Guria

Lectures: Monday, Wednesday, and Friday, 3:00 - 3:50pm, LEEP2 G411

Office Hours: Monday 4:00 - 5:00pm, Eaton Hall 2034

Please email if standard office hours times do not work for you.

EECS 700 is a comprehensive introduction to automatic programming or program synthesis, an emerging area that sits at the intersection of programming languages, automated reasoning, and artificial intelligence. Program synthesis aims to generate programs automatically from high-level, possibly incomplete descriptions. The course covers a wide variety of recent synthesis techniques that differ in the kind of descriptions they start with tests and input-output examples to formal correctness specifications. It will also cover the search strategies synthesis tools use like enumeration, symbolic execution, type systems, stochastic search, and machine learning.


The link to join Discord is shared on Canvas. Email me if you are unable to join.


All information on this class website is tentative and subject to change. Any substantive change will be accompanied with an announcement to the class via Canvas and Discord.

This course is inspired from other Program Synthesis classes at MIT, UCSD, and UW Madison. You should check out those courses as well!