PROF. RICARDO MIRANDA     |     OFFICE: 349 HH    |    OFFICE HRS: TUE 6 - 8PM, WED by arrangement
E: miranda@tcnj.edu    |    P: X2939

"...an interface is not an image. it can be a plug, the ringing of a telephone, some push buttons, or the parameters of a program. it is not a one-to-one simulacrum, but a one-to-one-to-another-one transmission of parallel streams, a process of translation between different levels of code." -- Pit Schulz

Class Policy
Attendance is mandatory, role will be taken at the beginning of each class. Do not arrive late or leave early. All reading and projects must be handed in on time.

Course Work

    The class reading and assignments will be divided into the following topics:
  1. Theoretical perspectives on human-computer interaction: Read assigned essays
  2. Introduction to programming skills for computer-based interaction: Maintain an active sketchbook
  3. Computer interaction in contemporary art and design: Artist presentation and exhibition trip

Books on Library Reserve


  • Week 1, January 21
    Course Introduction
    Projects viewed:
    Processing: Weird Fishes: Arpeggi from flight404; Pinch by Josh Nimoy; Radiohead, "House of Cards"; Processing code for House of Cards
    Physical Computing: Antenna Design; Zone and Jukebots by Robot Lab; Soundstair by Christopher Janney
    Due next week:
    Download and install processing
    CONCEPT - "A Brief History of Programming Languages" by Andrew Ferguson
    Read and view Sol Lewitt's installation at MassMOCA
    Reas on programming and art
    (map of statement)
    PRACTICE - Lesson 1: The Beginning, Chapters 1 - 3 from Learning Processing, Shiffman

    Week 2, January 27
    Processing dynamically ported to JavaScript (no more applet)
    Processing.js on iPhone
    Due next week: PRACTICE - Lesson 2: Everything You Need to Know, Chapters 4 - 6 from Learning Processing, Shiffman

    Week 3, February 4
    Trip to Liberty Science Center, meet with Ann Neumann, Director of Design and New Media
    Lecture 2 and 3 notes
    Processing Examples, based on Chapters 4-8
    Artists presented: Camille Utterback; Golan Levin
    Due next week:
    CONCEPT - J.C.R. Licklider, Man-Computer Symbiosis (1960) (PDF pg.8-25; Print pg.1-15)
    PRACTICE - Wikipedia intro to object-oriented programming
    Lesson 3: Organization, Chapters 7 - 8 from Learning Processing, Shiffman

    Week 4, February 11
    Lecture 4 notes
    Processing Examples, based on Chapter 9
    Artists presented: The Dumpster; by Levin, Nigam, Feinberg
    Due next week:
    CONCEPT - Douglas Engelbart, Augmenting Human Intellect (1962) (PDF)
    PRACTICE - Lesson 4: More of the Same, Chapters 9 from Learning Processing, Shiffman
    Chapters 6 and 7 from Handmade Electronic Music: The Art of Hardware Hacking by Nicolas Collins, on reserve at the library under Miranda, ML1380 .C36 2007

    Week 5, February 18
    Lecture 5 notes
    Lecture Presentation
    Art Presented: UnINtended Use Exhibition in Philadelphia; Wired on Arduino
    Due next week:
    CONCEPT - Myron W Krueger, Responsive Environments (1977) (PDF). Also on Library Reserve, essay 12 from Multimedia from Wagner to Virtual Reality edited by Randall Packer and Ken Jordan
    PRACTICE - Chapters 1 - 4 from Physical Computing, O'Sullivan & Igoe
    Chapters 1 - 3 and Appendices A & B from Getting Started with Arduino, Banzi
    Circuit Simulations, Directions, Applets

    Week 6, February 25
    Processing + Video: Processing Examples using video library
    QUIZ ON PROCESSING
    Lecture 6 notes
    Lecture Presentation
    Arduino Sketches (from Getting Started): Sketch 1 ; Sketch 2 ; Sketch 3
    Due next week:
    CONCEPT - Interview of Ken Rinaldo
    PRACTICE - Chapters 5 from Physical Computing, O'Sullivan & Igoe
    Appendix C and Chapter 4 from Getting Started with Arduino, Banzi
    Arduino: First Sketch
    Microcontrollers, all sections

    Week 7, March 4
    Processing Art + Design: Cinema Redux by Brendan Dawes; Flight Patterns by Aaron Koblin
    About PWM
    Arduino as Art: Accessories for Lonely Men by Noam Toran
    Arduino Sketches: Pulse Width Modulation (PWM); Sketch 3 (from last week)
    Due next class:
    Choose an artist to present in class
    CONCEPT - Interview with Tom Igoe
    PRACTICE - Chapters 5 from Getting Started with Arduino, Banzi
    Programming Techniques: Variables and Functions
    Lesson 5: Putting It All Together, Chapters 10 - 12 from Learning Processing, Shiffman

    Spring Break

    Week 8, March 18
    Arduino as digital music instrument: Piezo, PlayMelody example be sure to turn on Serial Monitor.
    Copy complete example, piezoExample.pde, into Arduino editor
    Analog Sensor: Potentiometer (pot) is a knob that provides variable resistance. It has three pins - the outside pins are for ground and 5V Power, the middle pin is Out to Microcontroller Analog In. Turn clockwise to increase flow of volts upto +5V, anti-clockwise to 0V. Copy code from Arduino page or here (includes Serial.write). Here is an image of pot and LED circuit.
    Controlling a Servo motor by calling the Servo library (bundled with Arduino editor). Copy and past potLEDservoExample.pde and here is a photo of the pot and servo Arduino circuit
    Use Firmata library to speak with software! Firmata wiki page
    Copy and paste potServoFirmataExample.pde into Arduino editor and write to Arduino. Open Processing, copy and paste Processing example that calls Arduino library and animates according to pot.
    Due next week:
    Interview with Marie Sester
    PRACTICE - Chapters 6 - 7 from Getting Started with Arduino, Banzi
    Chapter 6 from Physical Computing, O'Sullivan & Igoe
    Lesson 4, Ladyada

    Week 9, March 25
    Arduino sketch to simply move a servo to a specific degree (not using a potentiometer)
    Controlling a servo using a pot - potLEDservoExample.pde
    Artists and works viewed: "Threatbox.us" by Marie Sester (read her interview), Jean-Pierre Gauthier, Tim Hawkinson
    A few simple projects using servo motor:
    Single servo walking bot
    Servo based dog feeder
    Two servo robot
    Due next week:
    CONCEPT - Golan Levin, Computer Vision in Interactive Art (2004) (PDF)
    PRACTICE - Lesson 4, Ladyada
    Lesson 5, Ladyada (review)
    Analog Input using potentiometer

    Week 10, April 1
    Serial Communication: A serial port is a serial communication physical interface through which information transfers in or out one bit at a time (digital pulses one after another back and forth) between computers.
    KEEP TRACK OF WHICH PROGRAM YOU ARE RUNNING THE FOLLOWING SKETCHES (ARDUINO VS. PROCESSING)
    Arduino: Print data from analog sensor (using a potentiometer or other variable resistor)
    Circuit examples: Simple flex sensor circuit ; Simple pot circuit
    Processing: Processing sketch reading Arduino input
    Processing sketch reading Arduino input and represented by graphic element
    Processing sketch reading Arduino input and visualizing by movement
    back to Arduino: Print data from 2 analog sensors (using a potentiometer or other variable resistor) - Two pot circuit
    And back to Processing: Processing sketch reading 2 Arduino inputs visualizing x,y movement (you need both the class and sketch
    and Arduino: Print data from multiple sensors (using a potentiometer, digital...) - multiple sensor circuit and Visualize via Processing
    Add a physical load (LED, servo) to Arduino: Print data from analog sensors and control LED (using a pot) and open earlier example of Processing controlling Processing sketch reading Arduino input and controlling single graphic element... bumpy
    ASCII Table (subset of Unicode)
    Jon Kessler
    Due next week:
    PRACTICE - Chapter 2 from Making Things Talk by Tom Igoe, execute Project I, Monski Pong using potentiometers
    Arduino + Processing

    Week 11, April 8
    Serial Communication II: Arduino board receives data from software. In Arduino set up the input and output pins and open serial port and data rate (Serial.begin). In the loop function check for incoming data (Serial.available) and read that data (Serial.data). Example sketches from Daily Duino:
    In Arduino open and write to board - serialReadPin.pde
    In Processing open and run - serialReadPin.pde
    The library "Firmata" sets up Arduino for serial communication through any of its pins (except 0,1 or RX, TX - used for serial communication). Using arrays, the library runs through the available pins and sets the board up for both in and out communication with software. "Firmata is designed to be all that you would ever need to upload to the Arduino, after which time, you can just send serial commands to the Arduino to change what it is doing for you. Remember that a library is similar to the classes that you have written."
    Open "StandardFirmata": File > Sketchbook > Examples > Library-Firmata > StandardFirmata
    Read through the library to get a sense of what it does and how it works.
    Write StandardFirmata to Arduino
    In Processing open and run: arduinoFirmata1.pde, simple Processing sketch to light single LED, same as earlier example, but using Firmata (from Daily Duino)
    Set up your board with a series of LEDs with varous degrees of voltage using resistors (10k, 1k, none...). View Image
    In Processing open and run: Multiple LED using a version of Allison Senak's sketch and class from Processing quiz.
    Arduino and Flash... Flash does not have a serial communication library, so a Serproxy must be used to establish network communication between Flash and an open port. (Serproxy is a multi-threaded proxy program for redirecting network socket connections to/from serial links.) Jonah Model has set up sample files which I've edited down to a single example: Download example files
    Student Artist Presentation: Kerrin Paul: Tatsuo Miyajima; Kevin Keane: Josh Nimoy; Dan McCafferty: Jenne-Pierre Gauthier
    Due next week:
    PRACTICE - Arduino + Flash on Arduino site (for those interested in interfacing Arduino and Flash)
    Arduino + Flash tools by Beltran Berrocal or view Jonah Model's expansion on Beltran Berrocal's work
    Arduino + Flash - AS3Glue
    Arduino + Flash workflow
    Flying Pig on Mechanisms and Movement

    Week 12, April 15
    Student Artist Presentation: Tom Winnicki presenting Robert Hodgin; James Stevens: Scott Snibbe; Nick Biewer: Char Davies; Andrew Heiss: Fran Yeoh
    Work on final project - Write a Project Proposals, include the following:

    1. Project Summary
      • Project Title
      • Project abstract (Two-three sentences) briefly describing the final product.
    2. Project Proposal (Please provide the following information, organized with the same section headings as listed below. Word counts are maximums.)
      • Project Description: Describe the proposed project (in greater detail than the abstract). (500 words)
      • Site: Where is the ideal location for the project to be installed or presented? (150 words)
      • Audience: Who is the audience for your project? How do you plan to engage them? (150 words)
      • Interaction: Provide a scenario for how people will access, encounter and/or interact with your project. What are the different modes of interaction (knobs, buttons, switches, web camera)? How many people is the project designed for at a time? Is there an expected duration of interaction? (300 words)
      • Participation: How will the presentation of the project invite people to participate? (300 words)
      • Technology: List the technical requirements for your project - software and electronics.
      • Maintenance: Will you design your and present your project for a lasting display? Will you construct a container for you project, what materials will you use? (150 words)

    Week 13, April 22
    Trip to Liberty Science Center

    Week 14, April 29
    Student Artist Presentation: Jeffrey Barnard: Zach Lieberman; Allison Senak: Hiro Yamagata; Britney Pringle: Erwin Redl; Luis Herrera: Jen Lewin; Ed Cabrera: Antenna Design;
    Work on final project