Abstraction is representing an understanding such that the “essence” of an idea is reached. It allows us to recognize similarities between ideas or objects that would otherwise be obscured by irrelevant details. Using multiple senses and patterning can be helpful in perceiving the topic in a focused way (Henriksen, Fahnoe, Mishra, & the Deep-Play Research Group, 2014).
When first tackling the abstraction of an algorithm, I struggled with the idea since algorithms are themselves abstractions, a way of working with generalized, reusable instructions that can be applied to many specific situations. I was encouraged to know that “abstracting is difficult for people in every discipline” (Root-Bernstein & Root-Bernstein, 1999, p.77). After many false starts and rethinking of my topic, I was able to understand that there are many ways to abstract an object or idea, and the purpose of abstracting determines what details are unnecessary to be stripped away and what lies at the heart of the matter. I tried to think how I would explain the shape or flow of a program to students or to visitors of the museum with no experiences with programming to give it that necessary context. The best abstraction could be easily understood by many people in that context and not require specific domain knowledge.
I came up with several ideas during the couple weeks of contemplating abstraction. I could create sculptures that branch, loop, and undulate to represent the flow that a program takes. The idea of flow led to the idea of a river that weaves and branches, but this was too specific an idea in my eyes. Ultimately, I chose to think of an algorithm as a path to follow, since it captures that there are many ways to solve problems. Just as a path may go over, around, or through a mountain, human ingenuity and experience allows one path to be chosen over others, I realized that it is necessary that the core idea be an abstract idea as well, something that could be difficult to give shape to, but a path can be easily visualized and understood.
I think most useful to the direction of this project was my attempt to analogize how we choose a path through poetry. Frost was himself analogizing choices we make in our life’s direction to choosing a road to follow, but this applies to smaller situations as well. While choosing a path to create an algorithm is often dictated by how fast it runs or how simple it is to understand, making the difficult choice to break from the path that seems easiest can lead to novel ideas. So far I have focused on how the end result of a program or algorithm can be creative, but how we create the program is also an opportunity to express creativity. This aspect of creativity in coding is what I would like to explore in the next exercise.
Henriksen, D., Fahnoe, C., & Mishra, P. & the Deep-Play Research Group. Rethinking Technology & Creativity in the 21st Century: Abstracting as a trans-disciplinary habit of mind. (2014). Tech Trends (58)6, 3-7.
Root-Bernstein, R. S., & Root-Bernstein, M. M. (1999). Sparks of genius: The thirteen thinking tools of the world’s most creative people. Houghton Mifflin Harcourt.