CS412 15 CATS (7.5 ECTS) Term 1
Option - MEng CS and DM, MSc CS
CS130, CS131, CS262 (or CS242)
To study methods for designing, analysing and programming complex computing systems.
This module uses formal techniques to explore the specification, design and implementation of example computer systems. It will cover more advanced features of specification and introduce data and functional refinement, considering how a system design may be modified in a variety of practical ways. Refining the specification to code is an important step in the software life-cycle. This module presents both the theoretical basis for this and practical means of refinement from system specification to program code.
At the end of the module the student should be able to:
- Write formal specifications in one or more chosen notations.
- Understand the principles of formal verification and weakest precondition and the rules for specification consistency.
- Work with online tools to develop specifications; to generate and prove obligations for machines consistency and correctness of refinements; to refine specifications and develop code.
Understand the principles of refinement and the formal rules that apply. Be able to find loop variants and invariants and to verify loops.
Revision of sets, relations, functions and sequences.
Revision of basic specification skills.
Introduction to development tool
- Basic syntax
- Introduction to the AMN approach
- Examples and use of tool
- Relations and nondeterminism
Review of refinement concepts using the Guarded Command Language
- Logical constants
- Sequential composition
- Conditional statements
Implementation through refinement
Throughout the module there will be an emphasis on mathematics principles, tool support and the application of techniques in domains such as computer secuity and computational modelling.
Speakers from industry on the application of formal systems development, inclduing relevant case studies.
- Spivey JM, The Z Notation, Prentice Hall International Series in Computer Science, 1992.
- Woodcock J and Davies J, Using Z: Specification, Refinement and Proof, Prentice Hall International Series in Computer Science, 1996.
- Potter B, Sinclair J and Till D, An Introduction to Formal Specification and Z, Prentice Hall International Series in Computer Science, 1996.
- Abrial J-R, The B Book, Cambridge University Press, 1996.
- Schneider S, The B Method: An Introduction, Palgrave, 2001.
- Hayes I, Specification Case Studies, Prentice Hall International Series in Computer Science, 1993.
- Gries D, The Science of Programming, Springer-Verlag 1981.
- Morgan CC, Programming from Specifications, Prentice Hall International Series in Computer Science, 1990.
Two hour examination (60%), laboratories and coursework (40%)
20 one-hour lectures plus 10 two-hour workshops