CS709 - Formal Methods For Software Engineering
Course Page
Q & A
Course Category: Computer Science/Information Technology
Course Level: Graduate
Credit Hours: 3
Pre-requisites: CS504 MTH502

Course Synopsis

This is a course in formal methods for specifying, validating and verifying software systems. Topics include program specification and verification through Hoare's logic and Dijkstra's weakest preconditions, formal specification and refinement towards implementation, integration of formal methods with existing programming languages and object-oriented approaches, model-based specifications, comparison of formal techniques.

Course Learning Outcomes

Upon successful completion of this course, students should be able to:
  • Understand the basics of Hoare’s logic
  • Write program specifications in terms of pre- and post-conditions
  • Use formal techniques for verification of programs
  • Use formal techniques for derivation of programs from their formal specifications
  • Learn Design by Contract and Object Constraint Language (OCL)
  • Develop basic understanding of Algebraic and Model based specifications

Course Contents

Introduction, Limitations of testing and need for formal verification, Overview of logic and propositional calculus, Calculational Logic, Logical Connectives, Boolean Equality, Continued Equivalence, Disjunction, Conjunction, Implication, Introduction to Hoare’s Logic, Weakest pre-condition, The assignment axiom, Calculating assignments, Sequential composition, Conditional statements, Reasoning about conditional statements, Constructing conditional statements, Inductive proofs and constructions, Patterns and invariant, From verification to construction, Design by Contract (DBC), The six principles of Design by contract, UML and Formal Methods, The Object Constraint Language (OCL), Algebraic Specifications, Specifications of abstract data types, Completeness, Axioms and term rewriting, Modularity and re-usability, Model-based specifications, The Z (Zed) specification Language, Z Schemas and Schema Calculus, Promotions, Data and functional refinements, Petri Nets, Limitations and Acceptance of Formal Methods, Seven Myths of Formal Methods.

Course Related Links

Useful link for course related material, taught by Michael Collins at Carnegie Mellon University
Useful link for course related material, taught by Arthur C. Fleck at The University of Iowa
Course Related valuable link provided by University of Toronto, Canada
Useful link for course related material, taught by Amir Pnueli and Robert Dewar at New York University
Course Instructor

Dr. Fakhar Lodhi
D.Sc. Computer Science
George Washington University, USA.

Design by contract by example by Richard Mitchell and Jim McKim

Object-Oriented Software Construction by Bertrand Meyer

Program Construction and Verification by Roland C. Backhouse

Program Construction: Calculating Implementation by Roland Backhouse

Software Engineering by Ian Sommerville

The Object Constraint Language, precise modeling with UML by Jos Warmer and Anneke Kleppe

The Specification of Complex Systems by B. Cohen, W. T. Harwood and M. I. Jackson

Using Z: Specification, Refinement, and Proof by Jim Woodcock & Jim Davies