Syllabus Spring 2015

Wednesday 9:00 – 11:30AM

Tom’s calendar of office hours

The World Wide Web no longer stops at the edge of your screen. When it comes to products, if it powers up, it talks to another device. There’s an increasing number of appliances coming on the market that feature web interfaces, but do they work well? This class take a hands-on critical look at the emerging market for connected devices, and will present an overview of methods for connecting the physical world to web-based applications. We don’t interact with connected appliances in the same way as we do when they’re not connected. It’s not enough just to bolt a touchscreen on an appliance and call it networked. In this course we’ll consider what the emerging interaction patterns are, if any, and we’ll develop some of our own as needed.

This class can be seen as a narrower and more interaction design-based complement to Understanding Networks. The latter class provides a broader overview of the dynamics of data networks, while this class focuses specifically on the challenges of connecting embedded devices to web-based services. Neither class is a prerequisite for the other, however.

The class will begin with a review of some existing connected devices on the market, in which we’ll critique them as products of interaction design. Then we’ll have several short exercises to introduce different tools, and a final hardware and software production project in which students develop a more fully realized networked device.

Prerequisites: Intro to Physical Computing, Comm Lab: Web, and Intro to Computational Media, or equivalent experience with the topics covered in those three classes.

General Structure:

We’ll start each class with a review of any homework assignments, readings etc. Come prepared to present when you have an assignment due, and come having done the reading and prepared to discuss and ask questions when a reading has been assigned.

Following the homework/reading review, we’ll discuss new material. This will cover both programming and design techniques as well as general topics related to the class. There will likely be one or two guest speakers, TBD.


There are several homework assignments that illustrate the technical topics. You should be prepared to show your project on any week in which an assignment is due.

Commenting on each others’ work: When watching your classmates present their work in class, we’ll make some time for verbal comments, but you should take written notes on their presentations and on their interaction with their intended user. Offer suggestions on what they do well and should continue doing, what they should stop doing, and what they could add to their work and/or their presentation to make it better. Give them these notes at the end of class, or comment on their project page online. You’ll be getting the same notes from your classmates, so write in the same voice in which you’d like to hear feedback on your own work.

Blog assignments are assigned throughout the course, on a variety of topics. They should be finished a day in advance of the day we will discuss them; in other words, if we’re discussing them Wednesday, finish them by Tuesday. For reviews, use the class blog, so we are all in the same place. For group projects or individual projects, feel free to blog externally and link to the project page.

At the very least, you should have a page for each assignment. For the readings, if no one else has blogged it, start a new post. If there’s already a post, you can either comment on existing posts or add your own.

Read and comment on each other’s writings as well.

Class 1

Jan 28

  • Introductions
  • A little history
  • Intro to the command line, and linux, curl, package managers, etc.
  • OSI architecture
  • Intro to the command line (if needed and if time permits)
  • REST

Reading for next class: 

Assignment for next class:

Class 2

Feb. 4

  • Show simple navigation devices
  • Review of HTML/CSS/JavaScript and the Document Object Model (DOM)
  • Hardware device types (Designing Connected Devices, chapter 2)
  • Network architectures (Designing Connected Devices, Chapter 3)
  • Basic system diagrams for connected device systems
  • Interface basics: buttons, indicators, etc.

Reading for next class:

  • Download and install node.js
  • Check the Reading page for background material on node, especially “What is Node.js?” Browse the referenced books on node to find ones comfortable with your learning style, as you need.
  • Get to know Express.js, particularly the request and response parameters, and the middleware body parser
  • Designing Connected Products, ch 4, 7, 8

Blog Assignment for next class: Product review assignment, week 1

Class 3

Feb. 11

  • Node.js and node-serialport
  • HTTP calls from the client in JS
  • Intro to the Arduino Yún

Assignment for next class: Lighting Controller, week 1

Blog Assignment for next class:  Product review assignment, week 2

Reading for next class:

Class 4

Feb 18

  • Present Lighting Controller browser interfaces
  • APIs: Hue, Wink, SmartThings, etc.
  • Control of lights through hubs
  • Express.js and routing

Reading for next class:

  • Designing Connected Products ch 9, 10

Assignment for next class: Lighting Controller, week 2

Blog Assignment for next class:  Product review assignment, week 3.

Class 5

Feb. 25

  • Present Lighting Controller system connections
  • Discuss Hub Platforms and APIs: compare and contrast
  • Websockets using

Assignment for next class: Lighting Controller, week 3

Blog Assignment for next class:  Hub platform review assignment

Class 6

Mar. 4

  • Present Lighting controller final
    • Guests: Nathaniel Padgett, Quirky; TBA, Wink
  • Wireless overview:
    • Bluetooth
    • Bluetooth LE
    • Wifi
    • Ant, ZigBee, ZWave, etc
    • RFID, NFC

Reading for next class: 

  • Sterling, The Epic Struggle for the Internet of Things
  • Designing Connected Products, ch 11
  • Each others’ blog posts. By now you’ve had plenty of external reading, and should have written a few comments about them, in addition to your product reviews and project notes. Read and comment on each others’ posts,  product reviews, reading notes, and projects.

Special Session: March 7, 12PM – 5PM

Don Coleman will present a hands-on workshop on Bluetooth LE at ITP. Don’s the author of many of the tools we’re using in this class, and an expert on NFC and Bluetooth LE, among other technologies. This workshop will be an intensive hands-on introduction to Bluetooth LE. Sign up for at least the overview here, and if you’re interested in trying things out in depth, stay for all three sessions.

