In this offering the class, we focus on principles of program analysis techniques.
Required: background on discrete math + experience with Java
Optional: language and compiler background (e.g., covered in CS 141, 142(a), or 242)
The course has five separate components. We will spend two weeks on each component, covering both the concepts and the state-of-the-art research. For each component, homework assignments and a project will be given.
Comp 1: Foundations + Dataflow analysis
Comp 2: Abstract interpretation
Comp 3: Constraint-based analysis
Comp 4: Type and effect system
Comp 5: Practical static analyses
Paper critiques, presentations, etc.(20%)
Take-home final (40%)
Principles of Program Analysis, Flemming Nielson, Hanne R. Nielson, and Chris Hankin, Springer, 2005.
Compilers: Principles, Techniques, and Tools, Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman, Pearson Education, Inc. (2nd Edition) ---- dragon book