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%)
Projects
(40%)
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