Program Analysis (Winter Semester 2019/20)
Quick Facts
Lecturer | Prof. Dr. Michael Pradel |
Teaching assistants | Jibesh Patra |
Course type | Lecture + Exercises |
Language | English |
Ilias | Ilias course with forum and quizzes |
Place |
Mondays: Universitätsstr. 38, 0.108 Tuesdays: Pfaffenwaldring 47, V 47.04 |
Content
This course introduces the principles and practice of automatically analyzing large software systems. The course provides an overview of program analysis and then cover two topics in more detail: Static analysis, which analyzes the source code of a program, and dynamic analysis, which reasons about the runtime behavior of a program. In addition to lectures, students will deepen their understanding through a practical course project (implement a program analysis based on an existing framework). 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.
Schedule
This is a preliminary schedule and may be subject to change. There are no exercise sessions, but students will work on a course project under supervision by a teaching assistant.
Date | Topic | Material | Deadlines and special events |
---|---|---|---|
Oct 14, 2019 | Introduction, Basics | Slides and notes | |
Oct 15, 2019 | Operational semantics (Part 1) |
Slides and notes Fernandez' book Pitts' lecture notes |
|
Oct 28, 2019 | Operational semantics (Part 2) |
Slides and notes Fernandez' book Pitts' lecture notes |
|
Oct 29, 2019 | Data flow analysis |
Slides and notes (rest of operational
semantics) Slides and notes |
Chapter 2 of Principles of Program Analysis |
Nov 4, 2019 | Data flow analysis | Slides and notes |
Course project published |
Nov 12, 2019 | Data flow analysis | Slides and notes | |
Nov 25, 2019 | Symbolic and concolic execution | Slides and notes | |
Nov 26, 2019 | Symbolic and concolic execution |
Slides and notes |
|
Dec 2, 2019 | Information flow analysis / Program slicing |
Slides and notes (part 1)
Slides and notes (part 2) |
|
Dec 3, 2019 | Program slicing |
Slides and notes (part 1) Slides and notes (part 2) |
|
Dec 9, 2019 | Path profiling |
Slides and notes |
|
Dec 10, 2019 | Performance profiling |
Slides and notes |
|
Dec 17, 2019 | -- |
Questions Solutions |
Mid-term exam |
Jan 7, 2020 | Analysis of concurrent programs |
Slides and notes |
|
Jan 13, 2020 | Analysis of concurrent programs |
Slides and notes |
|
Jan 14, 2020 | Specification mining |
Slides and notes |
|
Jan 20, 2020 | Guest lecture by Yves Le Traon and Tegawendé F. Bissyandé | 2pm-3pm in room 0.018 (TPL), Universitätsstr. 38 | |
Jan 21, 2020 | Analysis of dynamic languages |
Slides and notes |
|
Feb 3, 2020 | Call graph analysis |
Slides and notes |
|
Feb 7, 2020 | -- | Course projects due | |
Feb 10 to 14, 2020 | -- | Presentation of course projects | |
Feb 26, 2020 | -- |
Questions Solutions |
Exam |
Course Project
The course project is about implementing a static taint analysis for JavaScript based on the general data flow analysis framework. Please see the project description for details.