Your alarm on your smart phone wakes you in the morning – that’s powered by computer science. You ask your smart speaker what the weather will be that day – that’s also powered by computer science. You order coffee on the Starbucks app on the way to school – you guessed it. You log in to your school computer – mhmm. You pull up your LMS – 😉. You find a video on YouTube – sure is. In the meantime, you check twitter for classroom inspiration – computer science again.
I can continue, but that would grow old quickly, if it hasn’t already. The point of this is to illustrate that computer science has shaped so much of our day-to-day experiences from the type, design, and structure of the digital tools we use to the interfaces, interconnectivity, and functionality of our favorite programs.
Computer science has resulted in this massive bucket for technology and computational systems as well as the mindset and thinking of the scientists behind it all. Computer science itself ranges from the digital skills needed to use technology to the advanced programming skills needed to design that technology.
In many ways, computer science exists in classrooms already if students are using technology, but this just scratches the surface for the possibilities. Teaching computational thinking and coding to kids are also important to learning and not just from a programming perspective.
Computational thinking teaches students how to think critically and logically. It enables students to leverage advancements made possible by computer science, from data collection to in-depth research.
With coding, students learn to translate this critical thinking and problem solving into algorithms that can leverage the power of technology to perform work. It teaches students how to communicate clearly, plan well-articulated and efficient processes, and work within the parameters set by any problem, like the resources or inputs and the desired outcomes or outputs.
Computer science is a game changer for what education looks like, and it is at the core of new approaches to teaching and learning, like project-based or inquiry-based learning, personalization, gamification, and technology integration. And these approaches also benefit from students having experience with computational thinking and coding.
As we describe in this article about computational thinking, computational thinking encompasses a set of skills and processes that enable students to navigate complex problems. Though often used to develop code, computational thinking can be much more broadly applied. This process is a map from curiosity to understanding that makes it easier to tackle large and small problems in both ‘plugged’ and ‘unplugged’ scenarios.
By resulting in an algorithm, computational thinking ensures that the process can be replicated. In other words, it is about the problem-solving process itself just as much as it is about solving the problem.
Moreover, computational thinking builds metacognitive skills that teach students how to think, which is especially important as education moves from content acquisition to higher-order thinking skills.
Computational thinking includes four key concepts: decomposition, pattern recognition, abstraction, and algorithmic thinking.
It’s essential to remember that algorithmic thinking doesn’t necessarily result in code. Instead, algorithmic thinking is a reflection on the process and its multiple iterations, challenges, and solutions. It can help facilitate endeavors like research, project planning, or literary analysis.
While computational thinking is the problem-solving process that can lead to code, coding is the process of programming different digital tools with algorithms. It is a means to apply solutions developed through the processes of computational thinking. Algorithms, in this case, are a series of logic-based steps that communicate with technological tools and help them execute different actions. All those computer science examples shared earlier? Those all rely on code.
When coding programs, there are existing algorithms, like scheduling, route-finding, or compression algorithms, that coders need to know, but there is also the need to create new algorithms.
Beginning to develop students’ coding prowess, however, does not require formal practice with either of these or even access to technology. Have students map directions for a peer to navigate a maze, create visual flowcharts for tasks, or develop a coded language.
In whatever way it’s approached in the classroom, coding encourages students to communicate clearly and logically through an algorithm. To arrive at an algorithm (especially as algorithms advance in complexity), they must apply computational thinking to solve problems and practice metacognition as they do so. In this process, students become more adept technology users in general and can leverage these to advance and deepen their learning as they inherently practice computer science both in and out of the classroom.