CS010 -- Introduction to Computer Science I
Fall, 2009
(last updated 8/31/2009)


Wayne Iba,
office: Math and Computer Science Building (next to Post Office),
phone: (805)565-6799
Office hours: see my main teaching page
How To Design Programs: An Introduction to Programming and Computing, by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi.  MIT Press (2001). ISBN: 0262062186 [required; The full text is available on-line, but most students find it advantageous to have a physical copy.]
Hackers & Painters, Paul Graham.  O'Reilly Media, Inc.  (2004).  ISBN: 0596006624 [The selected essays that we will read from this book are available electronically. However, this is a thought-provoking and well-written book and I encourage you to acquire a copy for your personal library.]
Necessary software: DrScheme
Other materials: USB flash drive (any size)
Time and place: Tues. & Thurs., 10:00-11:50, Voskuyl Library Stauffer Computer Lab.


Tentative class schedule (see Eureka pages).

Other EXTREMELY Important Information: on working together, submitting assignments and other advice.

This course introduces students to solving problems by writing computer programs in the language Scheme.  Students are not expected to have had any prior programming experience.  My goal is for everyone to have fun learning this material.  Whether you do or not is entirely up to you.  However, I will guarantee that if you want to do well in the course, you will do so if you invest the necessary time.

Scheme is a wonderfully simple yet powerful language that is ideal for students new to Computer Science.  There are only a hand-full of language elements and we will learn them early in the semester.  The simplicity of the language lets us quickly reach a stage where we can write programs that do interesting and fun things.  We will be writing network applications and simple animated games well before the end of the semester. 

By the end of the semester, you will be reasonably fluent in Scheme.  We will model the course after learning a foreign language by immersion.  For most class meetings, we will introduce some new material and use that to write programs -- sometimes together, sometimes in pairs, sometimes individually.