I have to admit that, up until now, the words computational thinking and coding seemed not only foreign but unreachable to me. This personal preconception is starting to change slowly but surely. After this week’s readings and activities I’m still positive that I can’t code yet but now I know that it is possible to understand and use its concepts and principles to think about the way I interact with technology and the way I actively design my everyday activities. It is also worth nothing that this false preconception of computing and coding as something difficult and unaccessible is a main flaw in our educational system and mainstream media, and I agree with Jeannette Wing in her call for a different educational approach in her article “Computational Thinking”.
In this short but poignant article, Wing states and demystify the way people think about Computational Thinking. She lists many ways in which Computational Thinking is embedded in our everyday life activities. We use it without noticing, mainly because Computational Thinking is, in my opinion, ‘human thinking’ “… it is using abstraction and decomposition when attacking a large complex task or designing a large complex system… Computational thinking is planning, learning, and scheduling in the presence of uncertainty” (p. 1).
This last statement called my attention. When she goes about listing common examples in regular activities in which Computational Thinking is very present, such as gathering the things you need before you leave your house, retracing your steps if you lose something, or choosing a check-out line at the supermarket, it is clear that uncertainty seems to be not only a common factor but the motivator for this pattern or behavior. It occurred to me that I’ve been actively using Computational Thinking my whole life but I’ve been calling it ‘Logical Thinking’, or in extreme cases ‘common sense’.
To me it seems like an obvious way of thinking. We might often find ourselves thinking ‘why do people do X when they could do Y and it would be so much easier, faster, cheaper, better etc.’. Therefore, what might seem an evident and inherent way of human thinking, doesn’t always turn out to be that common. As the saying goes: common sense is the least common of the senses.
Here are a some funny examples of design fails:
Wing says “Computational Thinking involves solving problems, designing systems, and understanding human behavior by drawing on the concepts fundamental to computer science” (p. 1) and it clearly relates to two facts: computer science concepts are human thinking concepts and we can reformulate problems in order to be able to apply a known pattern in a way that we know how to solve them.
We’ve been reading about and understanding the concept that technology is designed (by us) to do everything it does. Therefore, the ‘magic’ behind technology is the ‘magic’ behind human thinking and human condition. On that regard Wing says that one of the characteristics of Computational Thinking is that it is “a way that humans, not computers, think… it is a way humans solve problems… We make computers exciting. With computing devices, we use our cleverness to tackle problems we didn’t before the age of computing”(p. 3).
This idea resonated deeply with me. When coming to CCT I told myself that the reason I wanted to get the “technology” part in my education was because technology seems to be advancing so fast that we, as a society, cannot keep up with it and seem to be one step behind solving problems caused by technology instead of anticipating it… but I’m starting to think I was looking at it from the wrong perspective. Yes, in many ways we are behind technology (our laws could be a clear example) but technology is made by us, designed to do what it does by us. Therefore, in order to solve the problems caused by technology we have to use computational thinking, the same one we used to design said technology, and more importantly we need to think about these outcomes when we are designing technology. We should be using Computational Thinking more actively when it comes to solving problems related to technology, as actively and unconsciously as we use it in everyday activities.
Learning and understanding how to talk to my computer: Python
This was my first encounter with a coding language and I have to say that it was less scary than I originally thought and I enjoyed it (at the beginning) more than I expected. Before starting the lessons on Python I took a few minutes to navigate the Code Academy website and found myself excited and interested about what it offers. The fact that this knowledge is so accessible, both as in free and understandable, seems almost shocking to me.
I know the word ‘language’ in coding language it’s pretty obvious, but I was still a little bit surprised of the similarities I found between Python, languages and music. During the first lesson I found myself thinking ‘oh, this is like learning a new language’ and immediately rolled my eyes at myself because that is exactly what I was doing.
(Fig. 3) Python. First Lesson. Deborah Oliveros. Code Academy. Quote: William Shakespeare.
Because of my experience with languages I could see the similarities regarding using symbols to represent meaning and to represent and interpret other symbols (such as valuable). It seemed to me like I was learning a new language with an alphabet different than mine, as I would be if I was learning Chinese, Korean or Arabic.
However there is an extra element: the console. Even though the whole thing can be described as a translator of sorts, I related it more to playing an instrument. I play, although not very well, the guitar and the ukulele. To play music there is also an alphabet assigned to notes or chords. Now, if you’re familiar with The Sound of Music then you already know this:
(Fig. 4) Music alphabet starting with Do(C).
Depending on the instrument you’re playing, the note Do (C) will require different positioning of your fingers, but the sound would be the same. You can play C on every instrument and it would be the same note, but the way you play it might change. That way if you know what the position of your fingers should be to play C on a piano, a guitar or a ukulele than you can play any song as long as you have the chords ‘lyrics’. This way, you basically can teach yourself how to play any instrument, because the universal musical alphabet or language lets you convert and interpret these symbols from one instrument to another. In my case, I learned the basic chords in a guitar and learned the alphabet, with that information I taught myself how to play the ukulele and briefly applied the same pattern to a melodica and a piano.
(Fig. 5) Chords chart for “Love Is a Losing Game” by Amy Winehouse.
If you look at this image you see the lyrics of the song and, above it in blue, the musical alphabet chords telling what note to play at what time. Although this is from a guitar chords website, I can use this to play this song in a ukulele, a piano, or any other instrument as long as I know what is the value of C, Dm7, Fdim and Cmaj7 in those instruments. However, in this case I am acting as the console, or as the “print… X” on Python, which brings us to the last characteristic of symbols expressed by Prof. Irvine in the introduction video:
“We use symbols (software) not only to represent meanings but to perform actions on other symbols” (Irvine). I have to act as the ‘print’ function on my musical instrument. I cannot tell my ukulele “play C now and then D and then B”. However, I can tell Python print C, D an B with 3 seconds between each to perform an action. This is the main difference I noticed when comparing languages. I can ‘tell’ my computer to perform the actions for me, actions that I can perform but that I might not be able to perform as fast and accurate as the computer.
Which is also another huge difference between python and language and musical language: there is no space for mistakes. It is not as flexible as our native languages or musical language, in which you don’t have to be 100% accurate to be able to communicate what you want. In this case, it has to be accurate and reliable always in order to work:
(Fig. 6) Learning Python. Second Lesson. Deborah Oliveros.
This is the part in which I started to become less excited and more frustrated with the new language. And it was clear and evident that my lack of computing background and my severe aversion to math showed. I still think it is exciting and I probably will use this website in the future because I would like to learn and ‘teach myself’ the same way I did with English and musical language. However, the most important takeaway from this experience is realizing that I’ve been using this way of thinking throughout my whole life unconsciously: now is the time to start doing it consciously.
- Jeannette Wing, “Computational Thinking.” Communications of the ACM 49, no. 3 (March 2006): 33–35.
- Figure 1 and 2: “Poor Design Decisions Fails”. Bored Panda Blog: https://www.boredpanda.com/poor-design-decisions-fails/
- Figure 3 and 6. Code Academy. Learning Python. First and Second Lesson. Deborah Oliveros. Quote: William Shakespeare.
- Figure 4. Musical Alphabet SOL(G). Music Notes 101 Blog: https://musicnotes101.wordpress.com/2010/04/20/the-musical-alphabet-clefs-the-musical-staff-and-the-keyboard/
- Figure 5: “Love Is a Losing Game”, Amy Winehouse and Mark Ronson, Chord Chart from Ultimate Guitar Tabs: https://tabs.ultimate-guitar.com/a/amy_winehouse/love_is_a_losing_game_crd.htm
- Martin Irvine. Key Concepts in Technology: Week 7: Computational Thinking & Software. Accessed October 25, 2017. https://www.youtube.com/watch?v=CawtLHSC0Zw&feature=youtu.be.