CS 68: Principles of Programming Languages, Winter 2005

Instructor Chris Bailey-Kellogg
Office hours Tentatively Monday 1:35-2:35, Wednesday 3:00-4:00, and Thursday 11:00-12:00; or by appointment.
TA Chris Masone
TA hours Office (060 Sudikoff): tentatively Tuesday 3:00-4:00 and Wednesday 2:00-3:00; special lab hours near due dates.
Class MWF 12:30-1:35; x-hour T 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.).


Overview

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.



Course requirements

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 50% 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 20% of the grade. Finally, two quizzes (one at midterm and one during finals week) will provide the remaining 30% of the grade.

All students are expect 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.



Mozart/Oz CS 68
Chris Bailey-Kellogg
Last modified: Tue Feb 1 21:42:18 EST 2005