Program Analysis (Summer Semester 2026)
Quick Facts
| Lecturer | Prof. Dr. Michael Pradel |
| Teaching assistants | Doehyun Baek, Geraldine (Widni) Galindo, Pascal Joos |
| Course type | Lecture + Exercises + Project |
| Language | English |
| Ilias | Ilias course with forum for questions and discussions |
| Place | Universitätsstr. 38, 0.108 |
Content
This course introduces the principles and practice of automatically analyzing large software systems. The course provides an overview of program analysis and then covers three topics in more detail: Static analysis, which analyzes the source code of a program, dynamic analysis, which reasons about the runtime behavior of a program, and test generation, which creates inputs to run programs. In addition to lectures, students will deepen their understanding through a practical course project (implement a program analysis based on an existing framework) and homework assignments. Besides academic achievements, the course will help students to improve their programming skills by learning about common sources of mistakes and about techniques to find them.
Organization
The course will be in-person, i.e., all activities will be in a classroom or in in-person meetings. Slides and other material will be made available during the semester, usually soon after the corresponding lecture. For students who cannot physically attend the course, e.g., due to sickness: Lecture videos from a previous year are available in this playlist. Note, however, that the content covered in this semester will only partially overlap, as the course is continously evolving.
Schedule
This is a preliminary schedule and may be subject to change. "L" stands for lecture, "P" stands for project, and "E" stands for exercise. Events printed in bold are deadlines (strict).
| Date | Topic | Material |
|---|---|---|
| Apr 20, 9:45am | L: Introduction | Slides and notes |
| Apr 21, 5:30pm | L: Operational Semantics (1/2) |
Slides and notes Fernandez' book |
| Apr 27, 9:45am | L: Operational Semantics (2/2) |
Slides and notes |
| Apr 28, 5:30pm | L: Data Flow Analysis (1/3) |
Slides and notes Chapter 2 of Principles of Program Analysis |
| Apr 29, 11:59pm | E: Exercise 1 published | Exercise, Solution |
| May 6, 11:59pm | E: Exercise 1 due | |
| May 11, 9:45am | L: Data Flow Analysis (2/3) |
Slides and notes Chapter 2 of Principles of Program Analysis |
| May 12, 5:30pm | L: Data Flow Analysis (3/3) |
Slides and notes Chapter 2 of Principles of Program Analysis |
| May 13, 11:59pm | E: Exercise 2 published | Exercise |
| May 18, 9:45am | L: Information Flow Analysis | |
| May 19, 5:30pm | L/P: Introduction of Course Project | |
| May 20, 11:59pm | E: Exercise 2 due, P: Project published | |
| June 1, 9:45am | L: Random and Fuzz Testing | |
| June 2, 5:30pm | L: Symbolic Execution | |
| June 3, 11:59pm | E: Exercise 3 published | |
| Week of June 1-5 | P: Progress meeting 1 (scheduled individually) | |
| June 8, 9:45am | L: LLM-based Test Generation | |
| June 9, 5:30pm | L: Dynamic Analysis Frameworks | |
| June 10, 11:59pm | E: Exercise 3 due | |
| June 15, 9:45am | L: Call Graphs | |
| June 16, 5:30pm | L: Slicing | |
| June 17, 11:59pm | E: Exercise 4 published | |
| Week of June 15-19 | P: Progress meeting 2 (scheduled individually) | |
| June 22, 9:45am | L: Neuro-symbolic Program Analysis | |
| June 23, 5:30pm | L: Software Development Agents | |
| June 24, 11:59pm | E: Exercise 4 due | |
| Week of June 29 - July 3 | P: Progress meeting 3 (scheduled individually) | |
| Week of July 13-17 | P: Final presentations (scheduled individually) | |
| July 17, 11:59pm | P: Project due |
Course Project
The course project is about implementing a program analysis for a real-world language. More details will be published during the semester.