Creativity in Computer Science
Most people do not think of the word ‘creative’ when they hear about Computer Science classes. However, as a CS major, I tell people that I enjoy the major not because of the math, coding, or analytical aspects of the courses, but rather the creative problem solving that weaves itself throughout every assignment. I appreciated that the final project for the class I took last semester, CS 281, challenged me academically while allowing me to creatively problem solve and think big picture about a particular design.
CS 281, otherwise known as Introduction to Computer Systems, explores building machine hardware as well as writing and manipulating systems-level software. The labs for the course focused on hardware designs using an Arduino, a small “computer” that allowed us to write code and use that code in conjunction with the hardware design we implemented. At the end of the semester, the class was split into teams and tasked with a final hardware lab where we had to propose and complete a project of our own choosing. The hardware had to achieve some goal rather than be a trivial design.
My team, including Kayla Boggess (’18) and Steve Wright (’19), approached this project with the mindset of wanting to create a product that could be used in real life and at the same time produce something that showed our mastery of the semester’s hardware concepts. As the Christmas season was around the corner, we focused our efforts on creating a Christmas decoration that could bring festivity to a home or a bit of cheer to an office. We were inspired by the holiday light displays that combine flashing lights with music to keep the lights in time. We liked the fact that these displays use multiple programmable mediums in order to create one cohesive performance. After deciding to tackle a smaller, portable version of these performances, we designed our device while solving several problems along the way.
Some of the challenges we faced while designing a Christmas tree light and sound display were programming the songs, synchronizing the lights with the music, and encasing the final design in a portable yet easily accessible box. The tree played a total of five different songs: Jingle Bells, Frosty the Snowman, Rudolph the Red Nosed Reindeer, Silent Night, and We Wish You a Merry Christmas. Luckily, I used my background as a musician to transpose simple piano music of these songs into notes and times that the program could understand. For the lights, we used a special set of LEDs that let us specify which particular light we wanted to turn on at a given point in time. Lastly, in order to make the device portable, we knew that we needed to put all of the components into one small package that would conceal the wires and protect the circuitry. The problem we came across was how to allow the user access to the buttons which operate the device. Instead of trying to find a premade device that would extend into the box and press the button without slipping off or not applying enough force, we decided to create our own 3D printed buttons that fit perfectly over the button.
We learned a lot from this project about debugging and discovering new hardware, but we also learned about design aesthetic and product usability. CS 281 challenged our understanding of computers and their capabilities, and this final project stretched our skills as hardware designers and coders while allowing us to still express our creativity.