EECS 598. Program Synthesis: Techniques and ApplicationsInstructor: Xinyu Wang
Time: T/TH 3:00pm - 4:30pm eastern time
Location: zoom (remote, link here)
Office Hours: T/TH 4:30 - 5:30pm eastern time (zoom, link here)
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.