Program Analysis (Winter Semester 2023/24)

Quick Facts

Lecturer Prof. Dr. Michael Pradel
Teaching assistants Matteo Paltenghi, Islem Bouzenia, Luca Di Grazia, Huimin Hu
Course type Lecture + Exercises
Language English
Ilias Ilias course with forum and quizzes
Place Mondays: Universitätsstr. 38, room 0.108
Tuesdays: Universitätsstr. 38, room 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 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 sickness: Lecture videos from a previous 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 16, 2023, 3:45pm L: Introduction Slides and notes
Oct 17, 2023, 11:30am L: Operational Semantics (1/2) Slides and notes
Fernandez' book
Pitts' lecture notes
Oct 23, 2023, 3:45pm L: Operational Semantics (2/2) Slides and notes
Oct 24, 2023, 11:30am L: Data Flow Analysis (1/4) Slides and notes
Chapter 2 of Principles of Program Analysis
Oct 26, 2023, 11:59pm E: Exercise 1 published Exercise, Solution
Oct 30, 2023, 3:45pm L: Data Flow Analysis (2/4) Slides and notes
Chapter 2 of Principles of Program Analysis
Oct 31, 2023, 11:30am L: Data Flow Analysis (3/4) Slides and notes
Chapter 2 of Principles of Program Analysis
Nov 2, 2023, 11:59pm E: Exercise 1 due
Nov 6, 2023, 3:45pm L: Data Flow Analysis (4/4)
P: Introduction of Course Project
Slides and notes
Slides and notes
Description
Code
Nov 7, 2023, 11:30pm E: Discussion of Exercise 1
Nov 9, 2023, 11:59pm E: Exercise 2 published Exercise, Solution
Nov 13, 2023, 3:45pm L: Slicing Slides and notes
Papers by Weiser, Agrawal et al., and Tip
Nov 14, 2023, 11:30am L: Dynamic Analysis Frameworks Slides and notes
Papers on Valgrind, Jalangi, and DynaPyt
Nov 16, 2023, 11:59pm E: Exercise 2 due
Week of Nov 20 to 24 (scheduled individually) P: Progress meeting 1
Nov 21, 2023, 11:30am E: Discussion of Exercise 2
Nov 27, 2023, 3:45pm L: Random and Fuzz Testing Slides and notes
Randoop: Tool, Paper by Pacheco et al.
AFL: Tool, Technical documentation
Nov 28, 2023, 11:30am L: Symbolic Execution Slides and notes
Papers on DART, KLEE, and SAGE
Dec 7, 2023, 11:59pm E: Exercise 3 published Exercise, Solution
Week of Dec 11 to 15 (scheduled individually) P: Progress meeting 2
Dec 11, 2023, 3:45pm L: Information Flow Analysis Slides and notes
Papers by Denning and by Clause et al.
Dec 14, 2023, 11:59pm E: Exercise 3 due
Dec 18, 2023, 3:45pm L: Call Graphs Slides and notes
Paper by Lhoták and Hendren
Soot framework
Dec 19, 2023, 11:30am E: Discussion of Exercise 3
Jan 11, 2024, 11:59pm E: Exercise 4 published Exercise, Solution
Week of Jan 15 to 19 (scheduled individually) P: Progress meeting 3
Jan 18, 2024, 11:59pm E: Exercise 4 due
Jan 22, 2024, 3:45pm L: Path Profiling Slides and notes
Paper by Ball and Larus
Jan 23, 2024, 11:30am E: Discussion of Exercise 4
Jan 29, 2024, 3:45pm L: JIT Compilers and V8 Guest lecture by Dr. Daniel Lehmann (Google)
Slides
Feb 1, 2024, 11:59pm P: Project due
Week of Feb 5 to 9 (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.