Course description
This course focuses on program analysis, and will survey program analysis concepts, techniques, scalable implementations, and applications. Topics covered are subject to change, but are likely to intersect with the following.
- Dataflow analysis
- Abstract interpretation
- Symbolic execution
- Pointer, alias, and shape analysis
- Control-flow analysis
- Interprocedural analysis
- Model checking
- Dynamic analysis
- Efficient data structures and program representations for analysis
The course will be a combination of lectures and paper discussion. For those taking the course for credit, evaluation will be based on class participation, and a final project. Auditors are welcome.
The course is intended for graduate students at all levels as well as advanced undergraduates. It is expected that students have taken a course in the foundations of programming languages, such as CS 152.
Useful texts
The following texts may be useful as reference or to give additional information on some of the topics covered in class. (Additional texts may be added as the class progresses.)
- Principles of Program Analysis, by Nielson, Nielson, and Hankin. Springer 2005. (Referred to below as NNH.)
- Advanced Compiler Design and Implementation, by Muchnick. Morgan Kaufmann 1997. (Referred to below as Muchnick.)
Schedule
Note 1: Schedule is subject to change. Readings marked "reqd." are required; other readings are optional, and duplicate and/or extend the material discussed in class.
Note 2: Some brief notes on how to read a research paper are available here.
Date | Lec. | Topic | Readings | Slides |
---|---|---|---|---|
Tu 25-Jan | 1 | Intro Data flow analysis |
|
|
Th 27-Jan | 2 | Data flow analysis |
|
|
Tu 1-Feb | 3 | Paper discussion |
|
|
Th 3-Feb | 4 | Static Single Assignment (SSA) form |
|
|
Tu 8-Feb | 5 | Interprocedural analysis |
|
|
Th 10-Feb | No class | |||
Tu 15-Feb | 6 | Pointer analysis |
|
|
Th 17-Feb | 7 | Paper discussion |
|
|
Tu 22-Feb | 8 | Paper discussion |
|
|
Th 24-Feb | 9 | Shape analysis |
|
|
Tu 1-Mar | 10 | Control-flow analysis |
|
|
Th 3-Mar | 11 | Abstract interpretation |
|
.pdf (contains link to the NNH Chap. 4 slides) |
Tu 8-Mar | 12 | Project proposal due Abstract interpretation |
||
Th 10-Mar | No class | |||
Spring Recess |
||||
Tu 22-Mar | 13 | Symbolic execution |
|
|
Th 24-Mar | 14 | Paper discussion |
|
|
Tu 29-Mar | 15 | Paper discussion |
|
|
Th 31-Mar | 16 | Model checking |
|
|
Tu 5-Apr | 17 | Paper discussion |
|
|
Th 7-Apr | 18 | Dynamic information |
|
|
Tu 12-Apr | 19 | Analysis of low-level code |
|
|
Th 14-Apr | 20 | Analysis of dynamic languages |
|
|
Tu 19-Apr | 21 | Experimental methodology |
|
|
Th 21-Apr | No class | |||
Tu 26-Apr | 22 | Project presentations | ||
We 27-Apr | Final project due |