University of Oxford Logo University of OxfordDepartment of Computer Science - Home

Software Verification:  2011-2012

Information

Lecturer

Degrees

Schedule C1Computer Science

Schedule C1Mathematics and Computer Science

Schedule CMSc in Computer Science

Term

Overview

 

The course presents a comprehensive coverage of the foundations and state-of-the-art in software verification. It begins with a brief overview of the current need for verification tools. Hoare's classic method for reasoning about programs is presented to give a first overview of the concept of verification; the inherent difficulty in using this method is shown. A more formal account on programming languages and their semantics follows.  The notions of correct programs and bugs are discussed and techniques to find bugs are presented. A crucial idea in program verification is to use abstraction to reason about programs, known as the theory of abstract interpretation. Both simple and advanced analyses based on abstraction will be covered. The advanced analyses are incorporated in industrial tools and are applied in the development of large systems. Concluding the course, the notion of modularity in verification is discussed, focussing on issues that arise with programs that operate on heap; furthermore, an overview of the field of termination checking is given.

Learning outcomes

This is a research-oriented course. At the end of the course, the students will

Prerequisites

A basic understanding of sets and relations, logic and program semantics will be assumed. This course is self-contained and any required background knowledge is taught in the lecture or will be covered in the handouts.

Synopsis

  1. Motivation and Background (logic, set theory) [2]

  2. Axiomatic Semantics (Hoare logic, preconditions, postconditions, loop invariants) [2]

  3. Models and Operational Semantics (transition systems, CFGs, operational program semantics, soundness/completeness, undecidability) [2]

  4. Bounded Model Checking (program unwindings, unwinding assertions, optimisations) [2]

  5. Fixed point theory (lattices, monotone functions, fixed points) [1]
  6. Abstract Interpretation (abstract domains, abstract fixed points, may and must analyses) [2]

  7. Predicate Abstraction (automated abstraction, lazy abstraction, refinement) [2]

  8. Modular Verification and Heap (contracts, invariants, dynamicrames, separation logic) [2]

  9. Termination (ranking functions, termination as safety property) [1]
     

 

Reading list

The recommended and required reading material will be drawn from the following sources.

Related research at the Department of Computer Science

Themes

Activities