This course is an introduction to computing and programming. Its major goal is to introduce students to the principles of systematic problem solving through programming and the basic rules of computation.

The course does not assume any prior programming experience. It is therefore suitable for freshmen students---majors and non-majors alike---who wish to explore the intellectual ideas of the discipline.


The course assumes a basic familiarity with arithmetic and algebra. It does demands curiosity, self-discipline, and some amount of people skills, because all computer scientists end up working with others interactively all the time, including in this course.