A Hands-On Lesson in Physical Computing
Rui Wang faced a daunting task: converting a huge garden his parents had dug in his backyard into a lawn. He purchased a sprinkler controller to water the area on a schedule, but its controls were limited and didn’t meet his needs. Fortunately, Wang is a computer scientist at UMass Amherst and had recently been introduced to Arduino, a microcontroller popular with the hobby and DIY community. He wrote some code, which enabled the sprinkler to be accessible over the internet and allowed it to pull online weather information and precisely time and control the amount of water it sprayed on the lawn. The grass grew, and today the lawn remains lush and green.
Wang decided to publish his sprinkler project on a website called Hackaday, frequented by engineers and engineering enthusiasts, and gave demonstrations of the device at maker faires. He found substantial interest in his smart sprinkler controller, with many people wanting to purchase component parts to make their own. He decided to start selling the OpenSprinkler as a DIY kit—an open-source, web-based sprinkler/irrigation controller. That was about a decade ago; today, around three to four thousand OpenSprinkler kits are sold each year.
“One of the main reasons OpenSprinkler is open source is that I want users to not only buy and use the device, but to teach themselves to code—to figure out how the circuit works, the software, the app—and then customize it so it can do exactly what they need it to do,” said Wang.
Wang’s experience creating OpenSprinkler inspired him to share with his students the rich learning experience associated with such DIY projects. Wang began offering workshops in UMass Amherst’s former Department of Computer Science, which taught students to apply their programming skills to create projects such as LED light-up Halloween costumes and Wi-Fi-controlled lamps. As the department transitioned into what is now known as the Manning College of Information and Computer Sciences (CICS)—and a new CICS Makerspace opened with equipment ranging from electronics components and hand tools to 3D printers and a laser cutter—Wang established a formal course named CICS 256: Make: A Hands-On Introduction to Physical Computing.
Since spring 2018, one to two sections of this popular course have been offered every semester (with an interruption only during the height of the COVID-19 pandemic). Wang estimates that to date, approximately 450 students have taken the course, which has been taught by multiple professors and graduate students in recent years.
As a computer science major, many of the things that we deal with are intangible, like algorithms and math. The Make course connected the tangibility of hardware with software programming.
According to Wang, the course, which includes both lectures and labs, teaches students lab science skills by encouraging them to verify theories they learn in class through experimentation. Students learn data analysis skills as well as a diverse range of hands-on building skills—from circuit-making to 3D printing, woodworking, and laser cutting—depending on the exact nature of their projects. All students in the course learn to apply their programming skills to create a customized final project that achieves something useful or beautiful. In addition to the typical lecture slides and homework assignments, students are provided with physical materials like electronic components, screwdrivers, cables, and wires, as well as an all-in-one circuit board; designed by Wang, the so-called Makerboard allows students to complete all labs and assignments on a single board throughout the semester.
“It’s a very rich class, which teaches a lot of things that are not typical of other computer science courses,” said Wang. “When students learn programming, it can feel tedious at times because they don’t see how it’s applicable, whereas in the Make course, they build practical gadgets or artistic projects to apply their programming skills. They really get to see the impact that programming can have in their real lives.”
For student Ibrahima Keita, the Make course helped him develop critical problem-solving skills through interactive learning and brought to light new passions that he plans to pursue in his career. Keita went on to take many other courses in embedded systems programming, computer architecture, and physical computing, all of which were easier to tackle thanks to his experience in the Make course. His experience in the course also led to a summer internship doing hardware hacking at Caesar Creek Software, and a job working in the CICS Makerspace, helping other students “make their dreams come true.”
Keita went on to serve as an undergraduate course assistant (UCA) for the Make course. “After taking this course in fall 2021, I felt like I was given superpowers. I knew enough to start designing my own circuits and was left with enough to start investigating other areas of electrical engineering,” he said. “I really wanted to give back to the course that I loved so much, and help students learn more about physical computing while improving the oddities I faced when I took it.”
Zhiyang Zuo also took the course in the fall 2021 semester and has served as a UCA for two semesters. For their final project, Zuo’s team created an LED-wrapped hoodie that can be controlled with a smartphone to change colors and patterns. "What we learned in class can be extremely useful if we decide to go into the field of Internet of Things, wearable technology, or robotics," he said.
“As a computer science major, many of the things that we deal with are intangible, like algorithms and math. The Make course connected the tangibility of hardware with software programming,” Zuo added. “I might be biased, but this is one of the most fun classes I have taken at UMass.”
Below, hear from other students about their experiences in the Make course, including lessons learned and challenges overcome:
Huy Ngo, Dung Nguyen, Aaron Shikh
In most of our prior computer science courses, we learned about software and hardware separately. This class demonstrated the intersection of the two. It sparked our interest in engineering and computer systems, motivating us to learn more about the inner workings of our everyday devices.
For our class project, we decided to make something fun rather than practical. We had recently made a very simple musical device in class, which inspired us to create the laser harp.
The course gave us a detailed understanding of how electronic components work and taught us common operations such as soldering and 3D printing, which played an instrumental role in helping us figure out the wiring logic and build the laser harp. We also learned how to utilize the amazing Arduino microcontroller, which allowed us to upload our own code, and have it do basically whatever we want it to. We can even take it further by attaching parts, which are easily found online, to give it a “voice” or an “eye,” and have it interact directly with our world.
Truth be told, we ran into a lot of challenges. Building a circuit is hard, especially with no prior experience. There are many things that could go wrong, and one incorrectly wired part can ruin the whole circuit. We were also challenged to make the design both visually appealing and practical enough to house our circuit. Fortunately, the professor and teaching assistants were incredibly helpful as we navigated not only the project, but the course in general, so we never felt lost. The CICS Makerspace was also integral to our success. It was very nice to have most of the components and tools readily available in one place. CICS 256 showed us how to take advantage of the awesome resources available at UMass, such as the Makerspace.
The community here at UMass is super fun to be a part of! Two members of our team are international students with our families on the other side of the world, but never did we feel left out. Instead, we found many like-minded individuals who really helped us grow personally, intellectually, and career-wise. Our advice to other students is not to be afraid to try new things. Just do it. Learning by doing is the absolute best way to learn. Have fun!
Kian Hesemeyer, Evan Ciccarelli, Shalom Jacob Jaison
Our project was a controllable jumping robot, inspired by the popular Dino Run game on Chrome. We wanted to combine a game with a robotic car in order to employ mechanical, electrical, and software design.
Having the full hands-on experience of working on our own project was a unique opportunity, which we don’t really get in any other course. It gave more insight into the hardware side of computing, and it was valuable to learn so many different skills, and to get to put a variety of these skills to use for the final project. For our project, we used the microcontroller Arduino, soldering, 3D printing, and circuitry. It was also great to have an introduction to the CICS Makerspace, learn how to use the tools there, and get hands-on experience with them.
While working on our project, we had to overcome many challenges, ranging from coming up with the project concept to combatting procrastination tendencies to overcoming several technical difficulties. The staff at the Makerspace was immensely helpful in resolving these issues and keeping the project on track.
Overall, this was a fun and fulfilling experience. At the end of the semester, it was rewarding to have a finished project—not just a letter grade—to prove we learned something in the class.
This story was originally published in November 2023.