Coding Stories: What is Computational Thinking
Advances in computer technologies are rapidly changing all aspects of our lives. The skills and competencies associated with these advances should be incorporated into contemporary education. Computational Thinking (CT) has been presented as a way to operationalize this work. Will CT enable young people to one day tackle the crises that loom over our planet including pandemics, climate change and socioeconomic inequity? Through teaching CT can we empower the underprivileged, leveling the global playing field?
These aspirations seem promising, but what exactly is CT, and what role should it play in school? How does it fit in with other STEM learning? Is it connected to non-STEM fields? Before we start pushing a CT agenda let’s try to understand it better.
I recently gave a presentation on Computational Thinking for Elementary teachers and I used a framework from the organization barefootcomputing.org. They define computational thinking as a set of concepts and approaches illustrated in the graphic below.
During the workshop I asked the participants to think about their own definitions of each of the ideas listed. Working in pairs they generated examples that they thought illustrated each concept or practice, drawing from classroom experience or from the hands-on STEM activities that occurred during the workshop. I did this activity because making room for current understanding and personal connections leads to more meaningful learning. I also had a feeling that the teachers were already utilizing many of these concepts and approaches in their classrooms. I emphasized that we were elaborating on the ideas rather than presenting them as something new.
Some of the questions that came up during our discussion were: Is CT the same as computer science? Do you need computers to teach CT? Since these concepts and approaches are basically about problem solving, are we already doing CT?
These questions made me think more about how CT fits into an existing and vibrant curriculum. It also made me think about the history of computation.
The history of computers often focuses on a series of historical achievements. In 1803 the Jacquard Loom used punch cards to “program” the creation of a textile. Similar punch cards were used in the first computers for input and output before keyboards and monitors were invented. Later in the 19th century Charles Babbage conceived, but never realized a mechanical contraption called the difference engine designed to do various mathematical operations. He worked with Ada Lovelace who conceptualized a system for programming such a device. Throughout the 19th century there was great demand for computation. At that time computation was performed by hand and represented in large tables of numbers. The people who created these tables were in fact called computers, many of whom were women. Navigation, ballistics, astronomy and many other areas of science and engineering required numerous repeated calculations. Improving calculation was the motivation for Babbage’s work. Humans make errors when they create large tables and those errors are problematic. Also humans take a lot of time to do calculations by hand and this limits the extent to which calculations can be leveraged. In the 20th century the demand for computation only increased as science pursued more complex lines of inquiry.
Then technology advanced to the point where devices that could do this work were possible to build. First vacuum tubes were used to create computers. Later scientists realized the fortuitous properties of semiconductors and invented the transistor. Computer technologies have steadily progressed since that time, increasing in complexity and capability at an alarming rate.
The ability of devices to expand the scale of computation within human reach has been transformative beyond what anyone could have imagined. Advances in genetics, particle physics, non-linear dynamics, and more fields of study than I could name have been possible due to the computational power of computers.
While this history is exciting and inspirational, what does it tell us about CT and what does it mean for Elementary school? Are we trying to prepare young learners to understand these computational machines that are changing the world? Are we attempting to train a new workforce of computer programmers?
If we focus on the history of computers, focusing on when computational machines were first invented, the first step was communicating with computers. That is what Ada Lovelace was exploring when she developed the idea of computer programming. If you are going to leverage a machine to do cognitive work then you need to be clear on the exact nature of that work. The CT concepts and approaches are really about better defining the process of problem solving, of thinking, of engaging in science.
And what could be more valuable to young learners than spending time reflecting on the problem solving process. And perhaps even more important, developing a vocabulary to talk about problem solving, share strategies and develop thinking. CT is a metacognitive tool built upon a set of concepts and approaches that can support Elementary students in solving problems and talking about solving problems. In fact it does not need to connect to computers at all. It can apply to mathematics, literacy, science, social studies, art, SEL and much more. As an added bonus the habits of mind that are developed through CT will also prepare students to better understand computational devices and eventually engage with them.
One of the participants in the workshop pointed out that computers are similar to the human brain. Early in the history of computers, scientists explored the connection between how computers function and the neural structure of our brains. Today the field of machine-learning explores how learning that comes naturally to children can be simulated and even replicated in a computing device. Computational thinking is an opportunity for children to consider how their minds work and how thinking and discovery are connected.
I was asked to present computational thinking to another group of Elementary teachers. In order to recreate the activity described above I wanted to give the participants a chance to engage deeply in authentic problem solving before talking about the CT concepts and approaches. I reached out to a colleague who focuses on math instruction and he pointed me to the youcubed.org website and specifically the Taxicab problem. This is how the website presents the problem.
This is a wonderful problem because it is open ended and engaging. These are the types of tasks that should occupy young people at school. As I started to explore the problem it looked familiar. I had actually assigned this problem to my computer science class this past year as I found it on Project Euler.
Not only is this a meaningful problem to develop mathematical thinking. It is also highlights core concepts in the domain of computing. I started to wonder how often deep and meaningful inquiries that are done by children relate to challenges that computers have been instrumental in exploring. Maybe computers are influencing so many aspects of our world because computational thinking applies to so many domains.
I encourage you to spend some time investigating the Taxicab problem and see which concepts and approaches you think it touches upon. I started with colored markers and and graph paper. Then I came up with a way to encode the paths with a series of R’s and D’s representing the two directional moves allowed. The more time I spent investigating the more aha moments occurred and the more questions were raised. Then I opened up a p5.js sketch to visualize the problem. Below is what I created. See how watching this sketch impacts how you think about the problem.
I could have solved the problem entirely without getting on a computer. But using p5.js helped me think more deeply about the problem, allowing me to make new realizations and discoveries. Also I was able to create something beautiful, inspirational, and revealing. I feel proud of what I accomplished.
The CT framework developed from humans using computing devices in the pursuit of knowledge and solutions. Elementary school is an opportunity to engage children in meaningful learning and problem solving so that they can one day step out into the world and be citizens, scientists, engineers, explorers, and leaders. In Elementary school we can scaffold this journey by introducing them to the concepts and practices of CT. As they develop their problem solving strategies and vocabulary they will be able to tackle any challenge that comes their way. And when appropriate and available we should allow students to use computational tools as they prepare to be the professionals they will one day become.