Princeton University
Computer Science Dept.

Computer Science 441
Programming Languages
Fall 1998

SCHEDULE AND READINGS


Course Texts:


Other helpful readings or resources:


Course Schedule:

In readings, "L" stands for the main text by Louden, "U" is for Ullman's ML text. The number following a letter is the chapter or section to be read.

The attached syllabus is rather agressive, so I won't be surprised if we slip behind a bit (hence the catch-up day). At this time, there is only a detailed syllabus for the first half of the course. The schedule for the last half will be available after fall break.

DayTopicReading
1 Preview, History, Expressions, & Functional Languages L: 1, 2, 5.7, 10.1
2 Introduction to ML L: 10.2-10.4, U:1-3.5, 7.1
3 More ML, lazy evaluation U: 5.1,5.3-5.4.2,5.5-5.6,6, L:10.5
4 Features of functional languages, Syntax U: 5.4.3-5.4.5, L: 10.6-10.7
5 Language translators, lambda calculus L: 4
6 More lambda calculus, Binding Time L: 5.1
7 Variables, Data Types L:5.2-5.6, 6
8 Environment-based interpreters, more types L: 6
9 more types, Run-time structures L:7.4-7.5 except 7.4.2
10 Dynamic memory management, Commands L: 10.8, 7.1-7.3, 7.6
11 Parameters, Abstract Data Types L: 7.4.2, 8.1
12 ADT's in existing languages L:8.2-5
13 Polymorphism/overloading, and subtyping L:8.5
Fall Break
14 Theory of subtyping, and intro to object-oriented languages and Java L:9.1-5
15 More Java Read your Java book!
16 Even more Java Read your Java book!
17 Exception handling, iterators, event-driven programming; start semantics of OO languages L:9.9
18 Extended typed lambda calculus
19 Encoding objects and classes
20 Subclasses and type-safe inheritance Read on-line GJ tutorial
21 GJ: Using parametric polymorphism for more flexible typing; Eiffel Read on-line GJ tutorial, L:9.6
22 Adding MyType and matching to OO languages
23 Semantics of programming languages: Operational, axiomatic, and denotational L: 12
24 Concurrency

In the second half of the semester we will be spending most of our time on object-oriented languages, with special emphasis on Java and Eiffel as examples. We will look carefully at language design issues and semantics, especially issues involving types, polymorphism, and how to make a language type-safe as well as very expressive. I.e., how to help the programmer without getting in his/her way. In particular we will be examining and evaluating proposals for extending Java to support parametric polymorphism. Other topics to be covered include other semantic styles (denotational and axiomatic), and, time permitting, language features for concurrency and logic programming languages.

Important: I expect you to do the reading for a class before the lecture. I will not attempt to cover in lecture all the material in the readings. Instead my goal will be to cover the highlights or particularly difficult material. For this to work, you will need to already be familiar with the simpler aspects of the material. If you keep up your part of the bargain we should be able to have more interesting discussions in class, rather than just listening to me go over the text.


CS441 | CS Department | Princeton University