252-0216-00L Rigorous Software Engineering
|Semester||Spring Semester 2022|
|Lecturers||M. Schwerhoff, M. Vechev|
|Periodicity||yearly recurring course|
|Language of instruction||English|
|Abstract||The course provides an overview of techniques to build correct software, with a strong focus on testing and program analysis.|
|Objective||The course has two main objectives:|
- Understand the core techniques for building correct software.
- Understand how to apply these techniques in practice.
|Content||The course presents an overview of techniques to build correct software, including:|
- Code documentation
- Modularity and coupling (Design patterns)
- Dynamic program analysis (Testing, fuzzing, concolic execution)
- Static program analysis (Numerical abstract interpretation, pointer analysis, symbolic execution)
- Formal modeling (Alloy)
In addition, students apply the learned techniques to solve a group project in the area of program analysis.
|Literature||Will be announced in the lecture.|