This course will introduce you to computer science in general and computer programming in particular. We'll use Python programming as the vehicle with which to accomplish this, and the class might feel a bit like a simple Python programming class. However, we will do our best to avoid the messy details of programming (even though they're very useful to learn!) and instead focus on the deeper concepts behind the way programming languages work. I hope you'll find the course interesting and a lot of fun.

Course details

Textbook: Composing Programs
Syllabus: Download here
Office hours: Mon. 2-3 and 4-5, Wed. 10-11, Thur. 11-12, Fri. 2-3 (or by appointment)
TA tutoring hours: The TAs hold tutoring hours in ETC 105 6:30-9:30, Sunday through Thursday nights.

Useful links

The homework submission site

The Python standard library, and in particular the list of built-in functions

Special method names

Built-in exception types

Homeworks and Projects

Homework 0

Linked list implementation

Project 1 due Sept. 25 (by 11:00 AM)

Project 2 due Oct. 9 (by 11:00 AM)

Project 3 due Oct. 28 (by 11:00 AM)

Project 4 (due dates in file)

Efficiency homework due Nov. 6

Sort timing homework due Nov. 16

k-means homework due Dec. 8 (by 11:00)

Reading

1.1-1.3 due Sept. 4

1.5.1-1.5.5 due Sept. 11

1.6.1-1.6.8 due Sept. 16

2.1-2.3 due Sept. 21

2.4 due Sept. 30

2.5, 2.6 due Oct. 5

Slides

Slides - This is a pdf of the slides I've used in class. I cannot guarantee that everything is perfectly correct or completely current, because some things are lost in the conversion to pdf. I put these up because I know they are useful to some students even with those caveats.

Practice exams

Practice midterm

Practice midterm solutions (Suggestion: Don't look at these until you take the practice midterm as if it was a real test.

Practice problems for the final