|Language||The seminar will be in English.|
|Kickoff meeting||Thursday, 22 April, 16:00|
|Prerequisites||No formal requirements, but prior experience with program analysis, verification or automated reasoning is helpful.|
|Format||Each student will read 3-4 (related) papers and prepare a 20min
presentation. After paper presentations, we will have an in-class
discussion that every student is expected to participate in.
Attendance and active participation on all presentation days is
In addition to the presentation, students are expected to write a report (10-15 pages) on their assigned papers, summarizing them, explaining their main ideas and their relation to each other.
You can apply for the seminar by filling in this form by 7 April:
Places in the seminar are limited. We will assign the available seminar places after the registration deadline and will then notify you via email.
|Tentative Schedule||In the first half of the semester, you will have time to read papers, prepare your presentation and a first draft of your report. In the second half of the semester, we will have weekly meetings with presentations and discussions.|
The idea that we could tell a computer what we want and it would automatically figure out how to achieve it has fascinated scientists for a long time, but it has also been an elusive goal. Via recent research papers in the area of program synthesis, this seminar will look at the significant steps which have been made towards this grand vision. We will discuss what is currently possible, for which application domains program synthesis is successful, what the main challenges are and what perhaps will never be feasible. The paper selection will cover the major synthesis techniques to provide an overview of the current landscape.
Disclaimer: The name 'synthesis' can mean many different things, in particular there are two different areas whose goal is to generate programs. This course considers the so-called functional synthesis which aims to synthesize programs whose inputs are finite, e.g. a sorting algorithm. On the other hand, the input of reactive synthesis generated programs are infinite streams, e.g. in embedded controllers. This introduction nicely explains the differences and also provides an introduction to program synthesis. The approaches in these two domains are quite different, and in this seminar we will focus on functional synthesis.