Tom's Main Menu

Physical Computing Home

Intro to Physical Computing Syllabus

Networked Objects

Sustainable Practices

blog

Resources

code, circuits, & construction

my del.icio.us links

 

Introduction to Physical Computing

Summer 2006

Instructor: Tom Igoe
Tuesday & Thursday 6:30 - 9:25 PM
Office Hours: Tuesday & Thursday 3:30 - 6 PM (email me to make an appointment)


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: Basic Electronics, Intro to microcontrollers

  • Class 1:
    • Introductions, Class structure
    • Digital vs. Analog, Serial vs. Parallel
    • Intro to Electronics: Definition of components, reading a meter, reading a schematic, Ohm's Law
    • Microcontrollers: what they are, different types, levels.
    • Phys Comp book introduction, chapters 1-3
  • Class 2:
    • Soldering (thanks to Jeff Feddersen for the link)
    • Intro to the microcontroller
    • Microcontroller programming in Arduino
    • Digital Input and Output
    • Phys Comp book chapters 4, 5, half of 6
  • Lab Assignments for week 1:
    • Lab Assignment: Electronics
    • Lab Assignment: first Arduino program
    • Attend a Tool safety session in the shop
    • Join the physcomp listserve
    • Start your phys comp journal, email me the URL.
  • Background readings for week 1:

Week 2: Analog and Digital input, memory and variables

  • Class 3:
    • SEROUT2: debugging messages to the desktop
    • Memory and variables: Decimal, binary, hex.
      • Memory registers on the Arduino
    • Analog input, what an ADC is.
    • Analog input in Arduino
    • Phys Comp book chapter 6, second half
  • Class 4:
  • Lab Assignments for week 2:
    • Lab Assignment:Analog in; tracking changes with variables
    • Lab Assignment: servo/analog out
  • Background readings for week 2:
    • Myron Krueger, "Responsive Environments", in Packer & Jordan, Multimedia: From Wagner to Virtual Reality, ch. 12, pp. 104-120.

Week 3: Serial Communication

  • Class 5:
  • Class 6:
  • Lab Assignments for week 3:
    • Lab Assignment: getting the bytes to a terminal program
    • Lab Assignment: Talking to Processing
  • Background readings for week 3:
    • Norman, Design of Everyday Things, ch. 1

Week 4: Movement

  • Class 7:
    • Show midterm projects
    • Transistors and Relays: switching higher-current devices
    • Sensing Movement
    • Phys Comp book chapter 9
  • Class 8:
    • Motors and other inductive devices
    • Phys Comp book chapter 10
    • Discuss final project ideas
  • Lab Assignments for week 4:
    • Lab Assignment: DC Motor Control (optional)
  • Background readings for week 4:
    • Nørretranders, User Illusion, ch. 6, "The Bandwidth of Consciousness"

Week 5: Project Development, Extra Topics

  • Class 9:
  • Class 10:
    • TBA depending on class interests
  • Lab Assignments for week 5:
    • Talking to a MIDI device  (optional)
    • Show final project in progress
  • Background readings for week 5:
    • Hoffman, Visual Intelligence, ch. 7, pp.172-184

Week 6: Present finals

  • Class 11:
    • Workshop final projects
  • Class 12:
    • Show final projects
  • Lab Assignments for week 6:
    • Finish final project!

Lab Assignments:

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. I suggest working together with others from the class, as it makes the process more enjoyable (and often quicker).

Each class, a random number of people will be picked to show what they have been working on in the lab. Unless the class is small enough, we will not look at everyone's project every session, but everyone will show work from the lab at least a few times during the semester.

Midterm and Final:

Every student will complete a midterm project and a final project, an original application of some of the ideas covered in class. Students may work alone or in groups. If you work in a group, every member of the group will be expected to know how the whole project works, and to explain the work that both you and your partner or partners have done on the project.

It's likely that your final project may be an expansion of your midterm project. That's great, as long as there's significant refinement of the project from midterm to final. You may also choose to do a new project for the final. if so, make sure to talk to me in advance so that I can help you determine whether it's realizable in the time given.

Midterm and final projects will be shown in class. You must be able to set your project up, demonstrate it in action, and take it down in class.

Journal & Documentation:

You will be expected to keep an online journal of your work in this class. Think of it as a letter to the next group to take this class: the tricks you found that work, the pitfalls you hit, ways around them, code samples that you find useful, sources for materials, reference material, etc.

It can be no-frills HTML Pictures are helpful, but not strictly necessary. Blogs and wikis are fine. Here's a template you can use. Areas you should consider for each project are detailed in the template. If you don't have much experience making websites, you might consider something like TypePad, which is a blog hosting service that lets you set up an online journal with remarkably little HTML work yourself. Or consider WordPress, Blogger, or Bloxsom. Please do not build your site in Flash, Shockwave, or other tools that are not text-searchable. Ideally, it will give you a head start on documenting your projects for future portfolio reference, and those who come after you a place to look for advice.

A journal entry is part of the assignment for each project you do, at the least. Feel free to do more entries as you see fit. These will be added as links to the class site.

Work on this as you go, don't put it off until the end. I'll be reading your journals as the class progresses. Your fellow classmates will find your notes as useful too.

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.

Grading:

  • Participation & Attendance: 15%
  • Lab Assignments: 25%
  • Journal: 20%
  • Midterm: 15%
  • Final: 25%

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. Late attendance affects your grade adversely. 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 afterward.

Please turn in assignments on time as well. For every week an assignment is late, it loses a letter grade, e.g. 1 week late means a maximum possible grade of A-, 2 weeks is a maximum B+, and so forth.

Laptops

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, or if I'm introducing new material on which you want to take notes. During class discussions, or when your fellow classmates are presenting, 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.

Parts

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.

 Books

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.

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 Craw ford, ©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.