6898: Advanced Topics in Software Design: Schedule

This is the schedule as of March 21. It's likely to change as the term proceeds.

Week of
Monday
Monday class
Wednesday class
2/4
  Introduction & Course Overview
Kernel of Alloy: relations and relational operators
2/11
Alloy Language
Signatures, functions, assertions
Modelling Idioms
Relational model of behaviour
Mutation: modularizing change
2/18
No class -- Presidents' Day, MIT Holiday
Intermediate Peer Review: Models (DJ at IFIP 2.9)
2/25
Review of Modelling
Discussion of elevator problem
Other Modelling Languages
Z, OCL and ASM
3/4
Analysis Patterns
Problem Frames
3/11
Modules 1: Cardelli's model of linking Modules 2: Units
Component composition with Units
Jiazzi and Knit
3/18
Modules 3: ML 1
Elements of ML programming
Modules 4: ML 2
Objective Caml's module system
3/25
No class -- Spring Break
No class -- Spring Break
4/1
Aspects and Features
No class -- Passover
4/8
Intermediate Peer Review: Program Structuring (DJ at ETAPS)
TBD: Reflection Mechanisms? (DJ at ETAPS)
4/15
No class -- MIT Holiday
Decoupling 1
Parnas's uses graph; module dependences
Baldwin & Clark's theory
4/22
Decoupling 2: Axiomatic Design
Independence axiom; application to software
Decoupling 3
4/29
Java Modeling Language (JML)
Frame conditions in OOP
Design Patterns
5/6
Typeclasses in Haskell
TBD
5/13
Project Presentations
Project Presentations