| Date | Topic | Reading |
|---|---|---|
| 9/11 | Introduction | Parnas 72, Hanson 97 |
| 9/16 | ML | Ullman 94 |
| 9/18 | ML modules | Tofte 96 |
| 9/23 | Modula-3 partial revelation | Cardelli 91, Freeman 95 |
| 9/25 | Modula-3 IO Streams (lecture by Norman Ramsey) | Brown 91 |
| 9/30 | IO streams using ML functors | Appel 94 |
| 10/2 | Higher-order functors | MacQueen 94 |
| 10/7 | Translucent sums [L. Bauer] | Lillibridge 97 |
| 10/9 | Java [H. Zhao] | Arnold 96 |
| 10/14 | IO streams in Java [J. Hainsworth] | Gosling 96 |
| 10/16 | Hierarchical modularity (lecture by Matthias Blume) | Blume 97b |
| 10/21 | Modules in O-O languages (lecture by Kim Bruce) | Bruce 97 |
| 10/23 | Theory of linking [A. Ahmed] | Cardelli 97 |
| Midterm break | ||
| 11/4 | What makes security hard (lecture by Ed Felten) | |
| 11/6 | Software fault isolation [Y. Shuf] | Wahbe 93 |
| 11/11 | SPIN [D. Balfanz] | Bershad 95 |
| 11/13 | Static typing, dynamic linking | Dean 97 |
| 11/18 | Extensible Security Architectures for Java [D. Wallach] | Wallach 97 |
| 11/20 | Examples of applications that need security | |
| 11/25 | Interfaces, tools, and access control for secure programming | |
| 12/2 | Cross-module optimization (lecture by Matthias Blume) | Blume 97a |
| 12/4 | Classes, objects and data abstraction (lecture by Kathleen Fisher) | Fisher 97 |
| 12/9 | Proof-carrying code S. Kumar | Necula 97 |
| 12/11 | OOP in the real world [B. Dressner] | Jacobson 87 |