From Expressive Computing


Computational Media: Expressive Computing (CSCI 395.77)

Adam Parrish, Adjunct Lecturer Mobile Phone: 917-817-9438

Course website:

Office hours

Location and time TBD (but always available by appointment)


This course serves as an overview of contemporary trends in media art and design. We'll discuss individual artists and artworks, and then develop proficiency in a few of the programming languages and environments that make these works possible: Processing for visual/interactive software; Python for manipulating text and mining data from the Internet; and csound for audio. Lectures, course readings and class discussions will explore the intersections among software, design, art, and aesthetics.

Specific technical topics and techniques to be addressed include generative algorithms (L-systems and cellular automata), data visualization, procedural text generation, game design and retrocomputing.

Students will be evaluated based on a number of projects (three during the semester, in addition to a final project) and their participation in class discussions.

The course has no specific prerequisites, outside of those stipulated by the department. Students are expected to be motivated and proficient computer programmers.

Reading Material

Reading material will be assigned on a week-to-week basis—refer to the course schedule for more information. Much of this material will be available online; some of it will be made available in class as photocopies. A number of readings will be drawn from The New Media Reader (Wardrip-Fruin and Montfort, eds.), which should be available (soon) in the Hunter bookstore; it can also be obtained online at

Grading Policy

Attendance and participation 30%
Final Project 25%
Assigned projects (15% x 3) 45%

"Incomplete" grades will be granted only in exceptional circumstances.

Project Expectations

Over the course of the semester, you'll be asked to complete a number of projects. The specific requirements for these projects will be discussed in class (see the course schedule for general parameters), but the focus is always on making something: a new procedure or object (usually, but not necessarily, in the form of software) that is a creative synthesis of the ideas that we've been discussing in class.

Due to the nature of creative work, I can't expect every project to be perfect or even 100% finished. Up until the final project, projects in the prototype stage are acceptable—even tales of spectacular failure are acceptable. What's important is that you show an engagement with both the technical and theoretical content of the course.


On days that projects are due, a portion of class time will be set aside for presentations. During presentations, you will be expected to show your work (as a live demo, or through some kind of documentation), explain what it is, and take questions from your classmates. Presentation dates are not negotiable. You will be expected to present whether or not your project is finished.


Part of your grade for each project is based on your documentation. This should consist of some kind of document that addresses at least these three points:

  • Your idea. What brought you to this particular project? What are you trying to show?
  • Your process. How did you bring your project into being?
  • Your evaluation. Was your project a success? What would you do differently? What are you going to do next?

You should make your project documentation available to me on the day the project is due. If you want to write something up and give me a printed copy, that's okay, but I recommend keeping a project blog: It's more accessible, kills fewer trees, and lets you incorporate multimedia content (like your Processing sketches). If your project is code-based, then please make a copy of the source code available to me.

Working in groups

Working in groups is highly encouraged in this class. In fact, for the first two assignments, it's mandatory. (I'll be randomly assigning the groups for the first project, but you must organize your own groups for project #2.) For the last assignment and for your final project, you have the option to work alone, but I urge you to make yourself available for collaboration.

Software and implementation methods. Although we'll be spending class time introducing a number of technical tools to help you realize your project (Processing, Python, and csound), you are welcome (and encouraged!) to leverage your existing skills to implement your projects.

Original work

Building on, modifying, and hacking existing work is encouraged—when you have permission to do so (as with, for example, open source software, Creative Commons media, and the examples that I provide in class). Please indicate explicitly when you do this, and give credit where it's due. Trying to pass off other people's work as your own is unacceptable and will result in a failing grade (and, potentially, additional steps on the part of the department).

Attendance Policy and In-class Behavior Expectations


Because this class meets only once a week, consistent attendance is vital. Students are expected to attend all class sessions. Unless you or a family member is in an emergency medical situation, don't miss class! Absences due to non-emergency situations will only be cleared if you let me know at least one week 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 incapacitating illness, please let me know (by 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.


It's important to be on time to class. If you're more than ten minutes late to any session, or if you leave class early (without clearing it with me first), I'll count it as an unexcused absence.

In-class behavior

Because it's important for you to follow along with me during software tutorials, we'll be holding class in a computer lab. However, please refrain from using the computers for personal use (to check e-mail, browse the web, or whatever) during class. This rule is especially important when your classmates are presenting their projects. Nothing is more disheartening than trying to present your work to a roomful of down-turned heads.

Compliance with Learning Goals for Computer Science Students

  • 2a. This course engenders familiarity with two widely-used programming languages (Java and Python).
  • 2b. This course focuses on UNIX-like computing environments and methodologies, thereby increasing students' depth of knowledge in this area.
  • 2c. Projects in this course are group-based.
  • 3 and 4. This course introduces students to practices in New Media, which is a growing area of demand for computer science students in both professional and academic capacities.

Upon completion of this course, students will have participated in several oral presentations of their work, both individually and in a group. (These presentations are required to be at least five minutes in length.)