Program Analysis (Winter Semester 2024/25)
Quick Facts
Lecturer | Prof. Dr. Michael Pradel |
Teaching assistants | Aryaz Eghbali, Huimin Hu, Matteo Paltenghi |
Course type | Lecture + Exercises |
Language | English |
Ilias | Ilias course with forum and quizzes |
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 physical classroom or based on physical 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 be similar, but not exactly the same.
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 |
---|---|---|
Oct 14, 3:45pm | L: Introduction | Slides and notes |
Oct 15, 11:30am | L: Operational Semantics (1/2) |
Slides and notes Fernandez' book Pitts' lecture notes |
Oct 28, 3:45pm | L: Operational Semantics (2/2) |
Slides and notes |
Oct 30, 11:59pm | E: Exercise 1 published | Exercise, Solution |
Nov 4, 3:45pm | L: Data Flow Analysis (1/3) |
Slides and notes Chapter 2 of Principles of Program Analysis |
Nov 5, 11:30am | L: Data Flow Analysis (2/3) |
Slides and notes Chapter 2 of Principles of Program Analysis |
Nov 7, 11:59pm | E: Exercise 1 due | |
Nov 11, 3:45pm | E: Discussion of Exercise 1 | |
Nov 12, 11:30am | L: Data Flow Analysis (3/3) |
Slides and notes Chapter 2 of Principles of Program Analysis |
Nov 13, 11:59pm | E: Exercise 2 published | Exercise, Solution |
Nov 18, 3:45pm | L/P: Introduction of Course Project |
Slides and notes Description Code |
Nov 19, 11:30am | L: Slicing |
Slides and notes Papers by Weiser, Agrawal et al., and Tip |
Nov 20, 11:59pm | E: Exercise 2 due | |
Nov 25, 3:45pm | E: Discussion of Exercise 2 | |
Week of Nov 25 to 29 (scheduled individually) | P: Progress meeting 1 | |
Dec 2, video only | L: Random and Fuzz Testing |
Videos: Part 1, Part 2, Part
3 Slides and notes Randoop: Tool, Paper by Pacheco et al. AFL: Tool, Technical documentation |
Dec 3, 11:30am | L: Dynamic Analysis Frameworks |
Slides and notes Papers on Valgrind, Jalangi, and DynaPyt |
Dec 9, 3:45pm | L: Symbolic Execution |
Slides and notes Papers on DART, KLEE, and SAGE |
Dec 10, 11:30am | L: Guest Lecture by Maxim Tabachnyk on AI in the IDE at Google | |
Dec 11, 11:59pm | E: Exercise 3 published | Exercise |
Dec 16, video only | L: Call Graphs |
Videos: Part 1, Part 2, Part
3, Part 4 Slides and notes Paper by Lhoták and Hendren Soot framework |
Dec 17, 11:30am | L: Information Flow Analysis |
Slides and notes Papers by Denning and by Clause et al. |
Dec 18, 11:59pm | E: Exercise 3 due | |
Week of Dec 16 to 20 (scheduled individually) | P: Progress meeting 2 | |
Jan 7, 11:30am | E: Discussion of Exercise 3 | |
Jan 8, 11:59pm | E: Exercise 4 published | Exercise |
Jan 13, 3:45pm | L: Path Profiling |
Slides and notes Paper by Ball and Larus |
Jan 15, 11:59pm | E: Exercise 4 due | |
Week of Jan 20 to 24 (scheduled individually) | P: Progress meeting 3 | |
Jan 20, 3:45pm | E: Discussion of Exercise 4 | |
Feb 5, 11:59pm | P: Project due | |
Week of Feb 10 to 14 (scheduled individually) | P: Final presentations |
Course Project
The course project is about implementing a program analysis for a real-world language. More details will be published during the semester.