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

Introduction to Specification:  2011-2012

Information

Lecturer

Degrees

Schedule AMSc in Computer Science

Term

Overview

Many programs are so complex that they can be properly understood and designed only by raising the level of abstraction at which they are analysed way beyond what is expressible in a programming language.

A specification language and its logic are the tools we need in order to give a clear specification of the intended behaviour and functionality of a program, and to design and prove correct a plan for its implementation. The language is used to express decisions about the behaviour and functionality of a program; the logic is a collection of rules which govern the way in which we can construct mathematical proofs of its properties.

The purpose of this course is to teach a methodology for the modelling and analysis of discrete systems at varying and appropriate levels of abstraction using the specification language Z. The Z notation enables a model to be expressed, and reasoned about, mathematically. Consequently, the notations, concepts and reasoning methods of mathematics taught in this course can be applied to the specification and design of programs.

The emphasis in this course is on learning to use mathematics as a tool to support communication between humans: designers and clients, designers and programmers, programmers and other programmers. Our initial presentation of the basic notations and reasoning methods will therefore be informal and intuitive -- based for the most part on case studies.

Learning outcomes

At the end of the course, students will:

Prerequisites

The course is intended for graduate students with some programming experience and a basic understanding of set notation and concepts.

Synopsis

Syllabus

Reading list

Primary text

Additional reading

Recommended pre-course reading

The following is recommended as pre-course reading for those unfamiliar with the standard algebraic notations used for set operations and logic.