Note: this site is still up to serve as a reference for people who took the course in Fall of '18. If you're currently enrolled, please head to the site for the current semester.

Primary Course Materials

All the necessary resources for this class will be freely available online.

Think Python: How to Think Like a Computer Scientist

Allen B. Downey

Think Python will be the primary text for our course for learning programming and the Python language. We will be using the 2nd edition, which is written for Python 3 (do not use the 1st edition, which is written for Python 2).

Although you may choose to purchase a hardcopy of the text, all the content is free online here.

This is a very concise text and assumes no prior programming experience, and it will provide our primary material for gaining basic programming experience. We will rely on other materials for the "data" part of the course (e.g., plotting, analysis, etc).


You can sign up for a free account (which should suffice for our purposes) here:

In a couple of the early lectures, we'll be learning some UNIX-shell basics to get you comfortable working in the terminal. It will be easy for students running Linux or MacOS to follow along on their own machines, but PythonAnywhere will make it easy for students running Windows to follow along as well.

Also, PythonAnywhere will make it easy for everybody to get started running Python programs, without needing to install Python on your own machine, so we'll use it to get everybody writing code fast. As soon as possible, though, we hope to get everyone running Python on their own computer (not on the website).


It's not to hard to grab a Python installer online (e.g., here), and there's a good chance you already have it installed, especially if you're running MacOS. However, we want everybody to be on Python 3, and there are some additional extensions (called packages) that will help us do data science with Python.

The easiest way to get a good Python setup with the necessary extras is to install Anaconda (be sure to get the 3.6 version or later). The list of extras provided with Anaconda are listed here.

An Editor

An editor is just a program you use to write code (and other files). Some editors might let you run your code, whereas others might require you to execute your program yourself in a separate terminal. Ideally, an editor for this course will be be able to colorize Python code to make it easier to read.

You are free to use any editor for CS 301 that you please. Popular ones include emacs, vim, Atom, and Notepad++, Visual Studio Code, and Spyder.

If you aren't sure what to use, we recommend using PyCharm, Community Edition (CE). The CE version is free and runs an Mac, Windows, and Linux. You can download it here: here: