|
01/18/11
|
Course introduction and administration.
Introduction to Formal Methods.
Required Readings:
Recommended Readings:
- [Clar96] A survey of the state of the art in formal methods in 1996.
Although the survey proper is now dated, the paper still provides a good overview of the field.
- [Beck06] A more up-to-date look at the state of the art in FMs and a discussion of the developments that make successful applications possible.
- [vLam00] An introduction to formal specifications, and a survey of formal specification approaches.
|
|
|
01/20/11
|
Introduction to Formal Methods continued.
Recap of basic notions in set theory.
Required Readings:
Recommended Readings:
- [Wood09] An up-to-date survey on the use and practice of FM.
|
Exercises in lecture notes
|
02/25/11
02/27/11
|
Modeling general software systems.
Introduction to the Alloy modeling language.
Required Readings:
Recommended Readings:
|
Exercises in lecture notes, up to p. 59
|
02/01/11
02/03/11
|
Alloy's foundations.
Relations and operations on them.
Formulas, Boolean operators and quantifiers.
Expressing constraints on relations using Alloy formulas.
Modeling simple domains in Alloy.
Generating and analyzing model instances with the Alloy Analyzer
Required Readings:
-
Lecture notes: an introduction to Alloy 4
-
Family examples from the notes
-
models/examples/toys/genealogy.als sample model in the Alloy Analyzer
|
Exercises in lecture notes, up to p. 94
|
02/08/10
02/10/11
|
Functions and predicates in Alloy.
Practice with modeling in Alloy: the Academia domain.
Examples and exercises.
Required Readings:
|
All exercises in lecture notes
|
02/15/11
02/17/11
|
Alloy's module system. Motivations and uses.
Parametric modules.
An example: the predefined Ordering module.
Modeling dynamic systems in Alloy.
General approach.
Required Readings:
Recommended Readings:
-
util/ordering.als sample model in the Alloy Analyzer
|
Exercises in Dynamic Models lecture notes, p. 22
|
02/22/10
02/24/10
|
More on modeling dynamic systems in Alloy.
A complete Alloy modeling case study: the hotel room lock system.
Brief discussion of Homework 1 and its solution.
Required Readings:
|
All exercises in Dynamic Models lecture notes
|
03/01/11
03/03/11
|
Introduction to reactive systems and the Lustre language.
Examples of Lustre programs.
Required Readings:
Recommended Readings:
|
|
03/08/11
03/10/11
|
More on Lustre and its features.
Specifying simple reactive systems in Lustre.
Simulating Lustre programs with the Luke tool (available in the Tools section).
Checking properties with synchronous observers.
Useful temporal operators. A few examples.
Verifying properties with Luke.
Required Readings:
Recommended Readings:
- Chap. 1 of [Halb02], a Lustre tutorial
- [Halb91], the main reference paper for Lustre
|
Simple nodes in Lustre
|
03/15/11
03/17/11
|
Spring break
|
|
|
03/22/11
|
Discussion of Miniproject 1 and its solutions.
More on checking properties with synchronous observers.
|
|
|
03/24/11
|
Midterm
|
|
|
03/29/11
|
Checking temporal properties in Lustre.
A few examples
(including the integer switch from the lecture notes below).
Required Readings:
Recommended Readings:
- Solutions of Exercise 5: Simple nodes
|
|
|
03/31/11
|
Discussion of Lustre problems in the midterm
and their solutions.
Modeling systems and building simulators.
The elevator case study.
Required Readings:
- Description of Elevator problem in Exercise 5
- Midterm sample solutions
|
Problems 1,2 in Elevator exercise
|
04/05/11
04/07/11
|
More on the elevator case study.
Modeling and requirement specification.
Debugging and repairing the model.
In-class exercises.
Required Readings:
- Description of Elevator II problem in Exercise 5
|
Problems 1,2 in Elevator II exercise
|
|
04/12/11
|
Introduction to source-code-level formal methods.
A guiding methodology: Design by Contract.
Discussion of Homework 2 solutions.
Required Readings:
|
|
|
04/14/10
|
More on design by constract. Exercises.
Introduction to the Java Modeling Language.
Required Readings:
Recommended Readings:
|
|
04/19/11
04/21/11
|
Introduction to the ESC/Java2 extended static checker.
Design by contract with ESC/Java 2.
A demo and case study.
Required Readings:
Recommended Readings:
|
Exercise in
ESC/Java2 demo
Exercise in
JML tutorial (p. 67)
|
|
04/26/11
|
Writing more abstract JML specifications with model fields.
Priority queue example revisited.
Behavioral subtyping in OO languages and in JML.
More on ESC/Java2 features and limits.
Challenges with aliasing.
Required Readings:
|
|
|
04/28/11
|
Discussion of sample solutions for Miniproject 2.
More on specification and verification challenges with OO languages,
and their occurrence in ESC/Java2:
invariants, reference exposure, etc.
Required Readings:
|
|
|
05/03/11
|
Brief discussion of Mini Project 3.
Review of Homework 3's solution.
More on invariants and aliasing.
Partial solution approaches in JML and ESC/Java2.
Required Readings:
|
|
|
05/05/11
|
Introduction to Dafny.
Examples.
Required Readings:
|
|