UPOZORNĚNÍ: Jsou dostupné studijní plány pro následující akademický rok.

Advanced Program Analysis

Login to KOS for course enrollment Display time-table
Code Completion Credits Range Language
PI-APA ZK 4 3C English
Garant předmětu:
Jan Vitek
Jan Vitek
Jan Vitek
Department of Theoretical Computer Science

In the past decade, there have been great advances in the development of

automated tools that help programmers find various kinds of quality problems in their

code. This includes tools for finding bugs and security vulnerabilities, test generation,

fault detection and localization, etc. Many of these tools rely on program analysis to

compute an approximation of a program's behavior. In this special topics course, we

will study key publications in which static and dynamic program analysis algorithms

are used to detect bugs and security vulnerabilities in programs, and how these

algorithms are used in other tools that support programmers. Both theoretical

properties and practical effectiveness of program analysis algorithms will be studied.

Syllabus of lectures:

1) static and dynamic techniques for finding errors, including type-based and

dataflow-based techniques

2) static and dynamic techniques for finding security vulnerabilities (e.g., taint


3) automatic test generation (e.g., using dynamic symbolic execution)

4) analysis challenges posed by dynamic and reflective programming language


5) specialized string analysis techniques for tracking the flow of string values in


6) suitability of program analysis algorithms for different programming languages

7) the use of open-source frameworks for program analysis

The course will be organized as follows. First, the instructor will present a few

lectures to review basic program analysis concepts and terminology (call graphs,

points-to graphs, SSA form, etc.) and key applications of program analysis

technology. Then, students and the instructor will take turns presenting publications.

Each paper presentation will be followed by a discussion. In addition to the

presentations, each student will do a modest-sized course project, which could

consist of, e.g., a literature study, the implementation/evaluation of a simple program

analysis, or the evaluation of tools that implement a program analysis. Students will

be expected to give a few short presentations about their project so that the other

course participants can provide constructive feedback. Instead of a final exam,

students will be required to write a short report about their project.

Syllabus of tutorials:
Study Objective:

To understand the motivation and algorithmic solutions to the more complex

problems from static and dynamic analysis and to familiarize with influential papers

from the area.

Study materials:

Flemming Nielson, Hanne Riis Nielson, Chris Hankin: Principles of Program Analysis,


Further information:
Time-table for winter semester 2023/2024:
Time-table is not available yet
Time-table for summer semester 2023/2024:
Time-table is not available yet
The course is a part of the following study plans:
Data valid to 2024-04-14
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/en/predmet5083406.html