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 / sbloch@boethius.adelphi.edu