Practical Program Analysis (Winter Semester 2019/20)


Lecturer Prof. Dr. Michael Pradel
Teaching assistant Daniel Lehmann
Course type Practical course
Language English
Ilias Ilias course (for discussions, etc.)
Place Universitätstr. 38, 0.453

In this practical course, students will design, implement, and evaluate a program analysis. Every software developer has already used several program analyses, e.g., as part of compilers, IDE tools, bug detection tools, or performance profilers. In this course, students learn to not only use, but to build their own program analysis. A nice side effect of developing a program analysis, is that students become better programmers, because the project requires to deeply reason about programs and their behavior.


This is a plan, i.e., it may change.

Date Topic Details
Oct 18, 2019 Introduction Slides and notes
Oct 30, 2019 WebAssembly Slides
Note the special date: 8am-9:30am in Universitätsstr. 38, 0.463
Nov 8, 2019 Dynamic analysis with Wasabi Slides
Nov 15, 2019 Dynamic analysis with Wasabi
Nov 22, 2019 Symbolic/concolic execution and introduction of project Slides and notes
Nov 22, 2019 to Jan 9, 2020 Individual work on project Milestone due on Jan 9, 2020
Jan 10, 2020 Discussion of milestone Slides
Jan 11 to Feb 9, 2020 Individual work on project Project due on Feb 9, 2020
Feb 10 to 14, 2020 Project presentations

Prerequisites for Hands-on Classes and Project

The course builds on top of Wasabi, a dynamic analysis framework for WebAssembly. To follow the hands-on classes and to work on the course project, please make sure to have the necessary software installed. There are two options.

Option 1: Virtual machine image
Install VirtualBox and download this virtual machine image. It has all dependencies installed.

Option 2: Local installation:
Install the following software on your own machine (we've tested the setup on Ubuntu 18.04).