CSE 637: Program Semantics and
Verification

Class:Tue/Thu
11:20am - 12:40pm, CS 1441

Motivation

Reactive software systems are becoming an integral
part of
nearly every engineered product: they control consumer products,
commercial
aircraft, nuclear power plants, medical devices, weapon systems,
aerospace
systems, automobiles, public transportation systems, and so on.
At the
same time quality and confidence issues are increasing in importance.
Errors
may result in loss of life, destruction of property, failure of
businesses, and
environmental harm. Today, designers check that a reactive
software
system works properly by using simulation and testing. However, as
reactive
systems become more complex and pervasive, these traditional techniques
are not
sufficient to assure desired reliability. Abstract interpretation,
model
checking and related computer-aided verification techniques are
emerging as
practical alternatives. They allow the designer to verify that a
software
system satisfies its abstract logical specification. This approach has
been
most effective for control-intensive components, and is rapidly
becoming an
integral part of the design cycle in many embedded software companies.

Objectives

The participants will
learn how to
model a reactive (hardware or software) sytem, express desired
properties of
the reactive system and check that the system satisfies these
properties. They
will get familiar with the algorithmic methods used for this
check.

Prerequisites

The course requires basic knowledge of algorithms,
data
structures, automata theory, computational complexity, and
propositional logic.
Knowledge of operating systems, communication protocols, and hardware
is
useful. The course requires mathematical maturity, and is appropriate
for
graduate students who wish to pursue research in formal methods or
related
areas. If you need more information to decide, contact the instructor.

Overview

The course introduces the operational semantics of
reactive
software systems as a fundamental instrument in developoing tools and
techniques for the automated verification of temporal (logic)
properties
of software systems.

The emphasis is on the underlying logical and automata-theoretic
concepts, the
algorithmic solutions, and heuristics to cope with the high
computational
complexity. Topics include

Models of reactive systems: states and
events, nondeterminism and concurrency, synchrony and asynchrony.