CSC 272
Software II

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

This course meets from 11-11:50 AM MWF in Business 13. The book C++ Primer, by Stanley Lippman, is required. (If you happen to have Bjarne Stroustrup's The C++ Programming Language, that will do equally well.) I've also ordered Object-Oriented Analysis and Design, by Grady Booch, as an optional textbook. (Incidentally, if you choose to buy the Booch book and are a student member of the ACM, you can save $5 on the price of the book; contact me for details.) Other documentation will be provided on-line or in handouts. For example, see my List of Adages on Software Development and Design and the Object Orientation FAQ.

For the first half of the semester, we'll use examples in the Scheme language, with an object-oriented extension named Tiny CLOS. I've written some examples of object-oriented code using Tiny CLOS: try loading foods.scm, which defines a bunch of kinds of food and their methods of preparation, and then loading food-examples.scm to see how it works.

For the second half of the semester, we'll use the C++ language instead. A simple example of C++ classes and member functions is in ~sbloch/class/272/examples/person.

The syllabus is available in LaTeX, DVI, and Postscript; an updated schedule contains the latest updates to homework due dates, lecture topics, etc.

Homework Assignments

I shall assign several homework assignments during the semester: some on paper, some programming in Scheme, and some programming in C++. The final assignment, a Scheme interpreter written in C++, will probably be the largest program you have ever written.

The following homework assignments are tentative. But to give you a general idea....

Homework 1 assigned 26 Jan, due 5 Feb: take a poorly-written program (in file bad.c), rewrite it to be easier to read, and debug it. Some example data are in file chars.
Homework 2 assigned 9 Feb, due 19 Feb: Version 1 of the database dealing with students, courses, and professors. See file hw2.html or hw2.text.
Homework 3 assigned 9 Feb, due 26 Feb: The complete database originally assigned as Homework 2. See file hw3.html or hw3.text. Some example data are in file hw3.examples.scm.
Non-homework 3.5 assigned 28 Feb to be finished (but not necessarily turned in) before the midterm: a variety of exercises in recursive programming.
Homework 4 assigned 25 Mar, due 12 Apr: the first phase of the Scheme interpreter (handling numbers only). A working version is in file ~sbloch/class/272/scheme/v1.
Homework 5 assigned 3 Apr, due 26 Apr: the second phase of the Scheme interpreter. Detailed specifications in file hw5.
Homework 6, assigned 1 May, due 10 May: the third phase of the Scheme interpreter. We sha'n't have time to code and test this version before the semester ends, but we can design it: decide what new classes, fields, methods, and functions we'll need, figure out which functions call which other functions and pass them which data, etc.

Reading assignments

Please read Appendix C, pages 1-150, pages 215-409, and 445-479 of the Lippman textbook by Friday, 19 April, and then start on chapter 10. Also, please read and understand the C++ examples I've written to illustrate class inheritance in C++.

You are visitor number to this and related pages since Feb. 8, 1996.

Last modified: Fri May 3 14:10:17 EDT 1996
Stephen Bloch /