"Joy is a well-made object, equaled only to the joy of making it."-a Canadian Native American tribe saying, as quoted by Mark Fraunfelder (author, co-founder of BoingBoing , & editor of MAKE Magazine)


This class is about making, being creative, taking risks. We will make to learn and learn to make. We will use materials to help us think and to push our own boundaries of what interactive computing is and could be. I taught this class once before: It was, by most accounts, a success (I think!). I learned a lot. The class learned a lot. Most importantly, along the way, we had fun together, we made interesting things, and we helped each other (peer learning ftw).

As another indicator of success, the aforementioned Fall2012 class generated one MS thesis topic, one PhD thesis topic, and two publications (with more to come!). In addition, the instructables posted for the final project have garnered over 74,265 views and have been favorited 317 times (as of Jan, 2014) including HandSight (9,330 views, 58 favorites), indoor/outdoor tracker (33,642 views, 88 favorites), x-track music visualizer (7,150 views, 63 favorites), and the HCIL Hackerspace interactive living wall (22,613 views, 98 favorites). I hope for a similar diversity of compelling ideas and successes this year!

I will state up front: in this class, I do not have all the answers (note: I never do but particularly not in this class). I am learning with you. I am pushing myself to learn new things. You should too. So, it's likely that we'll experience some failures along the way. A mini-project might fail. My lectures might fail. But that's OK. Failures can often lead to accidental innovation and they most certainly help you learn. If you don't fail sometimes, you're not trying hard enough. :)

Course Overview

In this course, we will explore the materiality of interactive computing. In the words of Hiroshii Ishii, we will seek to "seamlessly couple the dual worlds of bits and atoms." This is a particularly interesting time to survey and explore the space between atoms and bits because of three, interrelated technology trends:
  • The recent emergence (or reemergence) of the DIY/Makers movement, which has led to widespread opportunities to interface and work with hardware that has rather low barriers of entry (e.g., the Arduino) and provide new opportunities for tangible interaction;

  • The pervasiveness of powerful mobile computers in the form of smartphones and tablets that are constantly on and nearly constantly with us and imbued with a rich array of sensors such as accelerometers, gyroscopes, and location-sensing that allow for new types of off-the-desktop interaction;

  • The "hardware renaissance" in Silicon Valley (and other places) that is fostering a renewed culture of hardware-oriented products and ideas such as the FitBit,, the Lytro, the Pebble Smartwatch, Nest, Microsoft's Kinect, theNike Fuelband, and low cost flying drones such as the AR.Drone.

Taken together, we can no longer simply consider the GUI and WIMP interfaces as primary interaction models for computing. We must explore new spaces of interaction that are, in part, enabled by the above three points.

Note: this is the second offering of this course and, as a result, things will be rather experimental. In addition, the course is not currently an MS or PhD comps (qualifying) course for CS graduate students. It can serve as an elective, however.

Professor: Jon Froehlich
Assistant Professor, Computer Science
CS Office: 3173 AV Williams
HCIL Office: 2117F Hornbake
Office Hours: by appointment. I will also be available for 60-90 minutes after Wednesday sandbox days in the HCIL Hackerspace.


Student Maker: Michael Gubbels
HCIM Graduate Student
Office Hours: Michael's dissertation is on new techniques to program the physical world through interactions with physical material. Given its relationship to this class and Michael's background in physical prototyping, he will spend about ~5 hours a week helping out with the class in the HCIL Hackerspace.
Course Scoping and Prerequisites
There will be a bit of everything in this class and I will be trying to push on the theme of making, tangible interactive computing, and the future of HCI. We will be working with Arduino, sensors, Kinects, and AR.Drones. I hope to also cover some simple signal processing and machine learning and toolkits like OpenFrameworks and Weka.

  • This is not a fundamentals of HCI course. If you are looking for an introduction to HCI, this is not the course. For that, I encourage you to explore CMSC434: Introduction to Human-Computer Interaction; INST631: Fundamental of Human-Computer Interaction, and/or INST632: Human-Computer Interaction Design Methods.

  • Programming experience required. This is a computer science course. I am happy to see enrollment from Mechanical Engineering, the iSchool, and GIS on my course roster but do note that everyone in this class must know how to program. You must feel confident in at least one programming language be it Java, Python, Ruby, C#, Javascript, etc., etc.--I do not care which. The point is that you have sufficient knowledge to comfortably and confidently build technical systems--you can pick up the rest as the course progresses.

  • Electronics experience useful, but not required. We will be building basic tangible interactive computing systems that require interfacing with sensing and actuation circuits and programming micro-controllers. If you have limited hardware experience but have strong programming skills, you should be fine.

Course Grades

There will be no exams in this class; we will learn by doing and learn from each other. We will, however, have grades, which are broken down as follows:
  • There will be four mini-project assignments in this class, each worth 15% of your overall grade (based on your implementation, presentation, write-up, video, etc.).

  • There will be one course-long project worth 25% of your overall grade, which will be due and presented during our "Final Exam" slot (this grade will be based on the project idea itself, your implementation, your video, and your instructable).

  • 15% of your grade will be based on your performance in individual assignments (e.g., readings and anything prefixed with "IA"), your quiz performance (if any), and your class participation.

The mini-project assignments and course project will be graded based on peer review and my grade. The top two or three (depending on how many teams we end up having) will earn a special bonus (perhaps a small percentage bump in their grade or a healthy snack).

I don't want grades to become a preoccupation in class (you are, after all, all graduate students). Be passionate. Put in the effort. Be prepared. And I think you will do well. You can always email me or visit me in my office to discuss how you're doing.

Late Policy

In this class, I want a focus on learning. Really--that is most important. However, I want to be clear, late assignments do affect us: they increase my workload by adding to the logistical overhead of tracking and grading late assignments but, most importantly, they negatively affect the dynamics of the class. There is a strong emphasis on showing and discussing our created artifacts. It's truly a loss if you cannot take part in this because you are late on something. This is even more problematic with the paired mini-projects and semester project. You really don't want to be late with these.

So, I think we need two different late assignment paradigms. For the paired mini-assignments and the semester project, I will simply not accept a late assignment. You will demonstrate what you have to the class on "show-and-tell" days and I'll assign a grade based on whatever state it's in at that point. For the individual assignments (of which there may only be one or two more), each person gets a one day grace period; however, you can only use this once. Each late day will be assigned a 10% penalty starting from the minute after the due date and time (including weekends).

Finally, I should say, these are guidelines which I expect to enforce in a large majority of cases but I retain the ability to make exceptions on a case-by-case basis.


Thanks to the students, faculty, and staff of the HCIL back in the summer of 2012 who helped me setup the HCIL Hackerspace. Thanks to Professor Tom Yeh for donating the Makerbot Replicator 3D-printer, for donating some equipment, Steve Hodges at Microsoft Research for donating .NET Gadgeteer Kits, John Krumm for faciliating Microsoft donations of Kinects for Windows, and the students who are helping me build this course as we go along. To learn more about the inspirations for this class, read here.