Tom's Main Menu

Physical Computing Home

Intro to Physical Computing Syllabus

Networked Objects

Sustainable Practices



code, circuits, & construction

my links


Introduction to Physical Computing

Fall 2005

Instructor: Tom Igoe
Section 3: Wed, 9:30AM - 12PM
Section 4: Wed, 3:30 - 6PM
Office Hours: Thursdays, 9AM - 6PM. email me to set up an appointment, please.


Physical Computing is an approach to learning how humans communicate through computers that starts by considering how humans express themselves physically. In this course, we take the human body as a given, and attempt to design computing applications within the limits of its expression.

To realize this goal, you'll learn how a computer converts the changes in energy given off by our bodies (in the form of sound, light, motion, and other forms) into changing electronic signals that it can read interpret. You'll learn about the sensors that do this, and about very simple computers called microcontrollers that read sensors and convert their output into data. Finally, you'll learn how microcontrollers communicate with other computers.

Physical computing takes a hands-on approach, which means that you spend a lot of time building circuits, soldering, writing programs, building structures to hold sensors and controls, and figuring out how best to make all of these things relate to a person's expression.

Week 1 (Sept. 7):

Week 2 (Sept. 14):

Week 3 (Sept. 21):

  • Memory and variables: Decimal, binary, hex.
  • Analog input, what an ADC is.
  • Presentations Due: observation project: Present location and observations.
  • Assignment:
    • Lab: Analog in; tracking changes with variables; practical jokes
  • Reading:
    • Norman, Design of Everyday Things, ch. 1 (in coursepack)
    • Norman, Emotional Design, Chapter 1, "Attractive Things Work Better".

