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.