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

Administrivia