252-0216-00L  Rigorous Software Engineering

SemesterSpring Semester 2022
LecturersM. Schwerhoff, M. Vechev
Periodicityyearly recurring course
Language of instructionEnglish

AbstractThe course provides an overview of techniques to build correct software, with a strong focus on testing and program analysis.
ObjectiveThe course has two main objectives:

- Understand the core techniques for building correct software.
- Understand how to apply these techniques in practice.
ContentThe 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.
LiteratureWill be announced in the lecture.