A First Course in Computer Programming
is available in
The main textbook for this class is How to Design Programs, by
Felleisen, Fisler, Flatt, and Krishnamurthi, published by MIT Press.
The text of the book is available on-line,
but I've also ordered the printed version through the bookstore;
you are encouraged, but not required to buy the printed
This textbook uses the Scheme programming language. Why Scheme?
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!
Partners for upcoming assignments
If you need a partner for the next homework, please e-mail me immediately and I'll try
to match you up with someone.
Recipes and Syntax Rules
You'll get through this course a lot more easily if you follow
the recipes! Here are the recipes and
syntax rules we've seen so far, and you can also read about the
spelling, grammar, vocabulary, and idioms of
We use the freely-downloadable software package
I've set up some
forms for entering and viewing PSP data.
You may use these forms to record defect and time information.
cookies. (For those with a moral opposition to cookies, I assure you
that they're all "temporary" -- they disappear as soon as you quit the
(For more information about PSP, see the PSP page at
Carnegie-Mellon or read
Humphrey's Introduction to the Personal Software Process.)
- Read (and use!) the
- See my folder of programming
examples on composing functions, working with booleans, writing with
conditionals, defining and using structs, mixed-type data,
- Skim my Adages on Software Engineering and
Object-Oriented Programming; in particular, read the few
paragraphs about "the joys (and woes) of the craft".
- On Pair Programming: read
I Really Need to Know about Pair Programming I Learned in
- My page on the minimal Scheme
language treats Scheme as a foreign language, with its own spelling,
punctuation, grammar, vocabulary, and idioms.
You might also be interested in Jack Crouch's CS1 Web site. Jack Crouch teaches a course on
beginning programming, using Scheme, DrScheme, and How to Design
Programs; the difference is that he's teaching high school freshmen
rather than college freshmen.
My office hours
(in Alumnae Hall 114; if I'm not there, look next door in 112)
We also have several student tutors who can help with this course:
- Monday 10:00-12:00
- Tuesday 1:00-4:00
- Thursday 1:00-4:00
- Friday 10:00-12:00
Ahmad's office hours (in Alumnae 112 or 118) are
Tuesday and Thursday from 12:00-2:00 PM.
Budhram's office hours are
MWF 1:00-3:00 PM. He'll be in Science 227 immediately after class; if
nobody stays there to ask for help, he'll move to Alumnae 112 or
Kampanatsanyakorn's office hours (in Alumnae 112 or 118) are
Wednesday 11:00 AM-12:00 noon, Thursday 3:00-5:00 PM, and
Friday 1:00-2:00 PM.
Various computer science tutors in the Learning
Center (Earle Hall,
lower level) are on duty Monday through Friday from 9:00-11:30 AM.
Who should take this course?
This course is intended primarily for people who have not previously
studied computer programming, both CS majors and non-majors. For
non-majors, this course counts towards your math/science distribution
requirement. Students who have passed at least a semester (half a year)
of computer programming with a "B" or better, or who have a strong math
background, may skip this course and go straight to CSC 171, or they may
take this course anyway; some of the concepts will be familiar, but
they'll probably still learn a lot.
You are visitor number
to this page since June 4, 2001.
Stephen Bloch / firstname.lastname@example.org