Introduction to techniques for specifying the behaviour of software, with applications of these techniques to design, verification and construction of software. Logic-based techniques such as loop invariants and class invariants. Automata and grammar-based techniques, with applications to scanners, parsers, user-interface dialogs and embedded systems. Computability issues in software specifications.
This course appears in the pre- or co-requisites for the following course(s):
Level 2 or above and a minimum grade of a C- (obtained in any term) or a 'Pass' (obtained in Winter 2020) in (CISC 124 and CISC 204).