Syllabus Spring 2014

Wednesday 3:30 – 6:00PM

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.

Assignments:

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. Unless otherwise stated, use the class blog, so we are all in the same place.

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 29

  • Connected devices communication patterns
  • A little history
  • Intro to the command line, and linux, curl, package managers, etc.
  • HTTP GET, POST
  • REST
  • Brief intro to Embedded linux boards
  • Bluetooth, Wifi, ANT, etc

Reading for next class: 

Assignment for next class:

Blog for next class:

  • Fill out the class background questionnaire online.
  • Write a brief introductory blog post on the class blog about the connected device or devices you’re most interested in, and why. How are these devices part of your life currently, or how do you imagine them as a part of your life in the future?

Class 2

Feb. 5

  • Discuss reading
  • Show simple navigation devices.
  • Review of HTML/CSS/JavaScript and the Document Object Model (DOM)
  • More on command line questions
  • Brief intro to the Arduino Yún
  • Basic system diagrams for connected device systems
  • Interface basics: buttons, indicators, etc.

Reading for next class:

  • Browse Dash’s website to get background on next week’s speakers.  Read also the TechCrunch article on Dash.
  • 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

Assignment for next class: Client-side device controller

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

Class 3

Feb. 12

  • Guest speakers: Jamyn Edis and Brian Langel, Dash, 4 PM
  • Show Client-side controllers
  • Node.js and node-serialport
  • Basics of routes and HTTP calls using JQuery/Zepto.js

Reading for next class:

Assignment:  Connected Physical Prototype Due in Class 5

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

Class 4

Feb 19

  • Discuss reading
  • More on routes in Express.js
  • Websockets using socket.io
  • Connection indicators: connected/disconnected, negotiating contact, transmitting, receiving, etc.

Reading for next class:

Assignment for next classGet yourself up for PhoneGap development on Android or iOS as needed. If you’re an iOS person, see or email Marlon Evans for access to the ITP iOS developer account.

Blog Assignment for next class:  Product review assignment, week 3. Bring your product back in next week for someone else to review.

Class 5

Feb. 26

  • Discuss reading (Greenfield, et al)
  • Show connected physical prototype projects
  • PhoneGap: HTML as interface for palm and tablet devices

Reading for next class: Finish reading Greenfield

Assignment for week 8: PhoneGap app

Blog Assignment for next class:  Product review assignment, week 1, second round. Take a new product home.

Class 6

Mar. 5

  • Continue discussing reading
  • Guest: Don Coleman: Bluetooth LE

Reading for next class: 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.

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

Class 7

Mar. 12

  • PhoneGap and Bluetooth Serial
  • Final Project Concept Development

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 your partners, work out your final project concept, and prepare an initial concept presentation for March 26.

Blog Assignment for next class:

  • Product review assignment, week 3, second round. Finish up and bring your products back next week.
  • 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. 26

  • Present PhoneGap controllers
  • Final Project Concept presentation
  • More on Arduino Yún: client and server calls
  • Cloud Services for connected devices

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.

Class 9

Apr. 2

  • Reviews of cloud platforms
  • Final project interaction narratives

Reading for next class: ThingSystemRevolv, AllJoyn, Berg Cloud

Assignment for next class:

  • Cloud platform reviews, second set
  • 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

Apr. 9

Tom Out Of Town – No class

But Alex talked of organizing a class together just to work.

Class 10

Apr. 16

  • Reviews of cloud platforms
  • 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. 23

  •  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 30

  • 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

May 1  – Meet in Room 20

  • 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 7

  • 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.

 

Grading

  • 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.

Laptops/Tablets

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.

If you’re working in a group, all group members should be present, and should participate equally in the presentation.

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 that 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.

Documentation

Use the class blog to record your progress. For reading assignments, respond to the reading in a blog post, 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, give each project a page, and update that page as needed. 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