Course: CS239-3 Modularity in Program Analysis

Spring 2005


Scaling program analysis and verification algorithms to large and complex systems is the biggest challenge in formal verification. One promising direction is modular analysis, where individual components are verified under assumptions about their environment, and the results of the analyses are combined together to infer properties of the entire system. There has been a lot of recent progress in precise software analysis techniques, however, none of the available tools do a good job with modular analysis. We shall study algorithms for modular verification of systems, such as assume-guarantee reasoning, game-based reasoning, and interface theories. This is an advanced graduate class. Students will be required to read and present key papers and do a substantial project that implements their ideas in a software verification tool. We shall work with a few case studies for large software systems which will serve as benchmarks for the algorithms. Grading Basis: Class participation, project, and final exam.
  • Prerequisites 
  • Prerequisites: Knowledge of program analysis, basic algorithms, and theory of computation (at the CS181 level).

    Reading List