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
|
1
|
Introduction to Formal Methods
|
2
|
Dijkstra's Algorithm, Implications, Some useful equivalances
|
3
|
Model Building Tools, Propositional and Predicate Calculus
|
4
|
Logic and Set Theory, Properties of Equivalance
|
6
|
Introduction to Hoare's Logic
|
7
|
Hoare's Logic (Weakest Pre-condition and Loops)
|
8
|
Hoare's Logic (Conditional and Control Flow, Invariant Condition)
|
9
|
Hoare's Logic with Example (Tower of Hanoi)
|
10
|
Hoare's Logic, Verification of Functions
|
11
|
Specification of Functions using Pre and Post-Conditions, Dijkstra's Guarded if Statement, Constructing Conditional Statement
|
12
|
Output Variables, Ghost Variables, Simultaneous Assignment, Example: Max.of Two Numbers, Constructing Loops
|
13
|
Constructing Loops (Cont.), The Dutch National Flag Problem
|
14
|
The Dutch National Flag Problem (Cont.)
|
15
|
Defensive Programming, Design by Contract
|
16
|
Design by Contract and its Components
|
17
|
Implementation of Design by Contract (jContractor)
|
18
|
A Pure Java Implementation - Design by Contract
|
19
|
Object Constraint Language (OCL)
|
20
|
Object Constraint Language (OCL) (Cont.)
|
21
|
The Structure of an Algebraic Specification
|
22
|
The Structure of an Algebraic Specification (Cont.)
|
23
|
Algebraic Specification: Rules and Methods
|
24
|
New_List Specification Methods: Queue Operations, Errors Specification and Boolean Function with Tools and Techniques
|
25
|
Structure of the File System Specification
|
26
|
Structure of the File System Specification (Cont.)
|
27
|
How to use Specification of Boolean, Pair, List, Quad and Bimap
|
28
|
Tools for Algebraic Specification (Sub-System Interfaces)
|
29
|
Larch Specification Langauges
|
30
|
Interface of Algebraic Specification and Larch (Family of Specification) Languages
|
31
|
OBJ (Family of Specification)
|
32
|
OBJ (Family of Specification) (Cont.)
|
33
|
Model Based Specification, VDM: Vienna Development Method, Incubator, Main Operations on Sets, Sequences and Mappings
|
34
|
Z-Specification, Structure and Schema (A Birthday Book)
|
35
|
Z-Specification, Structure and Schema (A Birthday Book) (Cont.)
|
36
|
Z-Specification, Structure and Schema (A Birthday Book) (Cont...)
|
37
|
Z-Specification, Refinement and Totalization
|
38
|
Z-Specification, Refinement and Totalization (Cont.)
|
39
|
Z-Specification, (A Program Refinement, Different Operations Simulation, Lifting, Forward Simulation)
|
40
|
Using Z-Specification, Application of Operating System Components
|
41
|
Using Z-Specification, Operating System Scheduler, Operations: Delete Start, Middle and End
|
42
|
How to Specify Concurrent and Real Time System, Introduction to Petri Nets
|
43
|
Development of Concurrent System (Petri Nets), Conflict, Concurrency and Confusion, Behavioural Properties
|
44
|
Development of Concurrent System (Petri Nets), Behavioural Properties with Examples
|
45
|
Activities, Limitations and Acceptance of Formal Methods, Seven Myths of Formal Methods
|
|
|
|