252-0216-00L  Rigorous Software Engineering

SemesterSpring Semester 2025
LecturersM. Vechev, M. Schwerhoff
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.
Learning 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, 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.
CompetenciesCompetencies
Subject-specific CompetenciesConcepts and Theoriesassessed
Techniques and Technologiesassessed
Method-specific CompetenciesAnalytical Competenciesassessed
Decision-makingfostered
Media and Digital Technologiesassessed
Problem-solvingassessed
Project Managementfostered
Social CompetenciesCommunicationfostered
Cooperation and Teamworkfostered
Personal CompetenciesCreative Thinkingfostered
Critical Thinkingfostered
Self-direction and Self-management fostered