This page gives highlights of past lectures and provides lecture notes, reading assignments, and exercises.
Dates | Topics and Readings | Homework |
---|---|---|
Aug 27 Aug 29 |
Course introduction and administration. Introduction to Formal Methods. Introduction to sets and relations Required Readings: Recommended Readings: |
All exercises in lecture notes |
Sep 3 Sep 5 |
Recap of basic notions in set theory. Relations and relational operators. Modeling general software systems. Introduction to the Alloy modeling language. Alloy's foundations. Signatures, fields and multiplicity constraints. Modeling simple domains in Alloy. Generating and analyzing model instances with the Alloy Analyzer. Relations and operations on them. Formulas, Boolean operators and quantifiers. Expressing constraints on relations using Alloy formulas. Required Readings: Recommended Readings:
|
All exercises in lecture notes |
Sep 10 Sep 12 |
More on the Alloy language. Facts and assertions. Checking models and assertions with the Alloy Analyzer. Examples and exercises. Required Readings:
|
All exercises in lecture notes |
Sep 17 Sep 19 |
Practice with modeling in Alloy: the Academia domain. Examples and exercises. Alloy's module system. Motivations and uses. Parametric modules. An example: the predefined Ordering module. Required Readings:
|
Homework #1 assigned, exercises in lecture notes. |
Sep 24 Sep 26 |
Modeling dynamic systems in Alloy. Example: making the family model dynamic. General approach: dynamic systems as state transition systems. Operators. Preconditions, postconditions and frame conditions. Examples of operators for the family model. Required Readings:
|
Homework #1 due, all exercises in lecture notes |
Oct 1 Oct 3 |
More on modeling dynamic systems in Alloy. Example: rovers on a two-dimensional space. Group exercises. A complete Alloy modeling case study: the hotel room lock system. Required Readings:
|
All exercises in lecture notes |
Oct 8 Oct 10 |
Introduction to reactive systems. Introduction to the Lustre specification language. Examples of Lustre programs. Specifying simple reactive systems in Lustre. Simulating Lustre programs with the Kind 2 tool (online examples). Practice with writing Lustre models and expressing their properties. Simulating Lustre programs with the Kind 2 tool (online examples). Required Readings: |
Project #1 assigned, All exercises in lecture notes |
Oct 15 |
Practice with writing Lustre models and expressing their properties. Required Readings:
|
Simulate and verify in Kind 2 all Lustre examples in the readings. |
Oct 17 | Midterm Exam #1 | |
Oct 22 Oct 24 |
More practice with writing Lustre models and expressing their properties. Checking properties via synchronous observers. Useful temporal operators. A few examples. Checking properties. Boolean Switches and traffic light examples. In-class exercises. Required Readings:
|
Homework #2 assigned. simulate and verify in Kind 2 all Lustre examples in the readings. |
Oct 29 Oct 31 |
Contract-based specification and compositional verification. Motivation and uses. Extending Lustre with contracts. Contract basics: assumptions, guarantees and execution modes. Example of contracts. Required Readings:
|
Project #1 Due. |
Nov 5 Nov 7 |
Specifying and verifying programs in high-level programming languages. Introduction to Dafny. Main features. Method contracts in Dafny. Specifying pre and post-conditions. Compositional verification of methods through the use of contracts. Abstraction of while loops by loop invariants. Examples. Required Readings:
|
Homework #3 Assigned. |
Nov 12 Nov 14 |
More on loop invariants in Dafny. Functions and predicates. Complex specifications using recursive functions. Termination of while loops and recursive functions in Dafny. Arrays and quantified verification conditions. Loop invariants for arrays. Examples. Required Readings:
|
Exercises from the Dafny examples. |
Nov 19 Nov 21 |
Introduction to value types in Dafny: sets and sequences. Classes. Constructors, fields and class methods. Class invariants. Ghost fields. Using ghost fields to represent abstract states. Connecting concrete and abstract state in a class. Required Readings:
|
|
Nov 26 Nov 28 |
No class (Thanksgiving Break) | |
Dec 3 |
Introduction to inductive theorem proving in Dafny. Recommended Readings:
|
Homework #3 Due. |
Dec 5 | Midterm Exam #2 | TBA |
Dec 10 Dec 12 |
TBA | TBA |