As tools change, so do ways of expressing creativity. In prehistoric times, pigment and cave walls were readily available. Today we are surrounded by digital tools used for communication, commerce and calculations, yet from their first days computers were repurposed for artistic means. My father-in-law tells a story of early computers at Chrysler being used to create pictures of Snoopy in punch card patterns. One of the first video games, Tennis for Two, was made in 1958 using an oscilloscope. The stereotypical notion of art in a frame or on a pedestal is changing as subjects such as big data, Twitter trends and the quantified self become relevant.
I’ve begun a project that will allow students in a high school psychology class conduct a simple sleep study in their home using an Arduino and an accelerometer. The accelerometer will be attached to their body to record body movements during the night, in an attempt to discern when they are in deeper sleep cycles as they lay relatively motionless, and when they may be tossing and turning. I’ve tried this a few nights myself to see how well it worked, and have begun to try different ways of analyzing the data.
Although I had attempted to capture the essence of an object through photos before, I found I made it way too easy to guess the item. So I chose a more unusual object, which is probably cheating, and tried for less obvious angles. People will still guess it within minutes, I’m sure.
Nothing like a few brain burners to show the usefulness of computational thinking skills. I asked Meghan, my partner in crime and second grade teacher, to work with me in an attempt to solve two problems, using guidelines from Basic Strategy for Algorithmic Problem Solving. The tools presented in this algorithm were exhaustive and exhausting; we only applied some of them the two problems.
The first problem involved eight suitcases, identical in every way, except one was lighter than the rest. You have use of an balancing scale to compare their weights, with the goal of performing the fewest number of weigh-ins in order to identify the lightest briefcase. I had come across this problem before, most likely on Car Talk, so Meghan took over the problem solving and did an admirable job. She identified the necessary information in the problem including the data provided and what was being asked, just as she would ask of her students on a test. She determined she had all the information needed, so now it was time to find the algorithm.
Since the program I will be presenting through work for the next few months will be on using the Arduino in art and science, I decided to explore if there would be a post-lesson activity that could show use of the Arduino in other subject areas. I settled on Language Arts, since I enjoy poetry and wanted to see if the form could be rethought in an interactive way that will have students create a machine-aided haiku using core computational thinking concepts such as problem decomposition, data collection and automation (Barr & Stephenson, 2011). I’d come across computer poetry in Mindstorms (Papert, 1993) and a quick Google search of “Arduino Poetry” showed that several people have had similar ideas. This approach would be unique in that the program will use readings from temperature, light, and sound sensors to choose appropriate descriptive words.
I thought an app designed to develop programming skills in elementary aged children would not pose a challenge to someone twenty years older. Yet once I reached levels in LightBot that required you to create loops or make function calls with limited memory, I couldn’t mindlessly drag and drop instructions to have the bot behave correctly. I had to identify what movements the bot would take repeatedly or how to break the instructions into meaningful chunks. LightBot was already testing my computational thinking in several ways with these challenges.
From the very start, I had to think abstractly, which Grover and Pea (2013) identify as the “keystone” of CT, that which differentiates it from skills in other disciplines. My first problem was figuring out how to give instructions to the robot. The app confined the problem, requiring that I drag and drop predefined instructions such as movement and lighting up a square. This showed me that the designers already had to think abstractly on what tools to provide in order to solve give instructions, and I would have to think along the same lines. If I could define my own instructions, such as teleporting several blocks away or duplicating myself, this would be an application of my ability to abstract.
Here’s my interpretation of the Count the Dots activity. Sorry for the shakeycam, my production assistant had gone to bed.
The program was created using Python on a Raspberry Pi, and the LED lights were controlled with an Arduino. The binary value was passed from the Pi to the Arduino via serial over USB.
I first came across the idea of Computational Thinking (CT) about a year ago when browsing edX courses. The idea intrigued me enough to seek further information and eventually propose a computational thinking program (with limited success) through my work at art and science museums. My understanding of CT has thus been influenced by my readings, but I hope to greatly develop these thoughts throughout the course.
If I were to try to put aside prior information I’ve come across, I would most likely think of CT as the skills that a computer programmer uses in order to provide instructions to a computer. As someone who worked in software for several years, I understand the way of thinking that emerges when working with code everyday. You start to create mental models of the data you start with, how that information can be stored and manipulated, and consider how to achieve the final result you are looking for with a minimum of errors. As programs grow larger, you begin to think about how to encapsulate the data in ways that is logical and easily understood, but still efficient enough for a fast runtime.