Princeton University
Computer Science Dept.

Computer Science 510
Programming Languages

Andrew W. Appel

Fall 2000


Directory
General Information | Schedule and Readings | Assignments | Announcements

Schedule (subject to rearrangement)

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 5PS 2 due.
10/2 Type safety Harper 6
10/4 Evaluation semantics Harper 7
10/6 Abstract machines Harper 8.1, 8.2PS 3 due.
10/9 Environments and closures Harper 8.3
10/11 Computational effects Harper 9.1, 9.2
10/13 Exceptions Harper 9.3PS 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-7PS 5 due.
10/23 Expression equivalence Harper 12
10/25 Continuations Harper 10
10/27 Take-Home Midterm Exam DueCovers through October 20Midterm.
Midterm Break
11/6 PolymorphismHarper 13
11/8 Data abstractionUllman 8; Harper 14.1
11/10 Existential typesHarper 14.2 PS 6 due.
11/13 Representation independenceHarper 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

Readings

Programming Languages: Theory and Practice (manuscript) by Robert Harper, 2000.

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.


Back to COS 510 front page | Assignments