By: Jamie Beverley
I entered this course with some familiarity with programming, but very little understanding of how computer hardware works. Coming from a computer science background, I had been accustomed to the high level abstractions that modern programming languages provide in order to communicate with the hardware. While the Arduino language and IDE provide all the familiar functions of regular high level languages, I found actually building the circuits to be quite novel and challenging. As the complexity of the projects we built increased throughout the course, I found that I really had to pay detailed attention to how my code interacted with the analogue and digital pins of the Arduino. In turn, this required me to be more mindful of the algorithms I implemented, and more diligent about commenting my code.
After several hours of tinkering, and frying a resistor, I also developed greater appreciation for the complexity of circuits in everyday electronics. The size of my final project took up nearly two entire breadboards, and accomplished much less than even a simple calculator. I can see how the minimizing of electronics components is integral to the modern advances in integrated circuits and imbedded technologies.
In completing this course, I was continuously amazed at the possibilities presented by technologies like the Arduino. My final project ended up using three different programs (Arduino, Hairless MIDI-Serial, and SuperCollider), demonstrating the incredible level to which modern technologies can integrate. Part of why computing is so interesting to me is due to the seemingly infinite possibilities modern technologies such as the Arduino provide.