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, Solution |
| May 18, 9:45am | L: Information Flow Analysis |
Slides and notes Papers by Denning and by Clause et al. |
| May 19, 5:30pm | L/P: Introduction of Course Project |
Slides and notes Code |
| May 20, 11:59pm | E: Exercise 2 due, P: Project published | cp |
| June 1, 9:45am | L: Random and Fuzz Testing |
Slides and notes Randoop: Tool, Paper by Pacheco et al. AFL: Tool, Technical documentation |
| June 3, 11:59pm | E: Exercise 3 published | Exercise |
| June 8, 9:45am | L: Symbolic Execution |
Slides and notes Papers on DART, KLEE, and SAGE |
| Week of June 1-5 | P: Progress meeting 1 (scheduled individually) | |
| June 9, 5:30pm | L: LLM-based Test Generation |
Slides and notes Papers on TestPilot, Fuzz4All, and Issue2Test |
| June 10, 11:59pm | E: Exercise 3 due | |
| June 15, 9:45am | L: Dynamic Analysis Frameworks | |
| June 16, 5:30pm | L: Call Graphs | |
| June 17, 11:59pm | E: Exercise 4 published | |
| June 22, 9:45am | L: Slicing | |
| Week of June 15-19 | P: Progress meeting 2 (scheduled individually) | |
| June 23, 5:30pm | L: Neuro-symbolic Program Analysis | |
| June 24, 11:59pm | E: Exercise 4 due | |
| June 29, 9:45am | L: Software Development Agents | |
| 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.