CSC606: Formal Methods for Software Engineering 6 credits (30-15-15)

Objectives

To introduce students to the use of formal methods in software development.

Contents

Overview of formal methods; its uses and application areas; basic mathematical concepts (e.g., sets, functions, relations, function abstraction); logic and reasoning; Notions in model- and property-theoretic specifications; Introductory notions in: algebraic specification methods; concurrency and real-time systems; processes and process algebras; Notation, syntax and semantics of a specification language (RSL); associated methodological approaches, guidelines, practices and tools/environment (RAISE); Requirements capture/formulation; states and operations; formal reasoning; proofs and proof obligations; correctness and error handling; transformations (refinements); translation to executable data structures and algorithms; documentation issues/content.