Rice University logo
 
 

Topics

 

Here is a list of topics that we plan to cover in the class.

Unit 1: Type systems

  • Functional programming in Ocaml
  • Type systems
  • Research discussion: Types for information flow.

Unit 2: Data flow analysis and abstract interpretation

  • Data flow analysis as graph reachability
  • Logical abstract interpretation
  • Numerical abstract domains: interval, polyhedra, and octagon domains
  • Research discussion: Robustness analysis of neural networks.

Unit 3: Model Checking

  • Temporal logics
  • SPIN: explicit-state model checking
  • Research discussion: Dynamic partial order reduction.

Unit 4: SAT and SMT solvers

  • SAT-solving
  • First-order logic
  • Decision procedures: Theory of equality, linear arithmetic
  • Research discussion: Syntax-guided synthesis.

Unit 5: Deductive verification

  • Hoare logic: partial and total correctness
  • Connections with abstract interpretation
  • Research discussion: Separation logic in Viper.

Unit 6: Sytematic program testing 

  • Bounded model checking
  • Concolic testing
  • Research discussion: SAGE: whitebox fuzzing.

Unit 7: Software model checking 

  • The SLAM approach to software model checking 
  • Research discussion: Lazy abstraction with interpolants.

Unit 8: Invariant synthesis

  • Abstract interpretation (again)
  • Template-based invariant generation
  • Research discussion: ICE-learning.

Unit 9: Program synthesis

  • Program sketching
  • Example-directed synthesis: FlashMeta, Lambda2
  • Research discussion: Type-directed synthesis: Synquid
  • Research discussion: Neural program synthesis: Deepcoder and Bayou