CS703 - Fall 2017
Program verification and synthesis

General Information

Loris D'Antoni
Office: 6355, Computer Sciences
Please include "CS703" in the subject.
Email: loris (at) cs (dot) wisc (another dot) edu

We will be meeting on MWF, 1-2.15pm, in COMP SCI 1263
Office hours: Wed 4-5pm or email me.

Course Info

This course covers recent advances in program verification and synthesis, two techniques aimed at improving software quality and reliability. Broadly speaking, the goal of program verification is to automatically check whether programs contain bugs, while the goal of program synthesis is to automatically generate programs that do not contain bugs.
The course is divided into two main parts:
  1. We will survey some traditional program verification techniques such as model checking and program logics. You will learn to statically (at compile time) reason about properties of programs. For example, we will show how to prove that a scheduling algorithm cannot cause deadlocks.
  2. In the second part of the course, you will learn how to synthesize programs from higher-level specifications. For example, we will show how to automatically generate Excel macros from input-output examples only!

Evaluation

Performance will be evaluated as follows:

Course Project

For the final project, you can work on a problem of your choice with a partner or by yourself.

Deliverable 1 - Oct 2: Email me a list of three project ideas.
Deliverable 2 - Oct 16: Submit a 2-3 page proposal including the following:
  1. The statement of the problem to be investigated
  2. An explanation of why the problem is interesting
  3. A description of what you propose to do,
    • Explain the elements that you will have to build
    • Explain the elements that you can pick up
    • from open-source sites
    • Explain the experiment(s) or performance measurement(s) that you plan to carry out. Two good approaches are
      • State the hypothesis that you hope to refute.
      • Complete the following sentence: ``The experiments were designed to shed light on the following questions: . . .''
    • Then explain what you plan to measure; how you will measure it (if it is not obvious); and where you will obtain test cases.
    • List the tasks, broken down into two or three milestones
Deliverable 3 - November 4: Description of progress, implementation plan with completed steps checked off, and experimentation plan. Please turn in an updated proposal (with changes marked and your new material added as "Appendix: Progress Report").
Deliverable 4 - November 19: Description of progress, implementation plan with completed steps checked off, and experimentation plan. Please turn in an updated proposal (with changes marked and your new material added as "Appendix: Progress Report").
Deliverable 5 - Week of December 7 and 14: 15-minute oral presentations (plus 5 minutes for questions/discussion) will be given during class. You will need to e-mail me an abstract (in plaintext) giving the title, project participants, and a two-paragraph to three-paragraph summary of what will be presented.
Deliverable 6 - December 15 (last day of classes) Final writeup: The final writeup should be modeled after a typical conference paper. There is no length requirement or limit, but I would expect it to be somewhere around 6-10 pages of ACM's double-column conference formats.

Class Schedule

Lecture Dates Topic Info
Sep 6 No Class - Professor traveling
Sep 8 No Class - Professor traveling
1 Sep 11 Course introduction
Automata and MSO over strings
Slides
2 Sep 13 MSO over strings [Tho]
HW1 assigned
3 Sep 15 Finished MSO and BDDs [Pfe]
4 Sep 18 Symbolic automata + Start Model checking, infinite strings, and Buchi automata [Dan] Sec. 1-3 [MCa] Cha. 2-4
5 Sep 20 Linear temporal logic (LTL) [MCa] Cha. 5
6 Sep 22 Computation tree logic (CTL) [MCa] Cha. 6

Relevant Resources

There are no required textbooks for this class. The following is a list of books and articles that should be useful references for different parts of the course.