Capita Selecta Software Engineering 2011-2012 (Leuven): Verification of Imperative Programs

Instructor: Bart Jacobs; co-instructor: Jan Smans

Exam

NEW: Assignment. Deadline for handing in the assignment: Friday, April 27 2012, 16:00. Note: upgrade to VeriFast 11.11.27 before starting the assignment.

Note: All students have to participate in all three modules (Leuven, Brussels, Antwerp) of the course. Not participating in any module automatically leads to a failing grade for the entire course.

Classes

Three PC-lab sessions of 4 hours each, where students perform the exercises from the VeriFast tutorial. (A hardcopy of the tutorial will be provided.)

Building VHI = Van Den Heuvelinstituut, Dekenstraat 2, 3000 Leuven (a 10-minute walk from the train station)
Building MTC1 = Maria-Theresiacollege, Sint-Michielsstraat 6, 3000 Leuven (a 15-minute walk from the train station)

Course Content

The students will be taught the VeriFast approach for verifying various correctness properties of single-threaded and multithreaded imperative programs. The language used will be C but the approach is equally applicable to C++, Java, C#, etc. Supported correctness properties include absence of data races, absence of buffer overflows, absence of memory leaks, and programmer-specified preconditions and postconditions. Properties are specified using separation logic and verified using symbolic execution.

Contrary to most other verification approaches, like model checking, the approach taught in this class is modular, so that it scales linearly with the size of the program; and it supports infinite state spaces and arbitrarily complex properties.

Background literature

See also