Time: Monday & Wednesdays 7:00pm-9:30pm
Location: Social Sciences 105
Instructor: Josh Cutler
TA: Matt Dickenson
Office Hours: By Appointment


This course will introduce students to concepts from Computer Science and Software Engineering using the Python programming language. The goal will be to give students a strong working knowledge of the skills necessary to use programming in their social science research. We will survey more advanced topics to give students familiarity with the concepts and serve as a starting point for further courses/self teaching.

The first half of the course will be devoted to making sure that everyone is comfortable with building simple, object oriented programs. We will cover best practices in software engineering as well as basic computer science concepts, data structures, algorithm design and computational complexity. Homeworks will include simple programming assignments that we will code review as a group to talk about implementation decisions.

The final half (roughly) of the course will be devoted to applying some of what we have covered to the field of social science. We will cover some specific programming techniques that are of use to social scientists (e.g. classification, linear programming) and implement some simple examples of these. During this time students will be working on their final project.

This course is recommended for people with some programming skill but no formal computer science education. We will assume that you are familiar with basic syntax and programming concepts (e.g. looping, conditionals, etc). We will not assume however that you are familiar with big O complexity, data structures, databases, or any advanced topics.


This course will be taught in Python. Familiarity with Python and its concepts (OOP) will allow you to hit the ground running. It is recommended that you work through Zed Shaw’s ”Learn Python the Hard Way, 2nd Edition”, which can be purchased as an ebook or is free online. Make sure to start by reading the last chapter. Then do exercises 1-35 (skip 15-17).

The lectures will assume that you are comfortable with this material on day 1.

Final Project

In addition to weekly homework assignments there will be a final project for this course. The course is structured so that the material will be cumulative and by the end of the semester we will have the tools to create something that is useful for social science research. The exact form of the final project is very negotiable, but it should be a nontrivial application of what has been covered and result in a library or tool that you could presumably use to do research after the course is over. We will cover this more as the time approaches, but feasible projects would be:

  1. A library that queries twitter’s api, stores tweets of interest and classifies them in some way (pro-obama v anti-obama)
  2. A library that allows you to scrape blogs of interest and extract keywords to aid in human moderated coding
  3. etc.

Talk to Josh or Matt if you are having trouble coming up with ideas.