This syllabus is subject to change. The official syllabus is always at

Introduction to Interactive Media
Fall 2017

Credits Hours: 4
Classroom: C3-029 (Art Center, Interactive Media lab)
Time: Monday 14:40-15:55; Wednesday 14:40-17:20
Class Website:
Recommended Prerequisites: None

This course counts towards the following NYUAD degree requirement: Minor in Interactive Media

Room Access Form

Instructor: Michael Shiloh
Office:  C3-163 (Art Center)
Office Hours: TBD
Availability outside of office hours:

  • Stop by my office or the Interactive Media lab anytime
  • Send me email to set up an appointment

With the advent of digital computation, humans have found a variety of new tools for self expression and communication. However, most of the interfaces to these toolsets are created with a computer in mind, not taking into account humanistic needs of design and usability. Additionally, computers have traditionally lacked knowledge of the richness of the physical world. As such, their understanding of our needs has been informed by click and taps, seeing the world as a binary system of on or off.

This course explores creative computation through software and hardware.  By approaching software and hardware design as artists and designers with an emphasis on human-based factors, we can explore new paradigms of interaction with machines and each other. Using open source software environments and open hardware platforms, we will look at way of making these tools work for us. No background in programming or electronics is expected. A sense of play, desire to experiment, and a DIY attitude is expected.

Learning outcomes:
Students who successfully complete this course will be able to :
•Think critically about interaction design principles for hardware (physical) and software (screen based) interfaces
•Understand and be able to implement basic electronic circuits, including analog and digital sensors and actuators
•Understand and be able to implement basic computer programs, including arrays,  loops, objects, and classes
•Use a computer and electronics as a tool for self expression
•Interact with the physical world, sensing (such as light, pressure, temperature) and/or affecting (movement, light, sound) it in an interesting fashion

Teaching Methodology and Assignments:
This is a production-based course that involves programming, electronic, and some construction work both inside and outside of the classroom. Every class you will have an assignment. Some of the time it will be reading, some of the time it will be practical.

Tentatively, on Mondays we will review homework, focusing on skills you will need in this class: reviewing unclear concepts, learning how to find and fix problems in your programs and circuits, etc. We will also discuss how to document your projects meaningfully, how to incorporate creativity into your creations, etc.  Expect to be asked to show your work every time we meet. Some classes everyone may demonstrate their work, other classes only a few students may, but always be prepared.

On Wednesdays we will focus on learning new skills by demonstrations, discussing the reading,  analyzing examples, and in-class work. Reading assignments will be due on Wednesdays. In-class work might include following along with me as I demonstrate a new concept, and an improvisational aspect, where you take the lesson and make something unique and interesting based on the in-class review.

All of your work must be documented on the class site (see below for details).

On both days students are encouraged to try things out, ask questions, and engage in both creative and technical discussion. The course embraces a process-oriented philosophy believing that programming and electronics are best learned by doing. Thus, much of class time will be spent doing hands-on workshop-style lessons and exercises.

•20% Attendance & participation
•20% Weekly assignments
•10% Whimsical project
•25% Journal entries
•25% Final project

Grading Rubric

  • Technical Competency (20 points): Correct implementation of algorithm (for software) or circuit (for hardware) and fulfillment of technical aspect of the assignment. No unnecessary components, wires, variables, or code blocks.
  • Technical insight (20 points): No redundancy or unnecessary duplication of code or hardware. Clear, logical, easy to follow structure. Appropriate handling of invalid inputs or data. Intelligent debugging (or logging) messages.
  • User Experience (20 points): The quality of the experience for a person who engages with the project, specifically the usability, design, and intent. Clear and accessible method of engagement.
  • Creativity (20 points): Evidence of creative input, personal expression, meaningful direction, and overall thoughtfulness
  • Documentation (20 points): Clear description of project, creative and technical decisions, influences and inspiration, key challenges and solutions, overall lessons learned, and relevant references and resources. Code well-organized, clear, and meaningfully commented. Variables, functions, classes, and objects have meaningful names. Unused variables, functions, or commented-out code explained. Schematic clear and logically organized.
  • A+: 98+
  • A: 93 – 97.9
  • A-: 90 – 92.9
  • B+: 88 – 89.9
  • B: 83 – 87.9
  • B-: 80 – 82.9
  • C+: 78 – 79.9
  • C: 73 – 77.9
  • C-: 70 – 72.9
  • D: 60 – 69.9
  • F: -59.9


  • Construction, electronic, and programming projects take much longer than you think they should. You should allow yourself much longer than you usually do for homework assignments
  • Since many classes have assignments due on Monday, Sunday is the big work day in the lab. On the one hand, a lively atmosphere can be stimulating, and there will be plenty of people to ask questions. On the other hand, you will be sharing tools, work space, and support people (lab manager etc.) with more students.

Online Journal:
Submit your homework assignment by posting to our shared online journal. Tentatively, that will be this WordPress blog.

The purpose of the journal is twofold. First, it is a valuable way for you to communicate to me that you are keeping up with the work in the class. I read your posts to see how you are doing. At a minimum, reference to your work is expected, as well as reference to the readings, and documentation of any research. Secondly, the journal is a way to document your work for your own use and that of others. We have all benefited from works shared by others, and we reciprocate by sharing our works.

You must update the journal weekly with the work you have done for class.

Document your work as you go; don’t put it off until the end. Most importantly, don’t wait for everything to work perfectly – it is important to capture the things that don’t work as well. We all probably learn more from this than from what worked, if we pay attention.

Start with a brief description of the work. Explain the goal clearly and concisely. A simple sketch is often useful here, more so than a photograph.

Use pictures, drawings, and videos liberally to explain your work.

