EECS 598. Program Synthesis: Techniques and Applications

Instructor: Xinyu Wang
Time: T/TH 3:00pm - 4:30pm eastern time
Mode: remote
Location: zoom (remote, link here)
Office Hours: T/TH 4:30 - 5:30pm eastern time (zoom, link here)

Description

Program synthesis is an area that sits at the intersection of programming systems and artificial intelligence, which aims to ease the software development process. Software nowadays is everywhere, but constructing software is hard, not only for non-expert users but also even for expert developers.

This special topics course aims to give an introduction to program synthesis and is designed to be a research-oriented class. Through a mix of lectures and paper presentations and discussions, we will learn the fundamental algorithms for program synthesis as well as their modern applications.

This class features an open-ended, research-oriented project, which is the main deliverable of this class. You are encouraged to form small teams (typically of size two), propose a project idea (or select one from a list of offered ideas), and pursue that idea throughout the semester. This could be a great opportunity if you plan to pursue research in program synthesis/programming languages, or incorporate such techniques into your research.

This class is structured around four modules.
In the first module, we will cover programming-by-example techniques through a combination of lectures and paper presentations/discussions. While these papers often come with concrete applications, the focus in this module will be on the techniques.
In the second module, we will look at more program synthesis techniques beyond those based on only examples. We will again learn these techniques through both lectures and paper discussions.
The third module, instead, will focus on applications. That means, we will look at novel ways of applying program synthesis to a pretty wide range of application domains, while some of the techniques there may look quite familiar to you.
Finally, the fourth module will be student presentations of final projects.

More details about the syllabus can be found here.

Schedule

Date Topics Location Speaker Optional Readings
Sept 1 Lecture: Introduction [slides] Zoom Xinyu [Gottschlich18] [Gulwani10]
Module 1. Programming-by-Example Techniques
Sept 3 Lecture: Syntax-Guided Synthesis [slides] Zoom Xinyu [Alur13] [Alur18]
Sept 4 Due: Paper Assignment
Sept 8 Presentation: L2 [Feser15] Zoom Xinyu [Udupa13] [Albarghouthi13]
Sept 10 Lecture: SAT/SMT [slides] Zoom Xinyu [ALR]
Sept 15 Presentation: Morpheus [Feng17] Zoom Xinyu [Jha11]
Sept 17 Presentation: FlashFill [Gulwani11] Zoom Zhiyi [Polozov15] [Wang18]
Sept 18 Due: Paper Assignment (co-presentations)
Module 2. More Techniques, Beyond Examples
Sept 22 Lecture: CEGIS Zoom Xinyu [Solar08]
Sept 24 Presentation: Migrator [Wang19] Zoom Yifan [Feng18]
Sept 29 Presentation: Myth [Osera15] Zoom David [Polikarpova16] [Frankle17]
Oct 1 Presentation: Smyth [Lubin20] Zoom Eric [Lubin20-extended]
Oct 2 Due: Final Project Ideas and Teams
Oct 6 Presentation: ReSyn [Knoth19] Zoom Yonathan
Oct 8 Presentation: IRNet [Guo19] Zoom Naihao [Suhr20]
Oct 13 FP Proposals [schedule] Zoom All
Oct 14 Due: Final Project Proposal
Module 3. More Applications
Oct 15 Presentation: Sketch-n-Sketch [Chugh16] Zoom Andrew [Ellis18]
Oct 20 Presentation: Konure [Shen19] Zoom Yitong
Oct 22 Presentation: Lens [Phothilimthana16] Zoom Yonathan, Zhiyi
Oct 27 Guest presentation by Rebecca Krosnick [Chasins18] Zoom Rebecca [Li17]
Oct 29 Presentation: Dynamite [Wang20] Zoom Eric, Yifan
Oct 30 Due: Final Project Progress Report (checkpoint 1)
Nov 3 No class (election day)
Nov 5 Presentation: Duoquest [Baik20] Zoom Naihao, Yitong
Nov 10 Presentation: RESL [Peleg20] Zoom Andrew, David
Nov 12 Presentation: Blaze [Wang18] Zoom Xinyu [Wang17]
Nov 17 Guest presentation by Tianyi Zhang [Zhang20] Zoom Tianyi
Nov 19 No class (PLDI)
Nov 20 Due: Final Project Progress Report (checkpoint 2)
Nov 24 No class (Thanksgiving)
Nov 26 No class (Thanksgiving)
Module 4. Final Project Presentations
Dec 1 FP Presentations 1 [schedule] Zoom All
Dec 3 FP Presentations 2 [schedule] Zoom All
Dec 8 Wrap up Zoom
Dec 9 Due: Final Project Report

List of Papers