Week 4 (Sept. 28):

  • Analog output: Devices that create analog motion or sound. (servo, freqout, PWM)
  • Presentations Due: Observation project; show final prototypes
  • Assignment:
  • Reading: Myron Krueger, "Responsive Environments", in Packer & Jordan, Multimedia: From Wagner to Virtual Reality, ch. 12, pp. 104-120. (in coursepack)

    Week 5 - (Oct. 5):

    Week 6 (Oct. 12):

    • Code approaches: State machines, pseudocode, using subroutines well
    • Presentations Due: device/instrument/tool project initial prototype
    • Assignment:
      • Advanced prototype of device/instrument/tool project
    • Reading: Nørretranders, User Illusion, ch. 6, "The Bandwidth of Consciousness" (in coursepack)

    Week 7 (Oct. 19):

    Week 8 (Oct. 26):

    • Presentations Due: device/instrument/tool project (all projects to present)
    • Assignment:decide on which project you want to re-do for your final; be prepared to talk about it next week.
    • Reading: Applications: TBA

    Week 9 (Nov. 2):

    • MIDI and other control protocols
    • Begin Final Project (group or individual)
    • Reading: Hoffman, Visual Intelligence, ch. 7, pp.172-184 (in coursepack)
    • Assignment:
      • Lab: Talking to a MIDI device 

    Week 10 (Nov. 9):

    • Video Tracking
    • Presentations Due: Present final project concepts. Show observations
    • Project workshop

    Week 11 (Nov. 16):

    • Presentations Due: Final Project: show technical research (projects selected at random)
    • Synchronous serial or other topic TBA at instructor's discretion

    No class Nov. 23: Monday classes meet this day

    Week 12 (Nov. 30):

    • Presentations Due:Final: show prototypes and user research (projects selected at random)

    Week 13 (Dec. 7):

    • Presentations Due:Final Project Presentation (half of projects)

    Week 14 (Dec. 14):

    • Presentations Due:Final Project Presentation (half of projects)

    Lab Assignment:

    There is a lab activity for nearly every class in the first half of the semester. They are very short, simple activities. These are the basic steps you need to go through to understand the principle discussed in class each week. They're designed to help you not only to understand the technical details, but also to get a feel for what the technologies we're discussing can do, so that you can incorporate them into actual applications. There are application suggestions in many of them as well. I expect that each student will at least complete the steps outlined in the lab activity each week, so that you understand practically what it is we're talking about. Document any discoveries you make, pitfalls you hit, and details not covered in the class or the lab that you think will be useful for your fellow students and future students in this class.


    There are two production projects and one observation project during the semester. In these projects, you will observe and document a possible situation in which you might use physical computing techniques and develop a prototype to fit the situation. In the production projects you will also test it and report on it.

    For the first two projects, you will be assigned to work in a group. For the other project, and for the final, you may work alone or in groups, as you choose. There will be four to seven assigned groups, depending on class size.

    More details on the projects can be found in the project brief.

    Journal & Documentation:

    You are expected to participate in the class' online journal, which takes the form of a collaboratively-edited wiki. The purpose of the journal is two-fold. First, it is a valuable way for you to communicate to me that you are keeping up with the work in the class. I will read the journal to see how students are doing, and the journal should be updated regularly throughout the semester. At a minimum, reference to each week's work is expected, as well as reference to the readings, and thorough documentation of the three main projects and technical research. You may choose to document your major projects in a separate individual or group site if you choose, but you will be expected to link your site to the main site, and contribute to the class site as well nonetheless. Please avoid flash, shockwave, or other sites that are not text-searchable, as they won't show up on search engines for others to use.

    Blogs are great for documenting your process, as they're usually defaulted to organizing the information chronologically. However, projects summarized in a blog can be confusing. It's often worthwhile to set up a separate page or pages to summarize your projects when they're done.

    You should document your projects thoroughly. Plan in advance, and perhaps as a group, to have what you need to document at least your midterms and finals. Photos, video, drawings, schematics, and notes are all valuable forms of documentation. Explain the project at the beginning of your documentation, so that people who come to the site from outside this class will understand the overview before they get the explanation.

    Don't overload your notes with code. If you've made a big improvement on an existing piece of code, post your new code, and link to the code you based it on (just as you would in citing a pervious 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.

    Always cite the sources of your code, the places you learned techniques from, and the inspirations of your ideas. This is the equivalent to citing your sources in a written paper, and 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 you learned from or were inspired by.

    Work on this as you go, don't put it off until the end. Your fellow classmates will find your notes as useful too.

    See the template with areas you should consider for each project.

    A few good recent sample journals:

    • Jason Babcock's journal These are notes Jason kept throughout his time at ITP. Each section covers the technical details of a specific project. Sometimes the task is part of a larger prohect, and sometimes it's a project in itself. This is an excellent example of how to document the tech details of your projects.
    • Geraldine Sarmiento Geraldine's is a good example of a recent physical computing journal. Her notes on her process are clear even if you don't know the project, and she includes photos and code samples where necessary.
    • John Schimmel John's journal offers good explanations of all of his projects. You can see that, like Geraldine's, his journal is in reverse chronological order, perhaps because of the way his blog software defaults. But his post titles are descriptive, so you can skip around and know a bit about what you're getting.
    • Saranont Limpananont Though his journal is not for the physical computing class, Nont's journal is an excellent example. He combines thoughtful critical reading notes, details on his technical process, and clear descriptions of his projects. His documentation of Physical SimVillage is a good example of a summary of the project that's independent from his working notes.
    • Sasha Harris-Cronin (see the Constructions link). Sasha details how she's made her project very nicely. Her explanations and parts lists make it clear how to make your own.
    • Jen Lewin's Blueink site (see the physical computing link). Jen taught this class a few years ago, and her syllabus is still helpful. Her documentation of her own projects is good too.
    • Many others


    • Participation & Attendance: 20%
    • Lab Assignments: 15%
    • Observation Project: 10%
    • Project 2: 15%
    • Final: 20%
    • Journal: 20%

    Participation & Attendance

    Showing up on time, engaging in the class discussion, and offering advice and critique on other projects in the class is a major part of your grade. Please be present and prompt. Lateness will hurt your grade. 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 assignments on time as well.


    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, however, please keep your laptop closed. The quality of the class depends in large part on the quality of your attention and active participation, so chat live with your classmates in an old-school, oral way.


    A list of parts needed for the first few weeks follows. You will end up spending money on materials in this class. It can be done reasonably inexpensively, by scavenging parts, reusing parts, and so forth, but more ambitious projects inevitably make demands on your budget.


    Below are recommended texts for the course in general. Individual instructors may have their own recommendations as well. All of them are good inspirational guides for physical computing and computing in general. They are not assigned, but pick up at least one of them and incorporate it in your midterm journal, if nothing else.

    Physical Computing: Sensing and Controlling the Physical World with Computers, Dan O'Sullivan and Tom Igoe ©2004, Thomson Course Technology PTR; ISBN: 159200346X
    Includes all the stuff covered in class and lots of advanced examples as well. This book was developed from this course, so if you're looking for a textbook, this is it.

    The Design of Everyday Things, Donald A. Norman ©1990 Doubleday Books; ISBN: 0385267746
    If you design at all, or work with people who do, read this. A lucid approach to the psychology of everyday interaction and how the objects we deal with could be better designed to match the strengths and weaknesses of the way we think. His predictions about physical interaction design and information design, some accurate and some not, are interesting history lessons eleven years after the first edition.

    The User Illusion: Cutting Consciousness Down to Size, Tor Nørretranders ©1998 Viking Press; ISBN: 0670875791
    Makes the case that much of our experience of the world does not come to us through our consciousness; in fact, the majority of it dealt with pre-consciously.

    The Art of Interactive Design, Chris Crawford, ©2002 No Starch Press; ISBN: 1886411840
    Written in a very casual style, this book nevertheless is an excellent and concise summary of what interaction design is, why it is important, and what problems it brings with it. Anyone seriously interested in interaction design, physical or not, should read this book.

    The following are good references for electronics hobbyists. Take a look at both, and get one or the other as a general reference, or find an electronics reference of your own (a few more are listed in the books section of the site).

    Getting Started in Electronics, Forrest M. Mims III, ©1983, Forrest M. Mims III
    A very basic introduction to electricity and electronics, written in notebook style. Includes descriptions of the basic components and what they do, and how they relate to each other.

    Practical Electronics for Inventors, 1st Edition. Paul Scherz, ©2000, McGraw-Hill Professional Publishing; ISBN: 0070580782
    A more in-depth treatment of electronics, with many practical examples and illustrations. An excellent reference for those comfortable with the basic topics. The use of plumbing systems as examples to demonstrate electric principles makes for some very clear illustrations of how different components work. Good chapters on sound electronics and motors as well.

    A longer list of books for inspiration and reference is available online at the books link.