CS709 : Formal Methods for Software Engineering

Course Overview

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 Calendar

TopicLectureResourcePage
Introduction to Formal Methods1Backhouse (2004)
Dijkstra's Algorithm, Implications, Some useful Equivalances2Backhouse (2004)
Model Building Tools (Logic and Set Theory), Propositional and Predicate Calculus, Logic Problem (Knights and Knaves)3Backhouse (2004)
Logic and Set Theory, Logic Problem (Gold on Island), Properties of Equivalance4Backhouse (2004)
Logic and Proposition, Logic problem (Restaurant), Golden Rule5Backhouse (2004)
Introduction to Hoare's Logic6Backhouse (2004)
Hoare's Logic (Weakest Pre-condition and Loops)7Backhouse (2004)
Hoare's Logic (Conditional and Control Flow, Invariant Condition)8Backhouse (2004)
Assignment No. 1
Hoare's Logic with Example (Tower of Hanoi)9Backhouse (2004)
Hoare's Logic, Verification of Functions10Backhouse (2004)
Specification of Functions using Pre and Post-Conditions, Dijkstra's Guarded if Statement, Constructing Conditional Statement11Backhouse (2004)
Output Variables, Ghost Variables, Simultaneous Assignment, Example: Max.of Two Numbers, Constructing Loops12Backhouse (2004)
Constructing Loops (Cont.), The Dutch National Flag Problem13Backhouse (2004)
The Dutch National Flag Problem (Cont.)14Backhouse (2004)
Defensive Programming, Design by Contract15Mitchell and McKim (2002)
Design by Contract and its Components16Mitchell and McKim (2002)
Assignment No. 2
Implementation of Design by Contract (jContractor)17Mitchell and McKim (2002)
A Pure Java Implementation - Design by Contract18Mitchell and McKim (2002)
Object Constraint Language (OCL)19Warmer and Kleppe (2001)
Object Constraint Language (OCL) (Cont.)20Warmer and Kleppe (2001)
The Structure Of an Algebraic Specification21Cohen et al. (1986)
The Structure Of an Algebraic Specification (Cont.)22Cohen et al. (1986)
Mid-term Examination
Algebraic Specification: Rules and Methods23Cohen et al. (1986)
New_List Specification Methods: Queue Operations, Errors Specification and Boolean Function with Tools and Techniques24Cohen et al. (1986)
Structure of the File System Specification25Cohen et al. (1986)
Structure of the File System Specification (Cont.)26Cohen et al. (1986)
How to use Specification of Boolean, Pair, List, Quad and Bimap27Cohen et al. (1986)
Tools for Algebraic Specification (Sub-System Interfaces)28Cohen et al. (1986)
Larch Specification Languages29Cohen et al. (1986)
Interface of Algebraic Specification and Larch (Family of Specification) Languages30Cohen et al. (1986)
OBJ (Family of Specification)31Cohen et al. (1986)
Course Viva
OBJ (Family of Specification) (Cont.)32Cohen et al. (1986)
Model Based Specification, VDM: Vienna Development Method, Incubator, Main Operations on Sets, Sequences and Mappings33Cohen et al. (1986)
Z-Specification, Structure and Schema (A Birthday Book)34Woodcock and Davies (1996)
Z-Specification, Structure and Schema (A Birthday Book) (Cont.)35Woodcock and Davies (1996)
Z-Specification, Structure and Schema (A Birthday Book) (Cont.)36Woodcock and Davies (1996)
Z-Specification, Refinement and Totalization37Woodcock and Davies (1996)
Z-Specification, Refinement and Totalization (Cont.)38Woodcock and Davies (1996)
Z-Specification, (A Program Refinement, Different Operations Simulation, Lifting, Forward Simulation)39Woodcock and Davies (1996)
Academic Research Paper
Using Z-Specification, Application of Operating System Components and Applying Refinement Steps to Concrete Implementation of Operating System Components40Woodcock and Davies (1996)
Using Z-Specification, Operating System Scheduler, Operations: Delete Start, Middle and End41Woodcock and Davies (1996)
How to Specify Concurrent and Real Time System, Introduction to Petri Nets42Cohen et al. (1986)
Presentations
Development of Concurrent System (Petri Nets), Conflict, Concurrency and Confusion, Behavioural Properties43Cohen et al. (1986)
Development of Concurrent System (Petri Nets), Behavioural Properties with Examples44Cohen et al. (1986)
Activities, Limitations and Acceptance of Formal Methods, Seven Myths of Formal Methods45
Final-term Examination
 
 
Back to Top