Princeton University |
Computer Science 510 |
|
Date | Topic | Reading | |
---|---|---|---|
9/13 | Introduction; ML | Ullman 1,2,3 | |
9/17 | ML | Ullman 1,2,3 | |
9/19 | Inductive definitions; ML | Harper 1; Ullman 5,6 | |
9/21 | Syntax, scope, and substitution; MinML | Harper 2,3,4 | PS 1 due. |
9/24 | MinML abstract syntax; types | Harper 5, 6.1; Free Variables note | |
9/26 | Static semantics | Harper 6 | |
9/28 | Dynamic Semantics | Harper 7 | PS 2 due. |
10/1 | Type safety | Harper 8 | |
10/3 | Evaluation semantics | Harper 9 | |
10/5 | Abstract machines | Harper 13.1 | PS 3 due. |
10/8 | Environments and closures | Harper 13.2 | |
10/10 | Computational effects | Harper 17 | |
10/12 | Exceptions | Harper 15 | PS 4 due. |
10/15 | Type Reconstruction | Harper 20 | |
10/17 | Unification | Harper 20.4; Reconstruction example | |
10/19 | Data structures | Harper 11 | PS 5 due. |
10/22 | Expression equivalence | Harper 21 | |
10/24 | Expression equivalence | Harper 21 | |
10/26 | Continuations | Harper 10 | Take-Home Midterm Exam Due |
Midterm Break | |||
11/5 | Polymorphism; discussion of midterm | Harper 22 | |
11/7 | Polymorphism; discussion of midterm | Harper 22 | |
11/9 | Data abstraction; Existential types | Ullman 8; Harper 23 | PS 6 due. |
11/12 | Representation independence | Harper 23.2 | Quiz due |
11/14 | Object-oriented programming; Java | Arnold; Harper 25 | |
11/16 | Orthogonal slices of modularity | Appel 4.1, 4.2 | PS 7 due. |
11/19 | Subtyping | Harper 24 | |
11/21 | Subclassing and subtyping | Harper 25.2 | |
11/26 | Concurrent Programming | Hoare74; Reppy 1,2; Arnold 10 | |
11/28 | Locks and condition variables | ||
11/30 | Concurrent Programming in Java | PS 8 due | |
12/3 | Concurrent ML | Reppy 3 | |
12/5 | Concurrent ML | CRXW example | |
12/7 | Concurrent ML | Reppy 4 | PS 9 due |
12/10 | Semantics of CML | Reppy Appendix B; Simplified CML Semantics | |
12/12 | Implementation of CML | Reppy 10; Simple Threads; MiniCML | |
12/14 | t.b.a. | PS 10 due | |
Reading period | |||
1/18 | 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, James Gosling, and David Holmes. 3rd edition, Addison-Wesley, 2000.
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.