News
- 2011-07-01: evaluation results are online
- 2011-03-08: page set up
Schedule
Type | Day | Time | Location | Start | Lecturer |
V3 | Wed | 10:00-11:30 | AH 6 | Apr 6 | |
Thu | 15:00-16:30 (bi-weekly) | AH 5 | Apr 14 | ||
Ü2 | Mon | 10:00-11:30 | AH 2 | Apr 18 |
Contents
The goal of this course is to introduce foundational methods and techniques for analyzing software on source-code level. The following topics will be discussed:
- Dataflow analysis
- Abstract interpretation
- Constraint-based analysis
- Interprocedural analysis
- Analysis of pointer-manipulating programs
- Applications in optimizing compilers and software verification
Prerequisites
Basic knowledge of the following relevant undergraduate courses is expected:
- Programming (essential concepts of imperative and object-oriented programming languages and elementary programming techniques)
- Knowledge in the area of Theory of Programming (such as Semantics of Programming Languages or Software Verification) is helpful but not mandatory
Slides
Lecture | Date | Subject | Slides | Handout |
1 | Wed Apr 6 | Introduction to Program Analysis | ||
2 | Wed Apr 13 | Dataflow Analysis I
(Introduction & Available Expressions Analysis) | ||
3 | Thu Apr 14 | Dataflow Analysis II
(Live Variables Analysis) | ||
4 | Wed Apr 20 | Dataflow Analysis III
(The Framework) | ||
5 | Wed Apr 27 | Dataflow Analysis IV
(Worklist Algorithm & MOP Solution) | ||
6 | Thu Apr 28 | Dataflow Analysis V
(Constant Propagation & Undecidability of MOP Solution) | ||
7 | Wed May 4 | Dataflow Analysis VI
(MOP vs. Fixpoint Solution) | ||
8 | Wed May 11 | Dataflow Analysis VII
(Interval Analysis & Widening) | ||
9 | Thu May 12 | Dataflow Analysis VIII
(Narrowing & DFA with Conditional Branches) | ||
10 | Wed May 18 | Dataflow Analysis IX
(The Java Bytecode Verifier) | ||
11 | Wed May 25 | Dataflow Analysis X
(Java Bytecode Verification) | ||
12 | Thu May 26 | Abstract Interpretation I
(Theoretical Foundations) | ||
13 | Wed Jun 1 | Abstract Interpretation II
(Abstract Semantics of WHILE) | ||
14 | Wed Jun 8 | Abstract Interpretation III
(Abstract Interpretation of WHILE Programs) | ||
15 | Thu Jun 9 | Abstract Interpretation IV (Correctness of Abstract Semantics) | ||
16 | Wed Jun 22 | Abstract Interpretation V
(Application Example: 16-Bit Multiplication) | ||
17 | Wed Jun 29 | Abstract Interpretation VI
(Predicate Abstraction) | ||
18 | Thu Jun 30 | Abstract Interpretation VII
(Counterexample-Guided Abstraction Refinement) | ||
19 | Wed Jul 6 | Extensions I
(Interprocedural Dataflow Analysis - MVP Solution) | ||
20 | Wed Jul 13 | Extensions II
(Interprocedural Dataflow Analysis - Fixpoint Solution) | ||
21 | Thu Jul 14 | Extensions III
(Pointer Analysis & Wrap-Up) |
Exercise sheets
Exercise sheets will be made available on Mondays. The deadline for handing in your solution is on Mondays, before the exercise class begins.
- Exercise Sheet 0 (hand in: Monday, April 18th)
- Exercise Sheet 1 (hand in: Monday, May 2nd)
- Exercise Sheet 2 (hand in: Monday, May 9th)
- Exercise Sheet 3 (hand in: Monday, May 16th)
- Exercise Sheet 4 (hand in: Monday, May 23rd)
- Exercise Sheet 5 (hand in: Monday, May 30th)
- Exercise Sheet 6 (hand in: Monday, June 6th)
- Exercise Sheet 7 (hand in: Monday, June 20th)
- Exercise Sheet 8 (hand in: Monday, June 27th)
- Exercise Sheet 9 (hand in: Monday, July 4th)
- Exercise Sheet 10 (hand in: Monday, July 11th)
- Exercise Sheet 11 (hand in: Monday, July 18th)
Further information
- Depending on the audience, the course will be given in English or German. The slides and other course material will be in English. There are no lecture notes (yet); the course material will consist of slides.
- The form of the exam (oral/written) will be announced in the beginning of the course.
Evaluation results
- Lecture
- w.r.t. lectures
- w.r.t. instructor
- Exercises
- w.r.t. exercises
- w.r.t. instructors
Background literature and interesting links
- Flemming Nielson, Hanne R. Nielson, Chris Hankin: Principles of Program Analysis. 2nd edition, Springer, 2005 [available in CS Library]
- Michael I. Schwartzbach: Lecture Notes on Static Analysis
- Helmut Seidl, Reinhard Wilhelm, Sebastian Hack: Übersetzerbau 3: Analyse und Transformation. Springer, 2009 [not available in CS Library]
- Steven S. Muchnick, Neil D. Jones: Program Flow Analysis: Theory and Applications. Prentice Hall, 1981 [not available in CS Library]
- X. Leroy: Java Bytecode Verification: Algorithms and Formalizations, Journal of Automated Reasoning 30(3-4), 235-269
- J. Knoop, B. Steffen: The Interprocedural Coincidence Theorem, Proc. CC '92, LNCS 641, Springer, 1992, 125-140
- Collatz Conjecture
- Berkeley Lazy Abstraction Software Verification Tool (BLAST)



