Most people think of their interactions with computer systems to occur via a keyboard, mouse, or touchscreen. However, humans evolved to interact with thier environment and each other in much more intricate ways. Bridging the gap between the computational systems of the digital world and the natural world is being studied and tested in the Physical Computing course at the State University of New York (SUNY) at Albany.
As a professor of the course, we are currently leveraging a variety of open source software and hardware projects to learn about fundamental core concepts with hands-on experiences and implementation of open source tools. On the software side, we use an open-source IDE (Arduino Sketch) and develop 3D printer designs using OpenSCAD. On the open source hardware portion of the course, we utilize the Arduinos and the PrintrBot Simple.
Physical computing combines the use of both hardware and software to sense and control the interactions with the users and the environment. It can detect and respond to actions, for example, detecting the location of vehicles at a road interaction and adjusting the control of a traffic light. The domain of Physical Computing is quite broad, encompassing areas such as robotics, microcontrollers, 3D printing and wearable computing.
In my experience, students love opportunities to combine creative thinking with hands-on implementation. There is a sense of amazement and accomplishment when the students are able to get something to occur in the physical world. On the first day of class, one of their first activities is to simply write the code and circuit to cause an LED to blink. I never get tired of seeing that initial jubilation when they are successful. A primary objective is to maintain that sense of wonder and excitement. As the course progresses, we have a "Robot Olympics" where student compete their custom-built robots on different categories. Later, we dive into 3D printing, where they create custom designs.
Each time we enter a new domain, I see that spark, that excitement enter the student’s faces. I want passion and genuine interest in the material to flourish. I want them to experiment back in their dorm rooms. If I am successful, it should not feel like traditional school work for the students. During the process, especially for their final project, I stress innovation and creative thinking. What value are they generating through their proposed designs? I want the students to think creatively and not follow set procedures or sequential assignments.
I often use the Arduino board for teaching because they are a fantastic vehicles for learning. Not only are they great for introducing topics such as embedded programming and electronics, but they are a phenomenal platform for rapid prototyping and innovation. Students have completed some truly innovative final projects. A couple of my students used a Nintendo WiiMote to play rock, paper, scissors vs. the computer. If you play enough, the computer learns your early movements and predicts what you are going to choose before you do it. Students have controlled a robotic car from a smartphone, and another group pushed sensor information automatically to Twitter. Classes early in the semester are based on pushing the core fundamental concepts, with time allocated for hands-on implementation in small teams. The later part of the semester is based on integrated, creative projects.
This semester we introduced 3D printing as a core topic as part of the class curriculum. This provides an opportunity for the students to build physical objects, as well as combine the sensors, mechanical parts, and a processor to bring the objects to life. From an educational standpoint, the Printerbot Simple is truly ideal. We ordered the printer as an unassembled kit and had the students perform the construction. This process not only provided an opportunity for the students to learn the mechanics of how a 3D printer works, but also provided them with a sense of ownership to use and maintain the printer overtime. 3D printers have similar problems that 2D printers have—they jam, they have mechanical and maintenance issues. However, the Printerbot Simple is designed in such a way to engage students. And, they have learned skills required to fix and troubleshoot issues when they arise.
Open source in the classroom
Most of the students have some experience with open source. The Informatics Department at the University at Albany has been building out the use of open source tools. In particular, many students have used GitHub, which is being leveraged in earlier courses. The department also teaching a special topics course that purely focused on open source. What is most new to the students is the notion of open source hardware. Most people tend to think of open source as purely in the domain of software development. This is a new and exciting concept for the students.
Mature open source hardware and software has allowed our Physical Computing course to avoid licensing and procurement issues, and thus grow and evolve in new ways. It also has provided flexibility by not being pigeon-holed into a single platform or tool. Down the road, as technology changes, the open source aspect allows the freedom to change without being locked into a vendor license agreement.