CMSC838f_Spring2015Logo-Blue_856w.png

"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)

Join us in the HCIL Wednesday, May 20th from 2-4PM for a public exhibition of work, demos, light refreshments, and an awards ceremony recognizing the best tangible artifacts created this semester! Directions and more information here.

Course Overview

This course is about exploring 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, the Nike 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. We will use materials to help us think and to push our own boundaries of what interactive computing is and could be. I've taught this class twice before (Fall 2012, Spring 2014). I encourage you to visit those webpages and view past projects/homework assignments to gain a better understanding of the flavor and personality of the course. The curriculum is ever-changing and always a bit experimental; however, my teaching philosophy centers on learning by doing and peer learning. My methods and approach are informed by studio courses and design thinking. In addition, I always try to incorporate new technologies into the course, which means that often we learn together as I cover new material

Instructor

IMG_5405_800w2.jpg
Professor Jon Froehlich
Assistant Professor, Computer Science
Email: jonf@cs.umd.edu
Webpage: http://www.cs.umd.edu/~jonf
CS Office: 3173 AV Williams
HCIL Office: 2117F Hornbake
Office Hours: by appointment.

Course Logistics

Lecture time: Tuesdays and Thursdays 11:00AM-12:15PM (75 minutes)
Class location: The HCIL on Tuesdays and the Computer Science Instructional Center (CSIC), room 2120 on Thursdays
Credit Hours: 3
Class website: http://cmsc838f-s15.wikispaces.com/
Course Communication: We will be using Piazza for a majority of course communication and discussion. Occasionally, I will also email the course mailing list (cmsc838f-0101-spr15@coursemail.umd.edu). As of Monday, Jan 26th, you should have received multiple emails on the course mailing list and a notification that you have been signed up to Piazza.
Final Exam: May 12, 11AM-12:15PM in HCIL
HCIL Symposium: Thursday, May 28th (certain projects will be selected for exhibition at this symposium)

Impact Beyond the Classroom

As a graduate course, I think that it's important to construct curriculum that is open-ended, that allows for ideation and experimentation, and that inspires and produces impact beyond the class itself. As one indicator of success, this class has generated one MS thesis topic (BodyVis), one PhD thesis topic (HandSight), and multiple conference publications such as CHI'13, IDC'13, ACVR'14, and CHI'15 (with more to come!).

In addition, as a course strongly inspired by the Maker movement, we have adopted the Maker ethos of helping others 'learn to make.' Thus, each student must prepare and publish an Instructables about at least one mini-project. The Instructables posted for class have garnered over 140,000 views and have been favorited 796 times (as of Jan 1, 2015) including HandSight (15,562 views, 86 favorites), StarryNight (9,766 views, 130 favorites), Cat Tracking Using Bluetooth Positioning (26,595 views, 164 favorites), X-Track Music Visualizer (8,889 views, 63 favorites), and the HCIL Hackerspace interactive living wall (28,343 views, 108 favorites). This is incredible impact that reaches far beyond the confines of a single academic course. I hope for a similar diversity of compelling ideas and successes this year! See the full listing of Instructables for Fall 2012 (here) and Spring 2014 (here).

Finally, mini-projects and final projects will be presented at a public exhibition/demo fair during finals week on May 20th from 2-4PM in the HCIL. There were also be a brief awards ceremony recognizing top projects and the top 'maker' in the class. See flyer below. Additionally, selected mini-projects will be showcased at the 32nd Annual HCIL Symposium on Thursday, May 28th.

CMSC838f_FinalDemosFlyer_Spring2015.png

Course Scoping and Prerequisites

This course covers a broad swath of topics pushing on the theme of making, tangible interactive computing, ubiquitous computing, the "Internet of Things," and the future of HCI. We will be working with Arduino, sensors, 3D-printers, CNC machines, Kinects, wearables, and low-tech materials such as fabrics, cardboard, and conductive clay. I hope to also cover some simple signal processing and machine learning and toolkits like OpenFrameworks and Weka. You will learn about rapid prototyping, design thinking, and iterative design. Finally, I will incorporate related work from emerging literature in top interactive computing publication venues such as CHI, UIST, TEI, ISWC.

  • 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: Fundamentals 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.--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 interactive physical 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.

