digital history techne | courses | fred gibbs

Programming for Historians | History 698 | Fall 2012

Fred Gibbs [email] (486 Research I)

ammon | david | erin | jeri | laura | megan | sasha

Course Description

This course explores the techne (art/techniques) of digital history. It aspires to open new possibilities for historical research, especially in terms of asking and starting to answer fundamentally different kinds of questions. Historians typically develop important critical skills in parsing different kinds of sources, gaining familiarity and experience with possibilities and limitations of various kinds of sources. A key premise of the course is to learn to think about historical sources--regardless of kind--as data, and historical research can benefit from thinking in terms of data analysis. This course requires that you can bring a laptop to each class.

Key Skills/ Goals (see theory in action!)

  • Advanced HTML 5 and CSS 3
  • Various mark-up languages (XML, KML, RDF, TEI)
  • Various web programming languages (PHP, Javascript)
  • Databases in theory and practice
  • Special practice in modifying Wordpress and Omeka sites
  • Various methods of web scraping
  • Using APIs
  • Ability to create maps programmatically
  • Various text mining techniques and tools
  • Command line work with Perl and python

Course Expectations

  • A serious effort for all programming assignments, and continued progress on course projects
  • Perseverance and tolerance for frustration with technical difficulty. Must be able to have fun and learn while accomplishing nothing.
  • Do not suffer in silence for too long. You will be frustrated and confused in this course, and that's necessary. But there is a point at which it is no longer productive, and then you should ask for help.
  • Presentation on 2 (probably) course topics. You (and a partner, if you'd like to do it that way) will provide an introduction and key skills on a topic of your choice. Presentations will go for 60 minutes (plan for 45 minutes of talking, plus time for interruptions).

Course Project

The goal of the course project is to show that you have developed and applied some technical skills relevant to digital history to your research/career(s). The hope is that you'll be able to gradually improve an existing project you've started or completed, or start a new project (or a component of a larger project) that you intend further develop at a later time.


Your course grade will be largely determined by effort--both on the quality of your presentations and the extent to which you can show tangible progress on your project throughout the semester. Everyone comes into the course with different skills and backgrounds, so there is no expectation that everyone can do the same things at the end, but that you've moved significantly beyond where you were when you started. However, you do need to be able to actually complete (to a high degree) the assignments and final project to show that you are putting in the effort to acquire the target skills.
  • Completing assignments: 15%
  • Topic tutorials: 15%
  • Active and intelligent participation in class discussions / labs: 40%
  • Final project: 20%
  • Presentation of Final Project: 10%


Assignments are meant to be completed for the day they are listed; One week left unaccounted for, which will be filled according to student interests.

Aug 30: Introduction to the course and syllabus revisions

  • Course mechanics, introductions, final projects, syllabus, tutorial assignments

Sep 6: Databases

  • Assignment for class: Create a web page with any necessary functionality to show off your data and explorations of it during the course.
  • Read this Introduction to Databases. Also, spend some time with this overview of MySQL.
  • For class, and forever beyond, you'll need access to a MySQL database. You can use one through your web host, but it may be easier in the long term to get a PHP, MySQL, Apache envrionemnt running on your own computer for future explorations. There are free packages that install and initialize everything for you, such as MAMP (mac) and EasyPHP (windows) or WAMP (windows). These also come with phpMyAdmin that gives you a nice graphical tool via your web browser (rather than the command line) to manage your database, but you can still manually run SQL commands like the tutorials have as examples. Once you have such an environment running on your machine, you'll be able to work much more quickly.
  • Lab: Plan to design and construct a database for your research--we'll consider best practices as you do.
  • Key skills: Database architecture, MySQL, SQL, phpMyAdmin

Sep 13*: PHP

[megan] (* day of awesomeness)
  • Read through this PHP tutorial and examples of using forms
  • Lab: Work through various PHP webpages and functionality
  • Key skills: programming fundamentals, PHP datatypes, syntax, likely problems

Sep 20: Data manipulation

  • Scan tutorials at programming historian
  • Lab: massassing your data for future mapping/visualization/analysis
  • Key skills: perl, python, more PHP

Sep 27: CMS Customization: Wordpress and Omeka

[david & sasha]
  • Browse through codices, and understand customization possibilities
  • Lab: Create custom pages that extend site functionality
  • Key skills: CMS frameworks, customization best practices

Oct 4: Javascript

  • Read through some Javascript tutorials: 1 | 2 | 3 | 4 | 5
  • Lab: Using Javascript and JQuery to add functionality to webpages
  • Key skills: PHP and javscript differences, JQuery framework and functionality, interacting with the DOM

Oct 11: Web scraping

[sasha & jeri]
  • Automate process of getting data from sets of webpages
  • Lab: Web scraping
  • Key skills: Xpath and Zotero translators, automating web content acquisition

Oct 18: APIs and mapping

  • Julie Meloni, "Working with APIs", parts 1, 2, and 3.
  • Lab: using APIs for geolocation
  • Key skills: API fundamentals, sending and processing data in various languages

Oct 25: Mapping

  • Find relevant data, use scripts to gather and geolocate it
  • Lab: Creating your own Google Map too see historical data change over time
  • Key skills: KML, shapefiles, map interactivity, QGIS

Nov 1: Text mining


Nov 8: Topic modeling

[ammon & megan]

Nov 15: Visualization tools

[erin & laura]

Nov 29: (Un)anticipated errors and work time

  • Get stuck. Get help.
  • Key skills: Request for Neatline demo

Dec 6: Presentations & Conclusions

Presentations of your final projects should be around 10 minutes, with 5 additional minutes for questions and suggestions. Your main goal is to show that you are applying techniques from the course for your own research. But it's also an opportunity to ask for advice!