Lectures
This page summarizes the content of past lectures and provides lecture notes and exercises.
(Jump to most recent class)
Dates | Topics and Readings | HomeWork |
---|---|---|
Aug 25 Aug 27 |
Course introduction and administration. Introduction to Formal Methods. Required Readings: Recommended Readings: |
|
Sep 1 Sep 3 |
Recap of basic notions in set theory.
Relations and relational operators.
Required Readings:
|
All exercises in lecture notes |
Sep 08 Sep 10 |
More on the Alloy language. Relations and operations on them. Formulas, Boolean operators and quantifiers. Expressing constraints on relations using Alloy formulas. Facts and assertions. Checking models and assertions with the Alloy Analyzer. Required Readings:
|
Exercises in lecture notes |
Sep 15 Sep 17 |
Functions and predicates.
Practice with modeling in Alloy: the Academia domain. Required Readings:
|
All exercises in the intro to Alloy notes |
Sep 22 Sep 24 |
More on the Academia model. Alloy's module system. Motivations and uses. Parametric modules. An example: the predefined Ordering module. Required Readings:
|
|
Sep 29 Oct 1 |
Modeling dynamic systems in Alloy. General approach: dynamic systems as state transition systems. Operators. Preconditions, postconditions and frame conditions. Example: making the family model dynamic. Required Readings:
|
All exercises on page in Dynamic Models notes |
Oct 6 Oct 8 |
Discussion of homework 1 and sample solution.
Required Readings:
|
Exercises in Lustre notes |
Oct 13 Oct 15 |
Practice with writing Lustre models and expressing their properties.
Checking properties via synchronous observers.
Required Readings: Recommended Readings: |
|
Oct 20 Oct 22 |
More practice with writing Lustre models and expressing their properties.
Useful temporal operators. A few examples. Required Readings: Recommended Readings: |
Simulate and verify in Kind 2 all Lustre examples seen in class |
Oct 27 Oct 29 |
More group exercises on writing requirements
for the traffic light example.
Discussion of Homework 2 and its solution. Required Readings:
|
Exercise 5 |
Nov 3 |
Midterm exam. |
|
Nov 5 |
Specifying and verifying programs in high-level programming languages. Introduction to Dafny. Main features. Specifying pre and post-conditions. Examples. Required Readings:
|
Exercises 0-6 in [Koen12] |
Nov 10 Nov 12 |
Discussion of midterm solutions. More on Dafny. Compositional verification of methods through the use of contracts. Loop invariants. Abstraction of while loops by loop invariants. Functions. Examples.Required Readings:
|
Exercises 7-10 in [Koen12] |
Nov 17 Nov 19 |
Complex specifications using recursive functions.
Arrays and quantified verification conditions.
Loop invariants for arrays.
Predicates.
Termination of while loops and recursive functions in Dafny.
Reading Frames.
Required Readings:
|
All exercises in [Koen12] |
Nov 24 Nov 26 |
No class (Thanksgiving recess) |
|
Dec 1 Dec 3 |
More on loop invariants for arrays, predicates and termination.
Required Readings:
|
|
Dec 8 Dec 10 |
Specifying classes as abstract datatypes to separate observable behavior
from internal implementation.
Two examples of FIFO queue implementation.
|
|