News
No Lecture on November 27Written on 26.11.24 by Jan Reineke Due to a faculty retreat I need to cancel the lecture on November 27. |
Tutorial on November 6Written on 04.11.24 by Jan Reineke We will use the slot on November 6 for a tutorial to discuss Assignment 2. |
Tutorial on October 23Written on 22.10.24 by Jan Reineke We will use tomorrow's slot for a tutorial to discuss Assignment 1. |
Program Analysis (9 CP)
Course Organization
The course consists of two parts:
- Lectures and tutorials weekly throughout the regular lecture period.
- Group projects carried out from early December to end of March.
Introduction
Program analysis deals with automatic analysis of programs with regards to certain properties. Depending on the application, these properties could be related to safety, security, or correctness of the program. The analysis results are used for different purposes by different applications. Some such uses are:
- proving the absence of runtime errors, as is e.g. done by Astree
- statically analyzing the worst-case execution time (WCET) of the program
- checking for hardware side-channel vulnerabities such as Spectre
- guiding program transformations in compilers, e.g. for high performance computing
This course provides an overview of the different techniques used in the field, the concepts guiding them, and their applications. Topics covered in the course include but are not limited to:
- Basics on Fixed Point Theory
- Data-flow Analysis and Interprocedural Analysis
- Abstract Interpretation
- SMT solvers, Symbolic Execution, and Symbolic Abstraction
- Information Flow Analysis and Side-channel Analysis
Time and Place
The lectures and tutorials take place in Hörsaal HS 001 in bulding E1 3 on Mondays from 14:00 - 16:00 and Wednesdays from 10:00 - 12:00.
The first lecture will take place on October 14, 2024.
Prerequisites
This course is open to advanced bachelor's students as well as to master's students.
While there are no specific course prerequisites for this advanced course, a solid background in discrete mathematics is highly recommended, as provided by undergraduate math courses in our bachelor's program. In addition, some programming experience would be valuable for the projects.