CISC/CMPE422, CISC835: Formal Methods in Software Engineering (Fall 2018)
Juergen Dingel, Goodwin Hall 723, dingel at cs dot queensu dot ca
David Andrews, dandrews at cs dot queensu dot ca
Karim Jahed, jahed at cs dot queensu dot ca
Ashiqur Rahman, rahman at cs dot queensu dot ca
Lecture Time and Location
Time: Tue 11:30am, Wed 1:30pm, and Fri 12:30pm (Slot 14)
Dunning Hall, Room 14 Kinesiology 100 (from Sept 14, 2018 on)
The course is most suitable for students interested in the theory and practice of software development.
The course syllabus with information on, e.g., learning outcomes, late policy, grading scheme and method, academic integrity, accommodations, and academic consideration for students in extenuating circumstances can be found here.
Modern software development inevitably requires the design and analysis of a number of different artifacts. Formal methods allow the mathematically precise formulation of some of these artifacts. For instance, formulas in predicate logic capture operational requirements, state machines describe the behaviour of code fragments and protocols, and object models capture static designs. The advantage of using these formal notations is that they typically improve the overall quality of the artifacts by removing ambiguities and imprecisions, and enabling automatic analyses that establish desirable properties or uncover undesirable properties. Consequently, the use of formal methods is indicated in domains in which the software has to meet very high quality standards and failure cannot be tolerated such as air-traffic control. Moreover, the abstraction and automation capabilities of some formal techniques present a powerful weapon against the ever-increasing complexity of software. Indeed, in Model-Driven Development (MDD), a development methodology advocated by, for instance, the OMG and IBM, formal models of the software and its requirements form the primary artifacts from which the code is automatically generated.
CISC422 is an introduction to the use of formal methods for the specification, design, and automatic analysis of software systems. The course will present a variety of specification notations (propositional and predicate logic, Z, Alloy, UML/OCL, temporal logic), and discuss corresponding analysis techniques (theorem proving, constraint checking, animation, model checking) using existing commercial and research tools (Jape, Z/Eves, Alloy, USE, SMV). The course is most suited for students with a general background in computer science or electrical engineering and in interest in the theory and practise of software development.
The course will use OnQ for assignment submission and discussion forums. Students should monitor the course's OnQ pages, because important information, e.g., regarding assignments, might be communicated through them.
CISC223 (and, by transitivity, CISC204)
Please see the course syllabus.