Fall 2011
Overview
This course introduces students to abstract problem solving
through the design of computer programs.
Students are not expected to have had any prior programming experience.
I have a lot of fun teaching this class
and 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 learn to love the challenges presented in this course
and you are willing to invest the time necessary to overcome them,
you will do well.
The skill of designing programs transcends specific programming languages.
In this course, we use the language
Racket,
which is wonderfully simple yet powerful
and is ideal for full-blown commercial applications
as well as for a beginning student's first language.
Racket has only a hand-full of syntactic 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 and/or web applications
as well as animated simulations
before the end of the semester.
By the end of the semester,
you will be reasonably fluent in Racket
and prepared to learn any programming language or to continue in Racket.
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.
Course Materials
- Suggestions for success
- Policies on working together and cheating
- Required Textbook:
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.
[The full text is available online,
but most students find it advantageous to have a physical copy.]
- Recommended Textbook:
Hackers & Painters,
by 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.]
- DrRacket. You will need to download and install
DrRacket, which includes an integrated development environment (IDE).
- Standard Acknowledgments Header. Include the header at the top of every homework assignement
and project deliverable.
- Laptop: bring your laptop to class. Programming is not a spectator sport.
If you do not have a laptop, the department has a small number of loaners that may be available.
Ask the Instructor about borrowing one.
- USB Flash drive: bring a flash drive to class.
Administrivia
- Time and place: TTh 10:00-11:50am; Winter Hall 216
- Professor: Wayne Iba
- Office: Winter Hall 308, 3rd Floor, Mathematics and Computer Science Wing
- Phone: 805-565-6799
- Email: Iba at Westmont dot edu
- Office Hourse: see my teaching page
- Course Syllabus
- Class schedule can be found on Eureka