Master course in Winter 2024/25
Schedule
Type | Day | Time | Room | Start | Lecturer |
---|---|---|---|---|---|
Lecture | Mon | 12:30-14:00 | AH 2 | 7 Oct | Noll |
Tue | 12:30-14:00 | AH 2 | 8 Oct | Noll | |
Exercise | Thu | 16:30-18:00 | AH 3 | 24 Oct | Ahrens, Haase |
Detailed information is available through the associated RWTHmoodle classroom.
Contents
The analysis and verification of software systems is an important issue. In particular, safety-critical systems are ones in which errors can be disastrous: loss of life, major financial losses, etc. Techniques to safeguard against such scenarios are essential for such systems. Testing can identify problems, especially if done in a rigorous fashion, but is generally not sufficient to guarantee a satisfactory level of quality. Formal methods, on the other hand, offer techniques ranging from the description of requirements in a formal notation to allow for rigorous reasoning about them, to techniques for automatic verification of software. The goal of this course is to provide an introduction to the field of formal semantics for programming languages, with particular emphasis on software verification. The following topics will be covered:
- The imperative model language WHILE
- Operational semantics of WHILE
- Denotational semantics of WHILE
- Equivalence of operational and denotational semantics
- Axiomatic semantics of WHILE
- Compiler correctness
- Extensions: procedures, pointers (separation logic), …
Prerequisites
Basic knowledge of the following relevant undergraduate courses is expected:
- Programming (essential concepts of imperative and object-oriented programming languages and elementary programming techniques)
- Formal Languages and Automata Theory (regular and context-free languages, finite and pushdown automata)
- Mathematical Logic
Background Literature
- Glynn Winskel: The Formal Semantics of Programming Languages, The MIT Press, 1996
- Hanne R. Nielson, Flemming Nielson: Semantics with Applications: An Appetizer, Springer Undergraduate Topics in Computer Science, 2007
- Mike Gordon: Background reading on Hoare Logic, Lecture notes, 2016