Princeton University |
Computer Science 441 |
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.
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.