Course Description

Software is embedded in many objects that we use on a quotidian basis. These range from the more obvious (computers, cell phones) to the often imperceptible (elevators, toasters, toys). Software as such has social implications: software designers play a large role in crafting both our virtual worlds and our interactions in the physical world. In this course you will learn basic computer programming concepts that can be applied to a wide range of programming languages. You will collaboratively experiment with these languages to create your own software projects. Through critical readings and case-studies of mainstream software applications you will gain greater understanding of the social, political and technological forces at work in software development.

Note - previous experience with computer programming is NOT necessary.

Learning Goals

Students will:

  • Demonstrate an awareness of the history of computers and the evolution of programming languages.
  • Demonstrate an understanding of algorithms, data structures and basic programming patterns as well as various approaches to the software development process.
  • Demonstrate an ability to author original algorithms and to see software as an expressive medium not unlike drawing, writing, singing and knitting.
  • Demonstrate an ability to critically analyze the societal impact of computing and software design.

Textbooks and Materials


Download and install the free Processing programming environment to your computer.

all required readings will be available online or handed out in class

Your enthusiasm, curiosity and willingness to learn.

optional technical texts: is an invaluable online resource. There are also many good books available on computer programming and software design in general and Processing specifically. Please feel free to speak with me directly if you'd like to explore some additional texts.

optional history/theory texts:

Grade Weights

Class involvement: 20%

A large amount of class time will be dedicated to group critiques, knowledge sharing, in-class assignments and class discussion. I encourage you to take an active role in contributing to make our class a fun and dynamic place to be.

Programming Sketchbook: 40%

You will have 8 homework assignments to complete. Also, by the end of each class period, you will create and turn in a new computer program. In the spirit of a sketchbook, your code needn’t be perfect (or even have to entirely work) - but should reflect an attempt to utilize the concepts presented in class that day.

Presentation OR Technical Workshop: 10%

In groups of 2 students, choose one:

  1. Give a 20 minute presentation to the class case studying projects that use software to make art, architecture or design works.
  2. Give a 20-minute demo/workshop of a particular software technology and develop a participatory activity so that the class can learn how to use it.

Final Project: 30%

Your final project will be a novel software design. You will prepare a technical and conceptual proposal for a new piece of software as well as a small prototype or component of this project realized in code. The emphasis will be on the conceptual design which must be thorough and well-conceived. The prototype does not need to be a fully functional piece of software, but should demonstrate a grasp of basic computer programming principles and best practices. You will demo this prototype for the class. You will work collaboratively in design teams on this project.


  • Warning - this course demands substantial work outside of class time to complete the projects. You should plan on an additional 3 hours of work outside of class every week.
  • Work in the lab with a friend - when learning new technology, 2 brains are usually better than one. You are welcome to work on your assignments at home but many students use the Multimedia Lab in room 556. Lab hours will be posted after the first week of classes. Students may not use the lab when another class is in session. If the lab is locked during regular lab hours you may get a key from the Security Desk.
  • Ask for help!!!


Water/liquids are a excellent conductors. You can be shocked if you are touching water that touches electricity. Be careful with drinks around the computers!

Carpal Tunnel
Computer keyboarding, typing and use of the mouse are among many common activities that have been identified as contributing to repetitive stress induced carpal tunnel syndrome.

Eye Strain
Staring at a glowing monitor for extended periods of time can cause headaches, eyestrain and problems with your eyesight. Remember to take frequent short breaks by looking away from the monitor and focusing on something in the distance, or close your eyes for a moment. Your eyes need a break!

Attendance Policy

Attendance will be taken in each class. You are allowed one unexcused (no questions asked) absence, after which your final grade will drop substantially with each absence. In the event that an extraordinary circumstance will require you to miss a class, please let me know ahead of time, by calling me, or by email.



Academic Honesty Policy
