Developing and Designing Interactive Devices

Developing and Designing Interactive Devices

Instructor: Wendy Ju,

Teaching team:     Ilan Mandel,

 David Goedicke,

Lectures               Monday 10:25-11:40am ET 

Labs                     Wednesday 10:25-11:40am ET 

A/V and technical support: +1 646-971-3811

Slack Link:


This course provides an introduction to the human-centered and technical workings behind interactive devices ranging from cell phones and video controllers to household appliances and smart cars. This is a hands-on, lab-based course. Topics include electronics prototyping, interface prototyping, sensors and actuators, microcontroller development, physical prototyping and user testing.

For the final project, students will build a functional interactive device of their own design, using Javascript, single-board Linux computer, embedded microcontrollers, and other electronics components.

FOR SPRING 2021, the course is being adapted to the online format. We will emphasize distributed devices and ML, and de-emphasize electronics and microcontroller development.

Frequently Asked Questions


It is important to be in class. Students are expected to be present throughout each semester at all meetings of classes for which they are enrolled. You do not need our permission if you need to miss class for some reason. Of course, the absence will impact your performance in the class; we will all work to minimize that impact. 

One very good reason to miss class is illness. Even in a distance learning environment, it is important to take time to recover from illness. 

If you do miss class, the expectation is that you will contact fellow students to find out what occurs in class, to catch up on course announcements, and to otherwise make up for lost time. 

Late Policy

Lab prep will be due in class on Wednesdays. Lab assignments will be due by class on Mondays. Since the labs are cumulative—each one depends on your understanding and completion of the previous one—it is essential to stay caught up.

Late assignments will be dropped one letter grade per day late.


There is not a textbook required for this course this term.


Your final grade will be based on:

                                    Lab assignments (60%)

                                    Homework assignments (20%)

                                    Final project (10%)

                                    Class participation (10%)

While technical functionality will be a major component of homework, labs and the final project, this is a design class. A sizable portion of the class grade will be based on a subjective evaluation of your device designs, their creativity, and level of finish.

Very technically simple designs can be great, and very technically complex designs can be wanting, so focus on developing a “design eye” rather than trying to make the most ambitious feature-laden projects imaginable.


We will strictly follow Cornell’s policies on academic integrity as outlined in the Academic Integrity Handbook.

In this class, we make substantial use of open-source software. We encourage you to make use of found code and online examples, and also for the class to act as a microcosm of the open-source community by assisting and collaborating with one another.

That said, proper attribution of all work, assistance and collaboration is absolutely critical in this endeavor. We expect you to be absolutely meticulous in documenting and celebrating shared ideas and code.

We also expect you to document and provide advance notice to the teaching team if you plan to use work from other concurrent/prior courses as part of deliverables for this course; this is permitted, but the net amount of work in this and the other course are expected to be the same.


You should expect and demand to be treated by your classmates and the course staff with respect. You belong here, and we are here to help you learn and enjoy this course. If any incident occurs that challenges this commitment to a supportive and inclusive environment, please let the instructors know so that the issue can be addressed. We are personally committed to this, and subscribe to the Computer Science Department’s Values of Inclusion.


We are happy to make accommodations to make this course accessible to all students. Please contact the teaching team if you need help. Also, the Office of Student Disability Services ( may have services available.

Provisional schedule:

The following is a provisional schedule for the course.

Week Date Topic Lab
1 2/8 Designing Interaction (pdf) Staging interaction
2 2/15

Guest lecture: Bill Verplank, Stanford

Sketching Interaction 

Staging interaction 2
3 2/22 Device Interfaces (pdf) Interactive prototyping
4 3/1

Guest lecture: Nik Martelaro, CMU

Interaction Engine

Interactive prototyping 2
5 3/8 Wizarding voice interaction (pdf) Wellness day--No class!
6 3/15

Guest lecture: Heather Knight, Oregon State University, and David Sirkin, Stanford University

Interaction improv

Refining interactions with Wizards
7 3/22

Physical UI:Interface/Embodiment/Materiality* (pdf)

*apologies, this lecture did not get recorded

Physical User Interface
8 3/29

Guest lecture: Qian Yang, Cornell

Scripting Conversational AI

Physical User Interface 2 

9 4/5

Embedded Computer Vision and Sound Recognition, David Goedicke

Observant systems
10 4/12

Guest lecture: James Patten, Patten Studio

Interactive exhibits

Observant systems 2
11 4/19 Distributed Interaction Lab Previously Named Little interactions everywhere 
in class MQTT walkthrough
12 4/26

Wellness Day--No class!

Final Project  Working Day
13 5/3

Guest lecture: Will Odom, Simon Fraser University

Future interaction

Final Project  Working Day
14 5/10

Final Project functional check off

Final Project Presentations


Course Summary:

Date Details Due