Princeton University |
Computer Science 510 |
|
Date | Topic | Reading | |
---|---|---|---|
9/14 | Introduction; ML | Ullman 1,2,3 | |
9/18 | ML | Ullman 1,2,3 | |
9/20 | Inductive definitions; ML | Harper 1; Ullman 5,6 | |
9/22 | Syntax, scope, and substitution; MinML | Harper 2 | PS 1 due. |
9/25 | MinML abstract syntax; types | Harper 3 | |
9/27 | Static semantics | Harper 4 | |
9/29 | Dynamic Semantics | Harper 5 | PS 2 due. |
10/2 | Type safety | Harper 6 | |
10/4 | Evaluation semantics | Harper 7 | |
10/6 | Abstract machines | Harper 8.1, 8.2 | PS 3 due. |
10/9 | Environments and closures | Harper 8.3 | |
10/11 | Computational effects | Harper 9.1, 9.2 | |
10/13 | Exceptions | Harper 9.3 | PS 4 due. |
10/16 | Type Reconstruction | Harper 11 | |
10/18 | Unification | Harper 11.4; Reconstruction example | |
10/20 | Midterm review | Harper 1-13; Ullman 1-7 | PS 5 due. |
10/23 | Expression equivalence | Harper 12 | |
10/25 | Continuations | Harper 10 | |
10/27 | Take-Home Midterm Exam Due | Covers through October 20 | Midterm. |
Midterm Break | |||
11/6 | Polymorphism | Harper 13 | |
11/8 | Data abstraction | Ullman 8; Harper 14.1 | |
11/10 | Existential types | Harper 14.2 | PS 6 due. |
11/13 | Representation independence | Harper 14.3 | |
11/15 | Object-oriented programming; Java | Arnold; Harper 15 | |
11/17 | Orthogonal slices of modularity | Appel 4.1, 4.2 | PS 7 due. |
11/20 | Semantics of subtyping | ||
11/22 | Subclassing and subtyping | Harper 15.3 | PS 8 due. |
11/27 | Concurrent Programming | Hoare74; Reppy 1,2; Arnold 9 | |
11/29 | Locks and condition variables | ||
12/1 | Concurrent Programming in Java | PS 9 due. | |
12/4 | Concurrent ML | Reppy 3 | |
12/6 | Concurrent ML | CRXW example | |
12/8 | Concurrent ML | Reppy 4 | PS 10 due. |
12/11 | Semantics of CML | Reppy Appendix B; Simplified CML Semantics | |
12/13 | Implementation of CML | Reppy 10; Simple Threads; MiniCML | |
12/15 | Modularity in ML | Ullman 8 | |
Reading period | |||
1/17 | Take-Home Final Exam Due |
Concurrent Programming in ML, by John Reppy, Cambridge University Press, 1999.
Elements of ML Programming, 2nd edition, by Jeffrey D. Ullman, Prentice Hall, 1998.
The Java Programming Language, by Ken Arnold and James Gosling, Addison-Wesley, 1996.
Monitors: an operating system structuring concept, by C. A. R. Hoare, Communications of the ACM, Vol. 17, No. 10, October 1974, pp. 549-557.
Modern Compiler Implementation in Java, by Andrew W. Appel. Cambridge, 1998.