184.703 Program Analysis
This course is in all assigned curricula part of the STEOP.
This course is in at least 1 assigned curriculum part of the STEOP.

2017W, VU, 2.0h, 3.0EC

Properties

  • Semester hours: 2.0
  • Credits: 3.0
  • Type: VU Lecture and Exercise

Aim of course

concrete program analysis techniques, proof of the correctness of these techniques via abstract interpretation, techniques for developing new program analyses

Subject of course

definition of the syntax and semantics of a toy programming language;
simple program analyses, which are used standardly in compilers, such as Reaching Definitions, Live Variable Analysis and Constant Propagation;
program analyses, which are used in program verification such as Interval-, Octagon-, Polyederanalysis for determining program invariants;
advanced program analyses, which are used standardly in compilers, such as Pointer Analysis and Call Graph Analysis;
advanced topics in invariant analysis such as termination- and bound analysis;
the discussed program analyses are defined and proven correct with the technique of abstract interpretation with regard to the earlier defined toy language;

Additional information

The lecture starts on 4th of Oct.

For further reading I recommond:

Static Analylsis Course and Script by Michael Schwartzbach, http://cs.au.dk/~mis/static/
Course on Abstract Interpretation by Patrick Cousot, http://web.mit.edu/afs/athena.mit.edu/course/16/16.399/www/
The Book Principles of Program Analysis by Flemming Nielson, Hanne Riis Nielson, Chris Hankin

"Term Rewriting and All That", Franz Baader, Tobias Nipkow, chapter 4.8 contains a good description of the unfication algorithmus used in the first lecture

"Introduction to lattices and order", B. A. Davey and H. A. Priestley is a good introduction into lattice theory

ECTS Breakdown (3ECTS = 75h): 25h lecture, 25h exercises, 25h presentation

Lecturers

Institute

Course dates

DayTimeDateLocationDescription
Wed14:00 - 16:0004.10.2017 - 24.01.2018Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed12:30 - 14:0024.01.2018Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Talks
Program Analysis - Single appointments
DayDateTimeLocationDescription
Wed04.10.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed11.10.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed18.10.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed25.10.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed08.11.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed22.11.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed29.11.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed06.12.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed13.12.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed20.12.201714:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed10.01.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed17.01.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed24.01.201812:30 - 14:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Talks
Wed24.01.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture

Examination modalities

The participants of this lecture give a talk on a current paper on program analysis.

The participants actively participate in the exercises. At the beginning of each exercise they mark in a table which exercises they are able to present on the blackboard. The participants need to mark 50% of the exercises to pass the lecture.

List of presentation topics:

Alexandru CostanStephane GaubertEric GoubaultMatthieu MartelSylvie Putot:
A Policy Iteration Algorithm for Computing Fixed Points in Static Analysis of Programs. CAV 2005462-475

Denis GopanThomas W. Reps:
Lookahead Widening. CAV 2006452-466

Moritz SinnFlorian ZulegerHelmut Veith:
A Simple and Scalable Static Analysis for Bound Analysis and Amortized Complexity Analysis. CAV 2014745-761

Daniel KroeningMatt LewisGeorg Weissenbacher:
Under-Approximating Loops in C Programs for Fast Counterexample Detection. CAV 2013381-396

Laura Kovács:
Reasoning Algebraically About P-Solvable Loops. TACAS 2008249-264

Bhargav S. GulavaniSumit Gulwani:
A Numerical Abstract Domain Based on Expression Abstraction and Max Operator with Application in Timing Analysis. CAV 2008370-384

Jan StrejcekMarek Trtík:
Abstracting path conditions. ISSTA 2012155-165

James C. King:
Symbolic Execution and Program Testing. Commun. ACM 19(7)385-394 (1976)

Mark Weiser:
Program Slicing. ICSE 1981439-449

The talks are going to be in the last week of January this semester (Jan 2018, see lecture slides).

Course registration

Not necessary

Curricula

Study CodeObligationSemesterPrecon.Info
066 931 Logic and Computation Mandatory elective
066 937 Software Engineering & Internet Computing Mandatory elective
066 938 Computer Engineering Mandatory elective

Literature

No lecture notes are available.

Language

English