Assignment Two Overview

Due: Monday, October 8th before class time.
Worth 16.5% of your course grade.

All assignments in this class will be emphasizing the theme of tangible interactive computing. With assignment1, we experimented with tangible interactions on the mobile phone. With assignment2, we will broaden outwards into the physical world and start experimenting with Arduino--the current de facto open hardware platform for rapid prototyping. According to the Arduino webpage:

"Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments."

Arduino makes working with sensors and actuators easy (well, far easier than ever before--you'll see!). And, one of the best parts is: there is an enormous support community online to find information in blogs, forums, and YouTube. Before starting this assignment, I encourage you to search around for "cool Arduino projects" to get a sense, first, of the enormous variety of inventions that have been enabled by Arduino and, second, to gain an appreciation for the variety of types of people working on these projects from visual artists to musicians to engineers.

What To Do

In this assignment, your goal is to make an input device for a computer. This could mean a new type of mouse, text entry system, or a specialized device (think Rock Band guitar or drums).

Don't just think about the sensing system you want to use to encode physical action into virtual bits that control a computer--think also about the form, fluidity, and mapping of this interaction. How intuitive does it feel? Why does it feel intuitive, or not? Think also about creating a physical form--out of clay, cardboard, foam, 3D-printed material--to improve the look and/or feel of your new input device.

This assignment is based, in part, on Homework 2 "Text Entry Device" from Bjoern Hartman and Paul Wright's UC-Berkeley Interactive Device Design course. You'll note that our assignment is more lenient in that you need not just create a new type of text entry device but, instead, a new type of input device in general (which could be a text entry system but may also be a new type of mouse or a specialized device). Like our class, Bjoern and Paul have their students submit videos of their assignments. Here are some examples from his class: (i) chorded keyboards (link1, link2, link3, link4); (ii) directional input with soft keyboards (link1, link2,link3); and (iii) multi-tap keyboards (link1, link2, link3, link4). Remember, all of these are text entry systems because that was their assignment; our assignment is different. I am including these links to highlight the breadth of creative solutions in class and the use of wikis/videos for deliverables.

Here are some example input devices from the interwebs that I find particularly inspirational:

Tools/Library Usage

As before, you can use whatever developer tools, IDEs, debuggers, libraries, and/or code snippets you find to support turning your ideas into a reality. Of course, you must keep track and cite the use of any code or libraries you use in your project. You must also include citations towards projects that inspired your own. Do not be shy to include as many links as you can that influenced your projects form or function in some way.

Remember to also include citations (with URLs) in your code via comments to all code that you borrowed from or extended from blogs, forums, open source, etc. If I find code that was copied and not appropriately cited, I will consider this a direct violation of the UMD Academic Integrity policy. You will not be penalized for re-using or re-appropriating cool things in this class, you will be penalized for not properly attributing them.

Assignment Deliverables

The assignment deliverables are due before lecture begins.
  • Utilize github to store and post your code. This should be publically viewable and accessable. You are welcome to use any license you like on the code itself (including no license at all--e.g., None). When you use other people's code, you must cite your source--even if it's just a blog post and a small snippet. I believe github provides academic accounts (for additional features, please check the website).
  • Post a Wiki write-up to your own wiki subpage on this wiki (example).
  • Upload a video demoing your submission to YouTube. You should include the link to the YouTube video in your Wikipage. Please take the video creation process seriously--video is one of the best forms to portray the interactivity and sheer awesomeness of your inventions. I hope that you create something you would feel proud of to show your friends or family.
  • Presentation/demo. On Monday, October 8th, we'll have a presentation/demo day. We will dedicate the whole 75 minutes to this (I learned my lesson from Assignment 1 presentations). We have 8 teams so each presentation should be ~5 minutes and we'll use the remaining time in the class for demos.

Assignment Grading and Rubric

Most, if not all, assignments in this class will be graded on novelty, aesthetic, fun, creativity, technical sophistication, and engagement. All assignments (including the project) will be peer-reviewed by everyone in the class including me. Everyone, including me, will fill out the same feedback form. As before, we will rank our favorite projects and the top two or three teams will receive a prize.

Completed Assignments

This page is editable by all members of the class (once you login to wikispaces). If you cannot edit this page, please send me an email or post to Piazza for help.

1. 2B1

Zahra Ashktorab, HCI Masters
Adil Yalcin, Ph.D Computer Science

"2B1" is an interactive game that requires input from both users in order to control the main character. Several input mechanisms were implemented to insure that this game require collaboration between the two users. More information about our project can be found here.

2. Pressure Sensing Seat-Pad Interface for Tangible Interactive Computing

Kotaro Hara, PhD Computer Science
Allan Fong, PhD Computer Science

Your body naturally wants to connect with what is going on in the screen through similar motions, especially while playing games on the computer. For example, it is easy to find yourself leaning left if you want your avatar or racecar to go left. For this project, we wanted to explore interaction techniques that depends on your body movement. We took advantage of this natural tendency by making a pressure sensing seat-pad interface that will let you control the mouse and arrow buttons on your computer with your body movement. To learn more, please visit our Project-Site

3. Arduino. Theremin. Gangam Style.

Lee Stearns, CS Masters
Harish Vaidyanathan, HCIM

Our inspiration for this assignment was the theremin, a strange musical instrument that is played with two hands without touching any keys or controls. We wanted to simulate the experience using our Arduino and distance sensors. This resulted in a hardware package that could be used for many purposes, so we also experimented with other musical and gaming applications.

For a detailed description and links to our video demo and code, click here

4. The Arduino Controller
Leyla Norooz, HCI Masters
Tansy Peplau, HCI Masters

Our project is a custom made controller for a car game built in Scratch for Arduino (S4A). One of the most interesting components of this project is that the body of the controller was almost entirely built from a 3D printer. Check out our wiki page for more info!

5. The Arduino Lighting Designer
Cheuk Yiu Ip, Ph.D Student, Computer Science

This assignment shows a light sensitive input device. This device presents an intuitive and tangible interface for computer graphics lighting design. Users use a small flashlight to shine light from different directions to modify the virtual light in the computer graphics scene. This design aims to free designers from placing lights with numerical coordinates and to provide an intuitive and tangible experience. The main challenge is how to construct a device that senses and compute lighting directions, which we will address in this assignment.

To know more click here.
Code: GitHub

6. Tread Drums
Cheng Fu, PhD student, Department of Geography
Raj Zachariah, MS student, Human-Computer Interaction

Our project is a drum set under shoes. With tapping the shoes, the PC or laptop can make corresponding sound. Check out our kiwi page for more information.

7. Auto Pan and Zoom

Nick Gramsky, PhD Student, Department of Computer Science
Preeti Bhargava, PhD Student, Department of Computer Science

We describe an interactive application that we have developed using the Arduino micro-controller, a light sensor and IR distance sensors. Its purpose to display a welcome screen to the user where the font size and background color of the content varied according to the proximity of the user to the display and the ambient light in the room. It also pans the content depending on the orientation of the user. For more information, please see our wiki page here.

8. KeyDisembark
Darren Smith, Masters Student, Department of Computer Science

KeyDisembark is a 5 button keyboard that works by assigning each combination of multiple keys to be a different key. It has advantages over a keyboard in that you do not need a surface to place it on and it can be used one handed while still not needing to be looked at while typing. It uses Arduino Leonardo, and has some software for finding which key presses are easiest (to assign to commonly used letters) and a program to help overcome the learning curve.