Princeton University
Computer Science Dept.

Computer Science 510
Programming Languages

Andrew W. Appel

Fall 2001


Directory
General Information | Schedule and Readings | Assignments | Announcements

Schedule (subject to rearrangement)

This schedule is a very rough sketch and will certainly be rearranged significantly.
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 7PS 2 due.
10/1 Type safety Harper 8
10/3 Evaluation semantics Harper 9
10/5 Abstract machines Harper 13.1PS 3 due.
10/8 Environments and closures Harper 13.2
10/10 Computational effects Harper 17
10/12 Exceptions Harper 15PS 4 due.
10/15 Type Reconstruction Harper 20
10/17 Unification Harper 20.4; Reconstruction example
10/19 Data structures Harper 11PS 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 midtermHarper 22
11/7 Polymorphism; discussion of midtermHarper 22
11/9 Data abstraction; Existential typesUllman 8; Harper 23 PS 6 due.
11/12 Representation independenceHarper 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

Readings

Programming Languages: Theory and Practice by Robert Harper, working draft of June 1, 2001.

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.


Back to COS 510 front page | Assignments