CSC151-02, Fall 2006

[ skip links | basic information | announcements | welcome | warnings | optional books and other readings ]

Fundamentals of Computer Science I

Basic Information


Welcome to CSC151!  

The official course description:

A lab-based introduction to basic ideas of computer science, including recursion, abstraction, state, information-hiding, and the design and analysis of algorithms. Includes introductory programming in a high-level, functional language. Prerequisites: None.

A course very much like this one is the reason that I became a computer scientist.  I'm very excited to be teaching this course, and I hope to share some of that excitement with you.  My goal for this class is that you will begin to learn how computer scientists solve problems. We will be using Scheme as our first programming language; if you have already programmed before, chances are excellent you will still find new ideas in Scheme.

The Fall 2006 sessions of CSC151 include two experimental components: (1) We will be incorporating a significant section on using Scheme to explore issues in computer graphics. (2) Both CSC151 instructors will be sitting in on each other's class meetings.

Important Warnings

Warning! Experience shows that CSC151 exercises different parts of your brain than other courses (even than math courses). Expect some difficult times, but have confidence that you can get through them and that you'll come out of the course with much more knowledge.

Warning! Computers are sentient, stupid, and malicious. When things go wrong, don't blame yourself. Ask me or a TA for help.

Optional books and other readings

Kelsey, Richard, Clinger, William, and Rees, Jonathan, eds. (1998). Revised5 Report on the Algorithmic Language Scheme [HTML] [PDF]. February 20, 1998. The concise and complete definition of the Scheme programming language. You won't need to understand all of it, but you'll find it helpful to keep it by your side.

Rice University Programming Languages Team (1999). PLT DrScheme: Programming Environment Manual. The guide to the Scheme development environment we'll be using.

Optional: Springer, George and Friedman, Daniel P. (1989). Scheme and the Art of Programming. Cambridge, MA: MIT Press. The textbook that we formerly used in the class.

Optional: Felleisen, Matthias, Findler, Robert Bruce, Flatt, Matthew, and Krishnamurthi, Shriram (2001).  How to Design Programs. Cambridge, MA: MIT Press. Another excellent textbook. Available online at

Janet Davis (

Created August 21, 2006
Last revised February 15, 2007
With thanks to Sam Rebelsky
Some material reproduced from