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 -- 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.