This course provides an overview of techniques to build correct software, with a strong focus on testing and program analysis. In particular, covered topics include:
- 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)
Students apply the learned techniques to solve a group project in the area of program analysis.
Note that the modalities described below are subject to change throughout the semester.
- Lectures will be held online: they will be pre-recorded and published here in advance (credentials can be found here). We recommend watching these during regular lecture hours.
- There will be no in-presence live streaming. In particular, the lecture hall (HG F 3) will not be used.
- Each Wed at 13:40-14:00, the lecturers offer an online Q&A session (Zoom link ★) on the topics of that week. Q&A sessions will not be recorded.
- Exercise sheets will be published here by Wednesday evening. Please solve the exercises before next week's exercise session and before looking at the solutions.
- Exercise sessions start in the second week of the semester. There will be both online and physical exercise sessions, as listed below (students can freely chose which session to attend). We will discuss the solutions of the previous week's exercise sheet.
- Exercise sessions will not be recorded.
- For any additional questions regarding the lectures or exercises, we have prepared a Moodle forum.
★ To join the Zoom meetings, you must be logged in with a *.ethz.ch account, which you can create here.
Use your NETHZ account to access the slides. Use these credentials to access the recordings.
Use your NETHZ account to access the exercises.
Details on the course project have been communicated on March 29 in the lecture. You can find instructions in your GitLab project repository.
Previous exams are available in the exam collection of the student association (VIS).