Course Tutorials Exams Lecture Notes Problem Sets


Core Lecture Course (9 CP)
Wintersemester 2011/2012

People: Bernd Finkbeiner, Peter Faymonville, Michael Gerke
Lecture Room: HS 003 Building E 1 3
Lecture Time: Tuesdays 16:15-17:55 and Thursdays 14:15-15:55
Tutorials: Mondays 16:00-18:00 E 1 3 SR 015,
Wednesdays 12:00-14:00 E 1 3 SR 015
Office Hours: Bernd Finkbeiner: Wednesdays 15:00-16:00 E 1 3 / 506
Peter Faymonville: E 1 3 / 533
Michael Gerke: E 1 3 / 507



How can one ensure that computer programs actually do what they are intended to do? Simply running a program repeatedly with various inputs is inadequate, because one cannot tell which inputs might cause the program to fail. It is possible to tailor a tester to test a given program, but present-day programs are so complex that they cannot be adequately checked through conventional testing, which can leave significant bugs undetected. Program verification uses mathematical and logical methods to prove that a program is correct. This approach was pioneered by, among others, Dijkstra, Floyd, Gries, Hoare, Lamport, Manna, Owicki and Pnueli. Today, we have powerful decision procedures that can, completely automatically, answer basic questions about the data types typically used by programmers. Model Checking is a “push-button” technology that can analyze finite-state abstractions of programs with as many as 1020 states. This course takes an up-to-date look at the theory and practice of program verification.

Main Textbooks

Recommended Reading