A First Course in Computer Programming
About the Final Exam
Here's my summary of what to expect of the final.
Kinds of questions
- Here's some Scheme code; what does it do? What would this function
do, print, or return if I called it with these parameters?
- Here's an English description of one or more functions; write
contracts, examples, and definitions for them. (You've seen several
likely examples in homework 8.)
- Here's a real-world problem; design a data type to help you solve
it, with data definitions, define-structs (if necessary), contracts for
the functions provided by define-struct (if necessary), one or more
examples of the data type, and an input template.
- Here's a real-world problem that requires several functions;
give contracts and examples (but no definitions) for the functions
you would write to solve it.
Topics to study
- Basic Scheme syntax (the six or seven rules we've learned)
- Definition by parts vs. definition by choices
- Lists and recursive functions on lists
- Lists of structs and structs containing lists
- Recursive functions on natural numbers
set! to modify existing variables
begin to combine several expressions with side
local definitions, and how, when, and why to use them
for non-graphical I/O
- Functional abstraction, i.e. functions that take other
functions as parameters
list notation: you may use whichever notation you like,
but I'll use list notation in writing the exam, and it may save you some
The final exam will be in our usual classroom. The 9:25 section will
have its exam on Thursday from 10:30-12:30, and the 12:15 section will
have its exam on Tuesday from 1:00-3:00.
Yes, that's two hours. I'll take the final
myself, and if it takes me more than half an hour, it's too
long and I'll trim it down. It will be on paper, not on the computer. It
will be closed-book and closed-notes.
If you have any other
questions about the final exam, or your homework, or Scheme, e-mail me.
My office hours
(in Alumnae Hall 113A; if I'm not there, look around the corner in 112)
- Tuesday/Thursday 11:00-12:00
- Tuesday/Thursday 2:00-5:00
- Wednesday 9:00-11:00
- Other days and times by appointment.
We also have several
tutors capable of helping with this course:
- Aisha Ahmad
- MW 12:00-2:00, TTh 1:00-2:00 or by appointment
- Faith Barclay
- office hours MW 4-6 PM, TTh 11 AM-12 noon, F 11-2, in Alumnae 112
- Arvind Budhram
- by appointment
- Sasha Pogornets
- in class (TTh 9:25-10:40 and 12:15-1:30)
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?
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 design 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.
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)
to this page since June 4, 2001.
Stephen Bloch / email@example.com