Program Analysis (Winter Semester 2021/22)
Quick Facts
Lecturer | Prof. Dr. Michael Pradel |
Teaching assistants | Aryaz Eghbali, Daniel Lehmann, Islem Bouzenia, Luca Di Grazia, Matteo Paltenghi, Moiz Rauf |
Course type | Lecture + Exercises |
Language | English |
Ilias | Ilias course with forum and quizzes |
Place |
Mondays: Universitätsstr. 38, room 38.03 Tuesdays: Universitätsstr. 38, room 38.02 |
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 classroom-first, i.e., to the extent possible, 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 travel restrictions: Lecture videos from last year are available in this playlist. Note 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 18, 2021, 3:45pm | L: Introduction | Slides and notes |
Oct 19, 2021, 9:45am | L: Operational Semantics (1/3) |
Slides and notes Fernandez' book Pitts' lecture notes |
Oct 26, 2021, 9:45am | L: Operational Semantics (2/3) |
Slides and notes |
Nov 2, 2021, 9:45am | L: Operational Semantics (3/3), Data Flow Analysis (1/3) |
Slides and notes Slides and notes Chapter 2 of Principles of Program Analysis |
Nov 3, 2021, 11:59pm | E: Exercise 1 published | Exercise, Solution |
Nov 9, 2021, 9:45am | L: Data Flow Analysis (2/3) |
Slides and notes Chapter 2 of Principles of Program Analysis |
Nov 10, 2021, 11:59pm | E: Exercise 1 due | |
Nov 15, 2021, 3:45pm | E: Discussion of Exercise 1 | |
Nov 22, 2021, 3:45pm | L: Data Flow Analysis (3/3) |
Slides and notes Chapter 2 of Principles of Program Analysis |
Nov 23, 2021, 9:45am Exceptionally in room 38.03 |
L: Slicing |
Slides and notes Papers by Weiser, Agrawal et al., and Tip |
Nov 24, 2021, 11:59pm | E: Exercise 2 published | Exercise, Solution |
Nov 29, 2021, 3:45pm | L: Dynamic Analysis Frameworks |
Slides and notes Papers on Valgrind, Jalangi, and Wasabi |
Nov 30, 2021, 9:45am | P: Introduction of Course Project |
Slides and notes Examples from lecture: 1, 2, 3 Description Code |
Dec 1, 2021, 11:59pm | E: Exercise 2 due | |
Dec 6, 2021, 3:45pm | E: Discussion of Exercise 2 | |
Dec 7, 2021, 9:45am | L: Random and Fuzz Testing |
Slides and notes Randoop: Tool, Paper by Pacheco et al. AFL: Tool, Technical documentation |
Week of Dec 13 to 17 (scheduled individually) | P: Progress meeting 1 | |
Dec 20, 2021, 3:45pm | L: Symbolic Execution |
Slides and notes Papers on DART, KLEE, and SAGE |
Dec 22, 2021, 11:59pm | E: Exercise 3 published | Exercise, Solution |
Jan 9, 2022, 11:59pm | E: Exercise 3 due | |
Jan 10, 2022, 3:45pm | E: Discussion of Exercise 3 | |
Jan 11, 2022, 9:45pm | L: Information Flow Analysis |
Slides and notes Papers by Denning and by Clause et al. |
Jan 17, 2022, 3:45am | L: Call Graphs |
Slides and notes Paper by Lhoták and Hendren Soot framework |
Week of Jan 10 to 15 (scheduled individually) | P: Progress meeting 2 | |
Jan 18, 2022, 9:45am | L: Path Profiling |
Slides and notes Paper by Ball and Larus |
Jan 19, 2022, 11:59pm | E: Exercise 4 published | Exercise, Solution |
Week of Jan 24 to 28 (scheduled individually) | P: Progress meeting 3 | |
Jan 24, 2022, 3:45am | L: Analyzing Concurrent Programs |
Slides and notes Papers on Eraser, ConTeGe, and CHESS |
Jan 26, 2022, 11:59pm | E: Exercise 4 due | |
Jan 31, 2022, 3:45pm | E: Discussion of Exercise 4 | |
Feb 11, 2022, 11:59pm | P: Project due | |
Week of Feb 14 to 18 (scheduled individually) | P: Final presentations | |
-- | Exam |
Questions Solutions |
Course Project
The course project is about implementing a program analysis for a real-world language. More details will be published during the semester.