Rigorous Software Engineering
|Semester||Spring Semester 2022|
|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.|
|Performance assessment information (valid until the course unit is held again)|
Performance assessment as a semester course|
|ECTS credits||8 credits|
|Language of examination||English|
|Repetition||The performance assessment is only offered in the session after the course unit. Repetition only possible after re-enrolling.|
|Mode of examination||written 120 minutes|
|Additional information on mode of examination||The grade will be determined by: |
- a mandatory project, 20%
- a final exam, 80%
Students who are repeating the course are required to repeat the project work.
|This information can be updated until the beginning of the semester; information on the examination timetable is binding.|
|252-0216-00 U||Rigorous Software Engineering|
|There are no additional restrictions for the registration.|