Verification Verification — Exams Verification — Lecture Notes


People: Bernd Finkbeiner, Sven Schewe,
Rayna Dimitrova, Lars Kuhtz, Anne Proetzsch
Lecture Room: HS 002 Building E 1 3
Lecture Time: Tuesdays and Thursdays 14:15-15:45
Tutorials: Room 013 Building E 1 3, Wednesdays 14:15-15:45
Room 013 Building E 1 3, Fridays 10:00-11:30
Office Hours: Wednesdays 14:00-15:00



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.

Recommended Reading