Principles of Programming Languages
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
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
aka Literate Programming
and Object-Oriented Programming
For the first half of the semester, we'll use examples in the
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.
is available in LaTeX,
an updated schedule contains the
latest updates to homework due dates, lecture topics, etc.
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
- 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
- Homework 2 assigned 9 Feb, due 19 Feb: Version 1 of the
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
- 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
- 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.
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,
Fri May 3 14:10:17 EDT 1996
Stephen Bloch / firstname.lastname@example.org