Programming for Historians | History 698 | Fall 2012
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)
- 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
- 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 ProjectThe 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.
GradingYour 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%
MOSTLY SET SCHEDULE OF ACTIVITIES
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[david]
- 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
- 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[laura]
- 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[erin]
- 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[jeri]
- Manipulating and (re)viewing files/texts
- Some introductory (sort-of) readings: text mining terminology | document similarity through compression | 19th cen. text problems | Text mining with R
- Lab: gather some texts and explore
- Key skills: grep, python, R
Nov 8: Topic modeling[ammon & megan]
- Some introductory (sort-of) readings: a literary intro | probably the best general intro | interpreting results | a guided tour | a real history example
- Lab: model your topics.
- Key skills: stats for topic modeling, MALLET, gensim (python)
Nov 15: Visualization tools[erin & laura]
- Visualization tools overview: problems and possibilities
- gentle introductions to D3 via slides and a quick demonstration and a very nice website tutorial. These and others are listed here (though quality varies widely). You should also read an introduction to SVG. After that, you should understand how D3 creates SVG elements from your data..
- Key skills: Google Chart API, D3, Gephi
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!