Program Analysis (Winter Semester 2019/20)

Quick Facts

Lecturer Prof. Dr. Michael Pradel
Teaching assistants TBD
Course type Lecture + Exercises
Language English
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
Oct 15, 2019 Operational semantics
Oct 28, 2019 Operational semantics Registration for course project
Oct 29, 2019 Data flow analysis
Nov 4, 2019 Data flow analysis
Nov 12, 2019 Data flow analysis
Nov 25, 2019 Abstract interpretation
Nov 26, 2019 Abstract interpretation
Dec 2, 2019 Pointer analysis
Dec 3, 2019 Symbolic and concolic execution
Dec 8, 2019 Symbolic and concolic execution
Dec 9, 2019 Information flow analysis
Dec 16, 2019 Program slicing
Dec 17, 2019 Mid-term exam
Jan 7, 2019 Analysis of dynamic languages
Jan 13, 2019 Analysis of dynamic languages
Jan 14, 2019 Analysis of concurrent programs
Jan 20, 2019 Analysis of concurrent programs
Jan 21, 2019 Specification mining
Feb 3, 2019 Path profiling Course projects due
Feb 4, 2019 -- Presentation of course projects