News
- Here you can find out how many exercise points you currently have.
- 2013-01-16: A correction of exercise sheet 11, Ex. 3 is uploaded. Here you should prove that label 12 (not 11!) is not reachable.
- Sheet 7 was updated to be consistent with notation from the lecture (at 13:30, Dec 5).
- Note: There will be no exercise class on December 11th. Instead, the solutions to sheet 7 and 8 have to be handed in before the exercise class on December 18th.
- 2012-11-05: correction of Example 4.4(2): the set of non-positive integer numbers (ordered by ≤) is not a complete lattice as ∅ does not have a least upper bound.
- 2012-10-09: Added a short note to Ex. 1a!
- 2012-10-18: all Wednesday lectures will take place in PPS H2, and all Thursday lectures will take place in 5052. The latter are shifted to 11:45-13:15.
- 2012-06-15: we are online.
Schedule
Type | Day | Time | Location | Start | Lecturer |
V3 | Wed | 10:00-11:30 | PPS H2 (until Nov 28)
AH 2 (from Dec 12) | Oct 10 | |
Thu | 11:45-13:15 | 5052 | Oct 18 | ||
Ü2 | Tue | 11:45-13:15 | AH 6 | Oct 23 |
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
- 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 Oct 10 | Introduction to Program Analysis | ||
2 | Thu Oct 18 | Dataflow Analysis I
(Introduction & Available Expressions Analysis) | ||
3 | Wed Oct 24 | Dataflow Analysis II
(Live Variables Analysis) | ||
4 | Wed Oct 31 | Dataflow Analysis III
(The Framework) | ||
5 | Thu Nov 8 | Dataflow Analysis IV
(Worklist Algorithm & MOP Solution) | ||
6 | Wed Nov 14 | Dataflow Analysis V
(Constant Propagation & Undecidability of MOP Solution) | ||
7 | Thu Nov 15 | Dataflow Analysis VI
(MOP vs. Fixpoint Solution & Non-ACC Domains) | ||
8 | Wed Nov 21 | Dataflow Analysis VII
(Interval Analysis, Widening & Narrowing) | ||
9 | Thu Nov 22 | Dataflow Analysis VIII
(DFA with Conditional Branches) | ||
10 | Wed Nov 28
(PPS H2) | Dataflow Analysis IX
(The Java Virtual Machine) | ||
11 | Thu Nov 29 | Dataflow Analysis X
(Java Bytecode Verification) | ||
12 | Wed Dec 12
(AH 2) | Abstract Interpretation I
(Theoretical Foundations) | ||
13 | Thu Wed 13 | Abstract Interpretation II
(Abstract Semantics of WHILE) | ||
14 | Wed Dec 19 | Abstract Interpretation III
(Abstract Interpretation of WHILE Programs) | ||
15 | Thu Dec 20 | Abstract Interpretation IV
(Abstract Semantics and its Correctness) | ||
16 | Wed Jan 09 | Abstract Interpretation V
(Application Example: 16-Bit Multiplication) | ||
17 | Thu Jan 10 | Abstract Interpretation VI
(Predicate Abstraction) | ||
18 | Wed Jan 16 | Abstract Interpretation VII
(Counterexample-Guided Abstraction Refinement) | ||
19 | Thu Jan 17 | Extensions I (Final Remarks on CEGAR & Interprocedural DFA) | ||
20 | Wed Jan 23 | Extensions II
(Interprocedural DFA - MVP Solution) | ||
21 | Thu Jan 24 | Extensions III
(Interprocedural DFA - Fixpoint Solution) | ||
22 | Wed Jan 30 | Extensions IV
(Shape Analysis & Wrap-Up) |
Exam
Exams are organized in oral form. The current schedule can be found in this spreadsheet.
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 vs. written) will be announced in the beginning of the course.
Exercises
The exercises are to be solved in groups of 2 and have to be handed in until the exercise class begins on tuesdays. In order to participate in the exam, you have to get at least 50% of the total sum of all exercise points.
Exercise Sheets
- Sheet 1
- Sheet 2 (corrected solution Ex. 2)
- Sheet 3 (solution Ex. 5)
- Sheet 4 (corrected solution Ex. 2)
- Sheet 5
- Sheet 6 (Once again we apologize for uploading the wrong version of exercise 3. Fortunately, for the "incorrect" version, even less iterations are needed than for the "correct" version. Here you can find the solution to the "correct" version of exercise 3)
- Sheet 7 (Note: There will be no exercise class on December 11th. Instead, the solutions to sheet 7 and 8 have to be handed in before the exercise class on December 18th.) Solution Ex. 2
- Sheet 8
- Sheet 9 (solution Ex. 1c)
- Sheet 10 (solution Ex. 1c)
- Sheet 11
- Sheet 12
The exercise will take place on the following dates:
- 23.10.
- 30.10.
- 13.11.
- 20.11.
- 27.11.
- 04.12.
- 18.12.
- 08.01.
- 15.01.
- 22.01.
- 29.01.
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, 2010 [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), 2003, 235-269
- J. Knoop, B. Steffen: The Interprocedural Coincidence Theorem, Proc. CC '92, LNCS 641, Springer, 1992, 125-140
- P. Emanuelsson, U. Nilsson: A Comparative Study of Industrial
Static Analysis Tools, Technical Report 2008:3, Linköping University, Sweden, 2008 - Collatz Conjecture
- Wikipedia List of Tools for Static Code Analysis
- Berkeley Lazy Abstraction Software Verification Tool (BLAST)



