Programming from A to Z: ITP Spring 2009

Tuesdays, 9:30am to 12:00pm

Adam Parrish, Adjunct Assistant Professor

Office hours: Monday 2pm-4pm; Thursday 2pm-4pm; any time by appointment. Sign up here.

Syllabus and schedule | Class notes and assignments | Homework wiki


This course focuses on programming strategies and techniques behind procedural analysis and generation of text-based data. We'll explore topics ranging from evaluating text according to its statistical properties to the automated production of text with probabilistic methods. Using real world data sets we'll build examples of document classifiers, recommendation engines, and language generators. Examples are demonstrated using Java, Processing, and PHP with a focus on advanced data structures (linked lists, hash tables, binary trees) associated with storing and manipulating data. Prerequisite: H79.2233 Introduction to Computational Media or equivalent programming experience. (Programming, Algorithmic Aesthetics)

N.B. This is the "official" course description, as it stood before the change of instructor. Actual course contents may differ. (See the schedule.)

Grading Policy

Attendance and participation 20%
Midterm project 10%
Final project 25%
Homework assignments 45% (5% x 9)


Reading material will be assigned most weeks, and will be made available either as links to documents on the web or as handouts. (There is no official textbook or reader.) Generally, the first twenty to thirty minutes of each class will be devoted to a discussion of the reading.

Recommended reading list:


You are expected to maintain a blog for this class. You'll use this blog for posting documentation of your homework assignments and projects. If you use an existing blog, please make sure that entries relating to this class are specifically marked as such (by, e.g., tags, categories, etc.). As soon as you have this blog up and running, please send me a link.

Homework Expectations

There are a total of nine homework assignments, which in aggregate are worth nearly half (45%) of your grade. Each assignment is due before class begins the following week (e.g., assignment #1 is due before the beginning of class #2). In addition to complying with the parameters of the assignment as outlined in class, you are expected to post (to your blog) documentation of your assignment. This documentation should include:

  1. a description of what the program does;
  2. what kind of input the program expects; and
  3. what the output of the program looks like.

Make sure to post a link to your homework documentation on the course wiki. The source code of your program should be made available to me, either by e-mail or by including it in your documentation.

Students may be called upon (and are encouraged to volunteer) to present their homework assignments in class.

Homework assignments will not be accepted after their respective due dates.

Project Expectations

There are two projects in this class, one due at midterm and one at the end of the semester. These projects can follow the form and content of your choosing. You're welcome to work in groups, and to combine your projects with assignments from other classes. Your projects should, however, always demonstrate an engagement with both the technical and theoretical content of the course.

You will be asked to present your projects in-class. You must document your projects on your blog, and post links to your documentation in the appropriate place on the course wiki.

Attendance Policy and In-Class Behavior Expectations


Because this class meets only once a week, consistent attendance is vital. You are expected to attend all class sessions. Absences due to non-emergency situations will only be cleared if you let me know a week (or more) in advance, and even then only for compelling personal or professional reasons (e.g., attending an important conference, going to a wedding). If you're unable to attend class due to contagious or incapacitation illness, please let me know (by phone or e-mail) before class begins.

Each unexcused absence will deduct 5% from your final grade. If you have five or more unexcused absences, you risk failing the course.


Be on time to class. If you're more than fifteen minutes late, or if you leave early (without my clearance), it will count as an unexcused absence.

In-class behavior

Laptops must be closed while your fellow students are presenting work. You're otherwise welcome to use laptops in class, but only to follow along with the in-class tutorials and to take notes. (I follow you on twitter. I will know if you're tweeting.)