Provide links to places you learned techniques from (programs, circuits, or other), including inspiration. Copying code or techniques without attribution is plagiarism.  Few ideas come out of the blue, and your readers can learn a lot from the sources from which you learned and by which you were were inspired. Be generous in sharing your sources.

Always include your code or a link to your code.

Always include a schematic. Your schematic may be hand-drawn.

For long programs, use a code repository like gitHub and link to it from your blog. There will be workshops for using gitHub shortly.

When you base your code on someone else’s code, cite the original author and link to their code, just as you would when quoting another author in a paper. If you only changed one part of an existing program, post only the part you changed, and link to the original. Make sure any code you post is well-commented, so you and others can understand what it does.

Describe what your project looks like, what it does, and, if it’s interactive, what the user or participant does in response. Your explanation should give enough information that someone who’s never seen the project can  understand it without further explanation.

You should also include a section describing how the project works, aimed at a more informed reader (your instructor, or next year’s classmates). Include a system diagram to make clear what the major components of the system are and how they communicate.

Here are some examples of good weekly documentation.

You should use the journal as an opportunity to write clear, concise thoughts or questions based on the weekly topics. The writing is expected to be well reasoned, grammatically correct, and written as if it were a paper being turned in. You should link to any relevant sources, and provide as much context as you can using images, video, audio, or other forms of expression.

Here are some excellent final project documentation 

Final Project :
Create a physically interactive system of your choice that relies on a multimedia computer for some sort of processing or data analysis.

Your final project must use both Arduino and Processing. It is up to you to determine how they will collaborate and communicate to realize your project. Although Processing is running on your computer,  you are welcome to shift the interaction away from simply a keyboard and mouse.

Your focus should be on careful and timely sensing of the relevant actions of the person or people that you’re designing this for, and on clear, prompt, and effective response. Any interactive system is going to involve systems of listening, thinking, and speaking from both parties. Whether it involves one cycle or many, the exchange should be engaging.

You may work alone or in groups.

A few examples:
Musical Instruments. Performing music involves a sustained engagement between the performer and the instrument. The feedback from the instrument has to be immediate and clear in order for the performer to continue playing. The interface has to be flexible so that the musician can exercise her creativity in playing, but has to have some boundaries so that she knows what the instrument can do and what it can’t do.

Game interfaces. Like musical instruments, they involve constant back-and-forth interaction and immediate response. They are often simpler than musical instruments. In fact, the standard game controller has gotten so standard that the action of many games is artificially adapted to the needs of the controller, not the physical expressiveness of the player. Pick a specific game and see if you can change that.

Assistive devices. Whether it’s something as simple as a reaching device (like a stick with a hook on the end) or something more complex, these devices are very demanding of clear, reliable response.

Remote control systems. They require not only a clear interface, but must also return enough information on the remote system’s action to let you know that you’re doing the right thing. Whether it’s a remote controller for your home electrical devices or a Mars rover controller, the need for clarity and good feedback are equally essential to the person who it’s made for.

There are many other good applications for this project. I encourage you to think creatively. I’m happy to discuss wild and crazy ideas.

Participation and attendance:
Attendance is mandatory. Unexcused absences or habitual lateness will negatively impact your final grade for the class. If you’re going to be late or absent, please email me in advance. If you have an emergency, please let me know as soon as you can.

Please turn in all assignments on time.

Showing up on time, engaging in the class discussion, and offering advice and input in the class is a major part of your grade. Participating in class discussions is helpful for me to get to know you as an individual and keep track of your progress, but most importantly, it provides you and your classmates with the opportunity to share failures, successes, and insights on the work you are doing.

You are expected to show work in class. This includes working prototypes, failed assignments, things that don’t work the way you expect, and so forth. Don’t be afraid to show what you did, or failed to do.

If you do not ask questions, I can only assume you understand the material completely. Asking questions about concepts you do not understand and showing work that did not function as expected is not a sign of failure, it is an opportunity to learn.

Laptop use is fine if you are using your laptop to present in class, or if we’re in the middle of an exercise that makes use of it. Whenever classmates are presenting or we’re in the midst of a class discussion, please keep your laptop closed. The quality of the class depends in large part on your attention and active participation, so please respect that and close your lid.

Mobile Phones:
Please put them on vibrate or turn them off before you come to class. If you have an emergency that requires you to answer your phone during class, please tell me ahead of time.
Required Tools
Sparkfun kit (available from the NYU bookstore)

Required Software


Recommended Software


Recommended Books

Title: Getting Started with Arduino
Author: Massimo Banzi and Michael Shiloh
ISBN: 978-1449363338
Publisher: Make
Edition: 3rd

Title: Getting Started with Processing
Author: Casey Reas and Ben Fry
ISBN: 144937980X
Publisher: Make
Publication Date: July 2, 2010 Edition: 1st

Title: Learning Processing: A Beginner’s Guide to Programming Images, Animation, and Interaction
Author: Daniel Shiffman
ISBN: 0123736021
Publisher: Morgan Kaufmann
Publication Date: September 2, 2008 Edition: 1st

Title: Arduino Cookbook
Author: Michael Margolis
ISBN: 1449313876
Publisher: O’Reilly Media; Second Edition Publication Date: 2011

Title: Make Electronics Author: Charles Platt
ISBN: 0596153740
Publisher: Make Publication Date: 2009

Title: Making Things Talk 2ed
Author: Tom Igoe
ISBN: 1449392431 Publisher: Make
Publication Date: 2011

Title: Making Things Move
Author: Dustyn Roberts
ISBN: 0071741674
Publisher: McGraw-Hill/TAB Electronics Publication Date: 2010