This course uses extensive use of materials (both low-tech and high-tech). Similar to other prototyping/making courses at other universities (e.g., CS294 Interactive Device Design at UC Berkeley), this course has a "lab fee." Instead of asking you to purchase a $100-150 textbook (there are no textbooks in this course; all readings will be posted to the wiki), I am asking you to spend this money on purchasing materials and to help restock consumables in the HCIL Hackerspace (such as wire, filament for 3D-printer, wood for CNC machine, resistors, LEDs, etc.). We will discuss this in class. If the cost of this course is an issue, please email me.

Course Load, A Note About Failure, and Student Testimonials

I will state up front: this course is a lot of work. If you cannot commit significant effort this semester, don't take this course. Expect to spend a lot of time in the HCIL and HCIL Hackerspace. In addition, you should know that 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.

In addition, as a project-based course with a focus on "learning by doing," there is a rather high workload; however, it's a workload with a payoff both in terms of what you learn and the potential to make impact with your projects. Here are what some students are saying about the course (drawn from CourseEvalUMD for Fall2012 and Spring2014).

"The course requires lots of work! But, it's worth every minute. I learned tons from this class, and did 4 amazing projects I'm proud of, with YouTube videos explaining them. This may be the best class I've ever taken. And Jon Froehlich is a great professor!! The class was very fun and engaging and useful."
CMSC838f Student, Spring 2014 -


"This is the best course I have ever taken at any level. Period."
CMSC838f Student, Spring 2014 -


"Prof. Froehlich's CMSC838F is really a fun course. You learn how to prototype interactive systems using Arduino, Low-tech Materials, Motors and Kinects. The course is very practical and you could turn your idea into reality by making on your own! This course provides you lots of opportunity to play with hand-wares like IMU, pressure/temperature/infrared sensors, motors, which is full of fun."
CMSC838f Student, Spring 2014 -


"Loved the course! One of best classes I have ever taken. Felt empowered after taking the class. Do think you need a few more tutorials in the beginning. Think class should remain 3 credits but be longer each week."
CMSC838f Student, Fall 2012 -


"This was an amazing and inspirational course, and it should definitely be offered regularly, possibly for undergraduates as well. It would have been useful to have more lectures explaining some of the concepts/techniques/tools available for the assignments, particularly earlier in the course. However, the instructor created an environment where it was relatively easy to ask questions and pick up the necessary skills on our own while working on the assignments and course project." Professor's note: for the Spring 2014 offering, I added more lectures upfront explaining key concepts and also added frequent in-class workshop days (we call them sandbox days to learn and play together in class), which helps to address this comment and the previous comment. I continue to add more tutorial content to my lectures as well as in-class activities to give you hands on experience with material. However, I fully expect you to self-learn a fair bit of content necessary to succeed in this course, which you should be able to do within the timeframe of each assignment (as indicated by the above quote).
CMSC838f Student, Fall 2012 -


"The Professor is inspiring and passionate about what he teaches and this makes the course all the more interesting.This was probably one of my favorite courses I have ever taken at UMD."
CMSC838f Student, Fall 2012 -


"His open-ended project-assignments were inspiring and we came up with some amazing solutions."
CMSC838f Student, Fall 2012 -


Course Grades

We will have a mixture of individual assignments, mini-project assignments, one final project, and a final exam.
Component
Percentage
Individual Assignments
20%
Mini-Projects
55%
Final Project
15%
Class Participation
5%
Final Exam
5%
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). 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.

Note: past versions of this course did not include an exam because I felt that it took away from the spirit of this course--to learn by doing and to learn from each other. However, to fulfill CS qualifier course criteria, I have added an exam component that I feel both allows me to evaluate your acquired knowledge/skill and fits the ethos of the course.

Late Policy

In this class, I want a focus on learning. Really--that is most important. However, I want to be clear, late assignments 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, 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.

Acknowledgements

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 when he was a post-doc at UMD, Sparkfun for donating some equipment, Intel for donating Grove Starter Kit Plus - Intel IoT Edition and Intel Galileo Gen 2 Boards, Steve Hodges at Microsoft Research for donating .NET Gadgeteer Kits, John Krumm for facilitating Microsoft donations of Kinects for Windows (both generation 1 and generation 2!), the College of Computer, Mathematical, & Natural Sciences for providing initial funding to bootstrap the course, and the students who are helping me build this course as we go along.

SponsorLogos.png