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

Program Analysis:  2009-2010

Information

Lecturer

Degrees

Schedule C1Honour School of Computer Science

Part CHonour School of Mathematics and Computer Science

Schedule CMSc in Computer Science

MSc by Research

Term

Overview

Prerequisites Functional programming, plus familiarity with Java. A good understanding of compiler construction is essential. Programming Languages is an advantage but not a necessity.

Program analysis provides the theory, algorithms and engineering techniques to answer questions about your programs. For example, you might want to determine what statements could have contributed to the value of an expression. Another application is for a compiler to decide whether an optimisation can be applied. Or you might want some mechanical assistance when refactoring your program. Program analysis is also indispensable when proving properties of large programs, for instance to check that there are no buffer overflows.

An elegant and crisp mathematical framework is common to all these applications. This course will introduce you to that mathematics, and simultaneously show how it leads to beautiful algorithms that solve practically important problems.

Learning outcomes

Students will learn the mathematical theory of lattices, Galois connections, abstract interpretation, and fixpoint computations, Furthermore they will learn to apply those notions in controlflow analysis and dataflow analysis. In turn, those are illustrated by refactoring transformations, optimisations, program understanding tools, and program checkers

Synopsis

Syllabus

Reading list

The main text will be a set of lecture notes. The following are background material: