COM S/CPRE 513x Foundations and Applications of Program Analysis (2016 Spring)


Home       Syllabus    Schedule    Assignments   


Instructor: Wei Le (

Meets: T Th 11:00am-12:15pm GILMAN 2354

Office Hours: T 3:00-4:00pm ATANASOFF 210



Week Topic Papers
1-1      Overview    slides
1-2, 2 and 3      Points-to analysis    slides Pointer Analysis: Haven't We Solved This Problem Yet?
4      Complexity of program analysis slides New Results on the Computability and Complexity of Points-to Analysis
5-9      Control flow analysis slides Scalable Propagation Based Call Graph Construction Algorithms
11-13      Program Dependencies and Slicing slides,
Slicing as a Dataflow Problem slides,
Dynamic Slicing slides,
Taint Analysis slides1, slides2
Program Slicing
A Survey of Program Slicing Techniques
14-15      Symbolic Execution slides, DART slides KLEE: Unassisted and Automatic Generation of High-coverage Tests for Complex Systems Programs


     PA1: Pointer Analysis
     PA2: Call Graph Construction
     Midterm Project: A Survey
     PA3: Program Slicing
     Final Project

Questions and Answers

   1. What is a transitive closure of a graph
   2. Doing register allocation on SSA is more time efficient (of course more space expensive)? See the proof (Thanks Menglu Yu and Payas Awadhutkar)
   3. Data dependence graphs are acyclic unless there are loops, what about control dependence graphs? are they tree or graphs? (Thanks David Johnston)
   4. On the fly call graph construction. See the discussions (Thanks Ben Holland)


This course is developed under the support of the National Science Foundation (NSF) under Award 1542117.