Lectures

Recorded lectures for registered distance education students are available here.

Dates Topics and Readings Exercises
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:
  • Chap. 1 of [Halb02], a Lustre tutorial
 
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:
 




Course Info

  Announcements

  Lectures

  Syllabus

Course Work

  Exercises

  Mini Projects

  Exams

  Readings

  Tools

Misc

  Resources

  ICON

  Credits