CS6470: Advanced Compilers (Spring 2008) |
General Information |
Course Description |
This course is primarily about static analysis: a collection of techniques for determining properties of programs, without running the programs. Optimizing compilers, parallelizing compilers, static bug-finding tools, and program verifiers all rely heavily on static analysis.
The first part of the course will cover core material such as dataflow frameworks, abstract interpretation, program representations, and pointer analysis. The second part of the course will focus on modern applications of static analysis.
Programming assignments will involve extending an existing static analyzer for C code.
The textbook is Principles of Program Analysis by Nielson, Nielson, and Hankin.
Class Schedule |
| date | topic | reading | slides | other |
|---|---|---|---|---|
| 1/8 | course intro | 1up, 6up | homework 1 assigned | |
| 1/10 | dataflow intro | 1up, 6up | ||
| 1/15 | dataflow frameworks | 1up, 6up |
homework 1 due homework 2 assigned |
|
| 1/17 | more dataflow | 1up, 6up | homework 2 due | |
| 1/22 | C semantics | read chapters 1 and 2 of Norrish's thesis | 1up, 6up | |
| 1/24 | more C semantics | 1up, 6up | homework 3 assigned | |
| 1/29 | transfer function code review |
| homework 3 due | |
| 1/31 | abstract interpretation 1 | 1up, 6up | homework 4 assigned | |
| 2/5 | abstract interpretation 2 | 1up, 6up | ||
| 2/7 | abstract interpretation 3 | 1up, 6up |
homework 4 due homework 5 assigned |
|
| 2/12 | deriving transfer functions | 1up, 6up | ||
| 2/14 | abstract interpretation for safety critical systems | read Astree paper | ||
| 2/19 | two interesting abstract domains | 1up, 6up | homework 5 due | |
| 2/21 | no class-- John out of town | |||
| 2/26 | combining transformations | 1up, 6up | ||
| 2/28 | representations | 1up, 6up | ||
| 3/4 | more representations | 1up, 6up | ||
| 3/6 | interprocedural analysis | 1up, 6up | ||
| 3/11 | more interprocedural | 1up, 6up | ||
| 3/13 | deriving transfer functions | |||
| 3/18 | Spring Break | |||
| 3/20 | Spring Break | |||
| 3/25 | LLVM | |||
| 3/27 | more LLVM | |||
| 4/1 | pointer analysis | 1up, 6up | ||
| 4/3 | volatiles in C | |||
| 4/8 | offline RAM compression: guest lecture by Nathan Cooprider | |||
| 4/10 | no class-- John out of town | |||
| 4/15 | impact of economics on compiler optimization | read Robison paper | ||
| 4/17 | project presentations | |||
| 4/22 | project presentations | project report due |