Your most basic assignment is to come to class prepared. Prepare for class by going over the assigned reading for class with a text editor and terminal open, doing your best to get the code to work. You are not expected to come to class having mastered the topic, but you are expected to have tried your hand at it.

By noon on the day of class, please send a brief e-mail to the course list about at least one thing you think you learned and one thing you want to see better explained. I will use your e-mails to tailor my explanations in class.

Weekly coding projects

For many classes I will ask you to work on a historical programming problem. Your solutions should be published as a GitHub repository or Gist before the start of class. You should come to class prepared to talk about how you worked through the problem and (where appropriate) what historical argument might be made from your findings. These projects will be evaluated on the basis of effort and imagination in applying programming to history.


At our first meeting you will pick from a list of programming techniques which are not yet on the syllabus. One week you will teach the class for 30–40 minutes about the technique. Your lesson should include an accompanying blog post with the necessary code and instructions. The Programming Historian will be a helpful model; you may eventually wish to submit your tutorial to the Programming Historian’s peer review.

Course project and presentation

Over the course of the semester you will create some digital history project using computer programming. (This project should be roughly the equivalent of a seminar paper’s worth of work.) This project should be chosen in consultation with me. It might take any number of forms: a library or plugin, a research paper backed by programming methods, a visualization, etc. During the semester you will create a brief proposal and set of specifications for the project. At our last class meeting you will give an informal presentation where you explain both the code and the historical argument to the class and get some feedback from them and me. The finished project will be due a week later.


The assignments for this course will receive these weights.

assignment weight
class participation 25%
weekly coding projects 25%
tutorial 10%
final project presentation 10%
final project code/argument 30%