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