Class 7

Mar. 11

  • Discuss non-technical readings
  • Final Project Concept Development

For the first half of this class, we’ll talk about the various topical readings we’ve been through this semester and have a discussion about the big picture: where is it all going and how does it intersect with the life we want to live?

In the second half of this class, we’ll brainstorm many different concepts, then break into groups to examine how useful they are, and how feasible. Each person should come in with three different ideas for a possible connected device system, in three sentences or less each. We’ll put them all on the board, compare them, sort them, and identify a subset of the most promising ones. Then we’ll decide on groups based on everyone’s stated interest in the concepts.

Assignment for next class: With partners, work out your final project concept, and prepare an initial concept presentation for March 25. Work in groups of 3-4 for the final project.

Blog Assignment for next class:

  • Set up your initial project page. Describe your project concept in one paragraph. List all collaborators, and explain the areas of realization for which each of you will be responsible.

Spring Break: March 17 – 23

Class 8

Mar. 25

  • Present final project concept
  • Intro to Cordova/PhoneGap

By this class, you’ll  have worked out who you’re working with for final project, and you’ll present your project idea.

Reading for next class: 

Assignment for next class:

Blog Assignment for next class: Post your user interaction narrative.

Field Trip: Mar 26

On Feb 26 from 1:00 – 2:30 (the block where there are no classes) we will take a field trip to Quirky’s offices, get a tour and have a Q&A session. The address is 606 West 28th Street, 7th Floor. Please plan accordingly so that you are at their offices by 12:15, so we are all ready on time.

Class 9

Apr. 1

  • Present final project usage narrative
  • More on Cordova/PhoneGap
    • Bluetooth Serial, Bluetooth LE
  • Standards and alliances

Assignment for next class:

  • Prepare a system diagram, indicating what physical devices are used, what network transactions are involved, and what programs are running on each device.
  • Prepare an initial bill of materials

Reading for next class: Designing Connected Products, ch 15

Class 10

Apr. 8

  • Present final project system diagrams and initial bills of materials
  • Writing test software agents

Assignment for next class: Build alpha versions of software and test programs. When test programs work, test alpha software on users.

Class 11

Apr. 15

  •  In-class software tests.  Present initial software versions for testing. We’ll test on each other in parallel in class. When you are acting as a tester for someone else’s project, or watching someone else test, take written notes. 

Blog assignment for next class: Read the project pages of the project you experienced in class, and offer feedback on their project pages. Your comments should be aimed at helping them to clarify anything that you experienced that’s different than the documentation describes.

Assignment for next class: Build hardware test programs. When test programs work, test hardware functions on users.

Class 12

April 22

  • FInal project workshop session. Bring in your projects and questions, we’ll work in parallel to solve them, comparing notes where needed, to get final projects running.

Class 13

April 29

  • System user tests. We’ll test on each other in parallel in class.
  • Your system should be operational by this day.  You’ll get one more chance to show it next week, but you should have something running today to test on your classmates.

Assignment for next class: Final presentation and documentation. Put it all together and document it.

Class 14

May 6

  • Final  presentations and revisions. If you had a successful user test/demonstration last week, you can present documentation or summary thoughts. If you didn’t, you’ll show it working today.
  • Review what we’ve covered, final questions and thoughts.



  • Participation & Attendance: 40%
  • Production Assignments: 30%
  • Documentation/Blogging: 30%

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 contact 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 and tablet 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 please respect that, close your lid, and pay attention.

Mobile Phones

Please put them on vibrate or turn them off before you come to class unless they are part of your project. If you have an emergency that requires you to answer your phone during class, please tell your instructor ahead of time.

Production Assignments

For production assignments, you’ll be expected to present your project in class on the day that it’s due. When you have an assignment or presentation due, show up to class on time. You may be called on first.

Working in Groups

If you’re working in a group, all group members should be present, and should participate equally in the presentation. Each member should be knowledgeable about all aspects of the work enough to explain that aspect to an audience, whether you did that particular part of the project or not.

For the group assignments, each group should assign a member to take responsibility for one or more aspect of the project, e.g. software/firmware, user interface, interaction, hardware, fabrication, documentation. You may want to break it down further than that, but those are good starting areas.

Being responsible for an area doesn’t mean you are doing all the work in that area. It means you’re keeping track of that area’s progress and working with your partners to make sure it’s on track. When a decision needs to be made in that area, you’ll decide and communicate it to the others, and you’ll all act on it accordingly. If things are lagging in that area, you should work with your group members to address the problem, and in the absence of other ideas, they’ll look to you for a decision on how to proceed. It also means that in class presentations, you’ll report on that area. Decide who’s responsible for what early on, and post it to your group’s project page, so the whole class knows.


The class blog is here to record your progress and to keep a record for future classes. For review assignments, use the class blog so we have them in one place, and respond to each others’ posts as well. At the very least, make sure you’ve read your classmates’ posts before a reading assignment is due, so you can comment knowledgeably or ask questions of each other in class.

For production assignments, you can either use the class blog or your individual sites. Regardless of which you do, give each project a summary page on the class blog, at least. This makes it possible for future classes to search past projects. If you’re keeping your documentation on an external site, make sure links to that external site are included and updated on your project page.

Leave a Reply