CS 68: Principles of Programming Languages, Winter 2006
|Office hours||T 9-10, Th 1-2, F 11-12; or by appointment.|
|Class||2-hour: MWF 1:45-2:50; x-hour Th 1:00-1:50|
|Text||Peter Van Roy and Seif Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004. Book website (includes errata, blurbs/reviews, book details, etc.).|
This course studies how different programming languages support the development and implementation of software systems. We focus on the underlying computation models that formally define how computations are carried out and provide data types and operations with which to program. In general, the choice of computation model affects how to approach an implementation task, which programming techniques and design principles to employ, and how to reason about the resulting programs. Significant and diverse computation models include declarative, concurrent (declarative, message-passing, and shared state), explicit state, object-oriented, relational, and constraint.
In order to avoid getting bogged down in syntactic differences in programming languages (there is plenty of that), this course adopts a unified approach based on the Oz language, as implemented in the Mozart programming system. The Mozart/Oz website overviews the language features; the key for us is that it supports the diversity of computation models listed above, with very little baggage distracting from the fundamental principles.
The goal of the course is to gain broad exposure to the principles of programming languages. Homeworks (which include programming exercises) will provide focal points for diving in and working under each different computational model. These will account for 55% of the grade. In addition, a group project/presentation will exercise the useful skill of transferring an understanding of a programming paradigm across languages. This will account for 15% of the grade. Finally, two exams (one at midterm and one during finals week) will provide the remaining 30% of the grade.
All students are expected to read, understand, and follow the course policies, which cover collaboration, the mechanism for submitting homework, and so forth.
The course schedule lists due dates, topics, and reading.
Last modified: Mon Jan 9 09:56:03 EST 2006