Readings Support Doing!

The links below should get you started. Links to online readings open in a new window or tab, so you can get back to this list easily by closing the new window or tab. You will find additional links, for offsite readings, organized by subject area in the "Bookmarks" area of the course website.

Some readings (shown in parentheses) are "suggestions"—recommended but optional. [Accordion] [Tabs]

Wk 1

Week 1: Simple Coding on the desktop/laptop

Please try to do these readings BEFORE class each week, as we will refer to them in discussion, lecture, or lab.

For Discussion

Architectronics • Good intro and some architectural examples.

Theory (optional)

Responsive Environment • Good intro and some examples, more social than architectural.
(A Beginners Guide to Physical Computing) • a source for basic ideas and suggestions.

Processing Fundamentals (optional)

Processing.org • All things "Processing" - easy programming for visual results.
Processing Introduction • (borrowed from another course)

The Bouncing Ball seed sketch, through which we looked at Processing animation and drawing.

Back to top

Wk 2

Week 2: Vision and Meaning


Designing for Change • Short and broad high-level paper.

Working with vision (cameras) can be difficult on several fronts-- the volume of data encountered at 30 or 60 frames per second, recognizing what has changed between frames (not "everything"), and understanding what it might mean (intruder? fire? cloud?).

The Processing Video Library We want to pay attention to the CAPTURE methods, not the Movie methods.
A nice video intro to Processing Video operations.

Code in Search of Meaning

FrameDifferencing One of the sample sketches included with Processing. Look at it and see if you can think of some ways to extend it to do more than recognize "change" -- like the amount of change, the direction of movement, or the location of movement.

Back to top

Wk 3

Week 3: Electricity without shocks


Class Notes • "Short Circuits"


A Beginners Guide to Physical Computing • a source for basic ideas and suggestions.
All About Circuits • "OHM's Law"

To "Blinky" and Beyond!

arduino programming notebook • Read through about page 18 now, and the rest next week.
Sparkfun Inventors Guide • everything through "Circ 01" (page 08)
A basic background for project documentation/note-taking • Download and edit, or print and scan ...

Back to top

Wk 4

Week 4: Analog I/O, Interrupts, and bitwise operations


"We Interrupt this Program ..." • Intro to interrupts on the Arduino (with simple examples of external and timer-based, and no bit-shifts)
Sketch::Interrupts_both • A demo/sample implementing both kinds of Arduino interrupt. Study it. (It blinks one LED on pin 10 at regular intervals, and lets a switch (on pin 2) control the other one (pin 13), turning it ON and OFF).
Blog::How To: Arduino Interrupts • A pretty digestible discussion, but too many ads.

Analog Output & bitwise ops

PWM (pseudo analog) output • How an On/Off device makes "in between" happen.
Bitwise Operations • An attempt to contextualize and explain a murky subject.

Back to top

Wk 5

Week 5: Cooperating Computers (aka "Big Brother")


The Coming Age of Calm Technology (1996) • The paper that labeled the subject of "calm technology" or "ambient media".
Tangible Bits (1997) • Oft-cited catalog of MIT media-lab projects that use peripheral awareness and tangible interaction.

The Arduino is a complete computer system, with memory, central processing units, and peripherals (shields, certain sensors, etc.). However, we develop applications by compiling them on a traditional laptop or desktop and then transferring the executable application to the board, so we know we can use the USB cable as a communications channel. This week we'll look at how we can use the Arduino as a smart instrument cluster, but do the "real" computing on the lap-/desk-top by developing the "logic" on the laptop.

The Arduino Library for Processing (and Firmata) • Making the Arduino an extension of Processing
Guide to Arduino and AVR Communications • A thorough (geeky) but concise overview of 'communications' without too much detail. It's not all relevant right now, but it's available.


The Arduino IDE includes (File > Examples > Firmata > StandardFirmata) a sketch which turns the Arduino into a slave device for software on your laptop. If you upload it to the Arduino you can use Processing (link above) to write "sketches" (same name) on your laptop that use the Arduino as a slave device. Try a simple "blinkblink" sketch to start with.

Back to top

Wk 6

Week 6: inMotion (part 1): Mechanisms & Servos

There are challenges in making things that move—sensing, circuitry, logic, but also fabrication, momentum, power, and friction—so we're going to take two weeks for this project.


Mechanical Advantage Refresher! One of the primary uses of gears is to change how fast something spins, and in the process change how much torque it delivers.
Introduction to Mechanisms Good general info is hard to find. One reason attraction of the laser-cutter is making your own gears, but gear design turns out to be fairly complex. I'm still working on simplified tools to help. In the mean time you can take a look at the full-depth-complexity if you want.
Inductance Make sure you understand the physics principle that currents create magnetism and magnetism creates currents. Om?

If you know a little bit about Grasshopper, it is also possible to control an Arduino using a plugin called FireFly.

Grasshopper • All things "Grasshopper" (way TMI if you've never met)
The Firefly website • another way to remote-control an Arduino.


Here's your opportunity to get creative! At the 'dead simple' end, use a servo to turn a needle and indicate temperature or something. If you're drawn to laser-cutting and have AutoCAD or Rhino skills, you might construct a set of gears, cut them, and see how they work. How about a steerable web-cam mount for a GoPro or iSight camera? Two steppers or servos, some mechanism, and some logic and you should be good to go.

Back to top

Wk 7

Week 7: inMotion (part 2): Motors, Solenoids & Steppers


Electric Motors Way too much information, probably, but repeated visits may help understand a bit more. We're concerned with DC motors and stepper-motors.
Stepper Motors They can be quite complicated. We're looking at "unipolar" steppers and will generally use a controller board and a library to simplify things, but some background might be helpful.
Adafruit Motor Selection Guide Simple explanations of different kinds of motors available and important issues in their selection.

Starting Points

SIK Guide (v3) Circuits 8, 12, 13 • At the very least, read through these, including the sample code, but even better would be to build them.
Adafruit Motor Selection Guide Simple explanations of different kinds of motors available and important issues in their selection.

Back to top

Wk 8

Week 8: Project Time


Back to top

Wk 9

Week 9: The Big Picture


Sensing produces data, and data can be used in many, many different ways. The readings here will expose you to some more ideas about what we can do with that data.

"Responsive Environments ..." • A (VR-centric) definition of Responsive Environments.
Zaragoza's Digital Mile • An interesting collection of RE proposals.
Architecture as Science • Smart Walls, eInk, etc (odd title).

Starting Points

Journal of Ambient Intelligence and Smart Environments • Some free papers. Read one.
Ulster's Smart Environments Research Group • One (largely CSE) research group.
MIT Media Lab's Responsive Environments Group • Another academic take.

Back to top

Wk 10

Week 10: The End is Near!

No more reading! You should be almost done with your final project by now, so we'll leave time for you to work on that.

Back to top