Description
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.
Follow-On Courses
This course appears in the pre- or co-requisites for the following course(s):
- CISC 322 - Software Architecture
- CISC 326 - Game Architecture
- CISC 328 - Formal Specification and Analysis in Software Engineering
- CISC 422 - Formal Methods in Software Engineering
- CISC 423 - Software Requirements
- CISC 458 - Programming Language Processors
- CISC 462 - Computability and Complexity
- CISC 465 - Semantics of Programming Languages