Our schedule will alternate between formal instruction and theoretical meditation. We will study programming and software engineering in detail, but as we move through the technical material, we'll also be reading some of the more important scholarly works in digital humanities and media studies from the last forty years or so.

Every group of students represents a different set of interests and skills, and so it is difficult (one might say futile) to create a tight schedule for a course like this in advance. For most of the semester, we will be learning new material on Wednesdays, engaging in spirited discussion of various readings on Fridays, and going over problem sets on Mondays. However, the basic pattern may change occasionally depending on the difficulty of the material or other factors.

Here's a rough roadmap of the technical schedule:

(All class meeting are Burnett 126)

Week 1
Introductions, Accounts, UNIX Survival
Week 2
UNIX and the UNIX Philosophy (Part I)
Week 3
UNIX and the UNIX Philosophy (Part II)
Week 4
Introduction to the Ruby Programming Language
Week 5
Control Structures: Conditionals
Week 6
Control Structures: Simple Loops
Week 7
Data Structures, Arrays and Iterators
Week 8
Hash Tables
Week 9
Functions, Scope, and Visibility
Week 10
Regular Expressions
Week 11
Object-Oriented Design (classes)
Week 12
Object-Oriented Design (inheritance)
Week 13
Object-Oriented Design (modules)
Week 14
Week 15
More Algorithms
Week 16
Loose ends