EECS 700: Introduction to Program Synthesis

Fall, 2024

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

Email: [email protected]

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

EECS 700: Introduction to Program Synthesis 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.

Communications

Disclaimer

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.

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