1 Variables and types
2 Functions, basic recursion
3 Control flow: Branching and repetition
4 Introduction to objects: Strings and lists
5 Project 1: Structuring larger programs
6 Python modules, debugging programs
7 Introduction to data structures: Dictionaries
8 Functions as a type, anonymous functions and list comprehensions
9 Project 2: Working in a team
10 Quiz, wrap-up

Administrative Details


This is a pass/fail course — attend the classes, do the homework. Attendance is important; email us in advance if you have to miss a class.

Optional Assignment(s)

There is an optional assignment that you can work on when you have free time, e.g. if you finish the class lab period early. This assignment is completely optional — it was designed to give you a better intuition for programming and to help in later course 6 studies.


This class uses readings from the online textbook How to Think Like a Computer Scientist — it's always nice to have two perspectives on concepts. You can find this textbook here. [Note: This link does not work in Internet Explorer. If you are using Internet Explorer, try the first edition of the textbook instead.]

Python Installation

You can get the latest version here.

  • Linux and Mac OS X users: You should already have Python installed — to test this, run the command Python in console mode. Note that the first line tells you the version number; you may want to upgrade your installation if you have a version earlier than 2.3.

  • Windows users: Grab the Windows installer from the Downloads section. After installation, you can run the IDLE (Python GUI) command from the Start menu.