Queen's Logo

CISC422/853: Formal Methods in Software Engineering: Computer-aided Verification (Winter 2009)

Home page

[Home] [Content] [Schedule] [Readings] [Assignments] [Tools] [Projects] [Messages]

Teaching Staff

Time and place
Monday 8:30-9:30am, Tuesday 10:30-11:30am and Thursday at 9:30-10:30am, Jeffrey Hall, Room 102.

Audience
CISC 853 is an introduction to software model checking, that is, the automated, functional analysis of software using finite-state exploration techniques. It is suitable for students with a general background in computer science or electrical and computer engineering.

General Description
This course is motivated by two trends in modern software development:

The combination of these two trends means that in the future, the potential costs of software failure will grow while the likelihood of failure will increase. Experts in academia and industry agree that this situation is worrying and must be addressed by increasing our ability to control the complexities of the present and future software systems. Recent advances in computer-aided verification have made various kinds of fully automatic formal analyses of software feasible even in large-scale industrial contexts. In particular, finite-state verification (FSV) techniques such as model checking are emerging as viable means to ensure high-quality of software. In FSV, systems are modeled as finite-state automata and the properties they should satisfy are expressed in some formal notation such as temporal logic. The analysis of the system then proceeds by exhaustively exploring the state space of the system and checking that the property is met in every state. Although this technique is exponential in the worst case, it is now used in many parts of industry (e.g., INTEL, Motorola, Siemens, Bell Labs, IBM, NASA, Cadence, and Microsoft) and has helped to validate crucial properties of, e.g., on-board spacecraft controllers, network protocols, graphical user interfaces, railway interlocking systems, and industrial control systems.

The goals of this course are to

The course balances theoretical and practical elements and is most suitable for graduate students interested in the theory and practice of software development in general and of software analysis in particular.

Material

Prerequisites
Mathematical maturity on the level of CISC 203 and 204 and programming experience (preferably in Java). Some knowledge of concurrent programming.

Evaluation