CSC 272
Software II

Principles of Programming Languages
aka Literate Programming
and Object-Oriented Programming
Spring, 1997

This course meets from 12:15-1:30 TTh, in room 39 (aka room 17) in the basement of the Business Building. The book An Introduction to Object-Oriented Programming, by Timothy Budd, is required. Other documentation will be provided on-line or in handouts. For example, see my brief tutorial on Scheme, my List of Adages on Software Development and Design, and the Object Oriented Programming FAQ.

The textbook discusses the languages C++, Objective C, two different languages named Object Pascal, Smalltalk, and Java. All of these, to my mind, are fairly similar to one another, so I'd like to also give you the CLOS perspective on object-oriented programming. "CLOS", which stands for Common Lisp Object System, is a package of extensions to Common Lisp to help people do object-oriented programming. Since you're already familiar with Scheme, rather than Common Lisp, we'll use a package named Tiny CLOS, a package of extensions to Scheme that implements the basic ideas of CLOS. (I've installed Tiny CLOS on panther under the name "tclos"; you should be able to just type that command and starting using it.) I've written the beginnings of a tutorial for Tiny CLOS; in addition, some examples are in foods.scm (which defines a bunch of objects, classes, and actions relevant to cooking), hw2.4.scm (my solutions to a particular homework problem last year), and tiny-examples.scm (the examples provided with the Tiny CLOS package). If you like to learn a language by looking at its source code (don't laugh, you can actually do that with Tiny CLOS!), take a look at tiny-rpp.text.

The syllabus will be available in LaTeX, DVI, and Postscript.
An updated schedule will contain the latest updates to homework due dates, lecture topics, etc. Please check the schedule regularly and keep up on the assigned reading!

I also taught this course in Spring 1995 and Spring 1996.

Homework Assignments

Homework 1, in-class portion (6 Feb)
In groups, choose a software project (you're not tied to it for the rest of the semester), discuss user-interface and (using CRC cards) identify major components, responsibilities, and interactions among components
Homework 1, assigned 6 Feb, presentations due 18 Feb
In groups, flesh out descriptions of user interface, software components, responsibilities, interactions, and state information, for whatever project you worked on in class 6 Feb.
Homework 2, assigned 20 Feb, first draft due 27 Feb, final draft due 6 March.
Homework 3, assigned 6 March, due 8 May (the last day of class).
Your project, as chosen in homework 2. I expect you to show me "what you've got so far" several times before the end of the semester, so I can make suggestions and tell whether you're on schedule.

You are visitor number to this page since Jan. 13, 1997.
Last modified:
Stephen Bloch /