Computational thinking (CT) references a way of thinking about problems by systematically breaking them apart into smaller components, looking for patterns, and creating algorithms to address issues. While definitions are still emerging, in a review of CT, Voogt, et al., (2015) define it as "thought processes that are involved when solving complex problems and generalizing and transferring this problem solving process to a wide variety of problems." While computational thinking may involve coding or programming, the two are not synonymous. Much of the excitement surrounding CT stems from the fact that it can be integrated into non-technical education across a variety of disciplines.
Why is it so important for students to be exposed to coding and learn computational thinking? The Google Course Computational Thinking for Educators describes a variety of skills that computational thinking can teach students. These include problem-solving through breaking problems down (deconstructing) into smaller components, detecting patterns, using abstraction to derive larger principles from patterns, and developing algorithms—either in code or in step-by-step instructions—to solve problems (Google Course).When computational thinking does involve coding, it also “requires and instills discipline, attention to detail, patience, the ability to predict an outcome, and many other valuable skills” (Richie, 2015). Additionally, Voogt, et al. (2015) include "debugging" or continually reassessing and fine-tuning a process as an important element in CT. Finally, the guide for Computational Thinking in K-12 Education (2011) also includes data collection as an essential first step that is practiced in computational thinking.
To give an example of these skills in action, if students were to attempt to address the problem of litter on campus, they might first create a survey to gather others’ opinions and knowledge on the topic, observe the where litter is found, etc. Next, students would need to deconstruct the problem into different elements, such as considering types of litter, when and where it is noticed, etc. From there, students could look for patterns to inform their problem-solving. For instance, they might notice that litter increases after football games between the stadium and the parking lot. While many people use the trash cans, the cans soon overflow and people end up throwing their litter on the ground. From this pattern, students might reach the abstraction that more trash cans are required at large events and that people are more likely to litter if they do not have trash cans immediately available. This paves the way for solving their problem by providing the details and direction for instructions; with this information, students might recommend that a certain number of additional trash cans are brought in during football games to account for the extra trash. Students could then use this information like an algorithm by looking at the number of people at football games, along with the number of bins required, and create a formula for addressing similar problems at other large events held on school grounds.
While CT offers great promise, there are numerous pedagogical considerations if students are to fully benefit from these lessons. While educators may see CT's "big picture" applications, for students transferal of skills across disciplines and outside of the classroom does not typically happen on its own. Salomon & Perkins (1989) describe the need to move from “low-road” to “high-road” transfer if students are to see how computational thinking extends beyond the classroom—or even beyond their current activity. They describe low-road transfer as repeatedly practicing a skill while high-road requires abstraction and reflection (cited in Voogt, et al., 2015). Pedagogically, this means that if educators want students to reap the full benefits of computational thinking, we not only need to integrate it into our lessons, but also explore with students its implications in other fields through dialogue and reflection. Voogt, et al. (2015) also acknowledge the difficulties educators may find in first understanding the still-emerging concept of CT and then finding a way to relate it to their disciplines. Fortunately, there are resources like the Computational Thinking in K-12 Education: Teacher Resources (2011) and Google Courses on the topic that offer problem-solving activities across a variety of disciplines. These offer adaptable lessons that apply to topics that include research skills, writing, science, logistics, history, and more. As teachers increasingly realize the potential for CT to address issues across subject-matter, they will be more prepared to effectively pass that understanding and skill set onto students.
In an effort to spread awareness of CT, free and simple coding tutorials are increasingly being made available to learners of all ages. This week I had the opportunity to try a couple of simple introductions to coding.
You can see my novice coding efforts using block coding from Code Studio by following this link: https://studio.code.org/c/557835175
The result of my hour of coding Python from Trinket can be seen below. If you hit the "play" button, the coding on the left runs the program on the right.
While programming a turtle to decorate a holiday tree may not be a major step forward for humankind, in writing this short program I gained an appreciation for the type of logic, systematic thinking, and problem-solving that CT promotes. While both tutorials were relatively simple, they challenged me to break each "problem" or challenge down by looking at what units of code drove what action. By understanding that, I was able to abstract overall principles, duplicate, and adjust code to solve each new problem. I also gained an appreciation for the dispositional skills necessary for this type of thinking, particularly the persistence required to debug when code isn't working and to keep trying new configurations until I found what worked.
Google Course. (n.d.) Computational Thinking for Educators. Retrieved from https://computationalthinkingcourse.withgoogle.com/course
Richie, M. (2015). 5 Things You Need to Know About the Hour of Code. Getting Smart. Retrieved from http://www.gettingsmart.com/2015/10/5-things-you-need-to-know-about-the-hour-of-code/
Team ISTE. (2015). Hadi Partovi: Teach computer science to all students. ISTE. Retrieved from https://www.iste.org/explore/articleDetail?articleid=580&category=Featured-videos&article=Hadi+Partovi%3a+Teach+computer+science+to+all+students
Voogt, J., et al. (2015). Computational thinking in compulsory education: Towards an agenda for research and practice. Educational Informational Technology, 20:715–728. DOI: 10.1007/s10639-015-9412-6
Computational Thinking Skill Sets
![]() |
| Source: Ohio Department of Education |
To give an example of these skills in action, if students were to attempt to address the problem of litter on campus, they might first create a survey to gather others’ opinions and knowledge on the topic, observe the where litter is found, etc. Next, students would need to deconstruct the problem into different elements, such as considering types of litter, when and where it is noticed, etc. From there, students could look for patterns to inform their problem-solving. For instance, they might notice that litter increases after football games between the stadium and the parking lot. While many people use the trash cans, the cans soon overflow and people end up throwing their litter on the ground. From this pattern, students might reach the abstraction that more trash cans are required at large events and that people are more likely to litter if they do not have trash cans immediately available. This paves the way for solving their problem by providing the details and direction for instructions; with this information, students might recommend that a certain number of additional trash cans are brought in during football games to account for the extra trash. Students could then use this information like an algorithm by looking at the number of people at football games, along with the number of bins required, and create a formula for addressing similar problems at other large events held on school grounds.
Implementing Computational Thinking in the Classroom
There are numerous reasons for educators to incorporate computational thinking into their classrooms, not least of which is its ubiquity in our lives. Hadi Partovi, founder of the Hour of Code movement, points out that students are taught about the inner workings of animals and other topics in schools, but not about how the technology that surrounds them every day (Team ISTE, 2015). By understanding the think that goes into the creation of technology, students become more prepared to interact with a technologically mediated world. Additionally, the practice of coding and computational thinking can promote valuable dispositions, such as persistence, attention to detail, and confidence in dealing with complexity and ambiguity (Computational, 2011, p. 7). In other words, beyond the valuable problem-solving techniques outlined above, incorporating computational thinking into classroom activities encourages practices that will aid students across disciplines and in real-world situations.While CT offers great promise, there are numerous pedagogical considerations if students are to fully benefit from these lessons. While educators may see CT's "big picture" applications, for students transferal of skills across disciplines and outside of the classroom does not typically happen on its own. Salomon & Perkins (1989) describe the need to move from “low-road” to “high-road” transfer if students are to see how computational thinking extends beyond the classroom—or even beyond their current activity. They describe low-road transfer as repeatedly practicing a skill while high-road requires abstraction and reflection (cited in Voogt, et al., 2015). Pedagogically, this means that if educators want students to reap the full benefits of computational thinking, we not only need to integrate it into our lessons, but also explore with students its implications in other fields through dialogue and reflection. Voogt, et al. (2015) also acknowledge the difficulties educators may find in first understanding the still-emerging concept of CT and then finding a way to relate it to their disciplines. Fortunately, there are resources like the Computational Thinking in K-12 Education: Teacher Resources (2011) and Google Courses on the topic that offer problem-solving activities across a variety of disciplines. These offer adaptable lessons that apply to topics that include research skills, writing, science, logistics, history, and more. As teachers increasingly realize the potential for CT to address issues across subject-matter, they will be more prepared to effectively pass that understanding and skill set onto students.
In an effort to spread awareness of CT, free and simple coding tutorials are increasingly being made available to learners of all ages. This week I had the opportunity to try a couple of simple introductions to coding.
You can see my novice coding efforts using block coding from Code Studio by following this link: https://studio.code.org/c/557835175
The result of my hour of coding Python from Trinket can be seen below. If you hit the "play" button, the coding on the left runs the program on the right.
While programming a turtle to decorate a holiday tree may not be a major step forward for humankind, in writing this short program I gained an appreciation for the type of logic, systematic thinking, and problem-solving that CT promotes. While both tutorials were relatively simple, they challenged me to break each "problem" or challenge down by looking at what units of code drove what action. By understanding that, I was able to abstract overall principles, duplicate, and adjust code to solve each new problem. I also gained an appreciation for the dispositional skills necessary for this type of thinking, particularly the persistence required to debug when code isn't working and to keep trying new configurations until I found what worked.
References
Computational Thinking in K-12 Education: Teacher Resources, 2nd ed. (2011). Computer Science Teachers Association (CSTA) and the International Society for Technology in Education (ISTE).Google Course. (n.d.) Computational Thinking for Educators. Retrieved from https://computationalthinkingcourse.withgoogle.com/course
Richie, M. (2015). 5 Things You Need to Know About the Hour of Code. Getting Smart. Retrieved from http://www.gettingsmart.com/2015/10/5-things-you-need-to-know-about-the-hour-of-code/
Team ISTE. (2015). Hadi Partovi: Teach computer science to all students. ISTE. Retrieved from https://www.iste.org/explore/articleDetail?articleid=580&category=Featured-videos&article=Hadi+Partovi%3a+Teach+computer+science+to+all+students
Voogt, J., et al. (2015). Computational thinking in compulsory education: Towards an agenda for research and practice. Educational Informational Technology, 20:715–728. DOI: 10.1007/s10639-015-9412-6

I often tell my students to look for patterns and the generalizations when we are covering a topic in class. An example would be what qualities do great leaders share and then ask them to compare past presidents. I think computational thinking teaches exactly that. To be completely honest I was not very familiar with computational thinking and coding until this assignment. But I find it to be very beneficial in the skills that are needed for computational thinking and plan to use this in my own classroom. I also learned to appreciate the systematic thinking when completing the tree project because it was very challenging for being a simple beginners project. I am curious to see how my middle school students would handle a similar project.
ReplyDelete