CSE599L: On the Design and Implementation of Static Analysis Tools

Instructor: Thomas Ball, Microsoft Research
E-mail: \com\microsoft\tball
Course Time:Tues/Thurs 1030-1150
Course Location:
CSE 303 (Allen Center)
Office Hours/Location: immediately after class (CSE 334)

March 27: Course Overview March 29: Some Representative Static Analysis Tools April 3: Automata and Temporal Safety April 5: Pushdown Systems and Temporal Safety April 10: Temporal Safety, Finally? April 12: Typestate Verification April 17: Dataflow analysis over finite domains April 19: Interprocedural dataflow analysis over finite domains April 24: Abstract Interpretation (i) April 26: Abstract Interpretation (ii) May 1: Engineering Abstractions (i) May 3: Engineering Abstractions (ii) May 8: Procedures and Pointers (i) May 10: Procedures and Pointers (ii)

Eight papers, summarized in one lecture (you don't need to read them all!):

May 15: Floyd/Hoare Logic, King's Symbolic Execution, Dijkstra's WP and Verification Conditions (i)
May 17: Floyd/Hoare Logic, King's Symbolic Execution, Dijkstra's WP and Verification Conditions (ii)
May 22: SAT Solvers May 24: SMT Solvers
May 29: Tool presentation/discussion May 31: Tool presentation/discussion Other Potential Topics:

Tools/Infrastructure We Will be Evaluating (not necessarily in order)

Possible Project Ideas:

Create a Temporal Safety Checker for C

  1. Translate pLTL into a SPIN "never" claim (a safety automata) that Moped can read
  2. Translate CIL CFG into Moped format or into bddbddb
  3. Extra credit: add Caret matching of call/returns.

Create User Documentation and Tutorial for bddbddb