“Computational thinking is a fundamental skill for everyone, not just for computer scientists. To reading, writing, and arithmetic, we should add computational thinking to every child’s analytical ability.” Jeannette Wing
Teaching about computer science, especially in out-of-school time programs, is not about creating the next generation of coders or computer scientists that will fuel the future of tech development. It is not about just a few young people receiving new opportunities. It is about empowering all young people for their future – teaching them to succeed in the digital world and enabling them to solve problems.
Computational Thinking (CT) is a problem-solving process essential to the development of computer applications and programming. But it is also a process that supports problem solving across all disciplines, including the humanities, math, and science. The practices of computational thinking are:
- Decomposition: Breaking down data, processes, or problems into smaller, manageable parts
- Pattern Recognition: Observing patterns, trends, and regularities in data
- Abstraction: Identifying the general principles that generate these patterns
- Algorithm Design: Developing the step-by-step instructions for solving this and similar problems
A computational thinker is one who collects data and analyzes it to understand the problem. That person then decomposes (breaks it down) into simpler problems. Instead of solving only that problem, you look for patterns, remove details and abstract so you can solve all problems of that type. You define the steps to solve the problem (the algorithm) and if possible, build a model to simulate, test and debug the solution.
Computational concepts that are common in many programming languages. The Scratch team at Harvard had identified seven computational concepts, which students will use in a wide range of Scratch projects, and which transfer to other programming (and non-programming) contexts:
- sequence: identifying a series of steps for a task
- loops: running the same sequence multiple times
- parallelism: making things happen at the same time
- events: one thing causing another thing to happen
- conditionals: making decisions based on conditions
- operators: support for mathematical and logical expressions
- data: storing, retrieving, and updating values
The team has observed many ways that students learn to understand these concepts. Youth learn computational concepts by:
- experimenting and iterating: developing a little bit, then trying it out, then developing more
- testing and debugging: making sure things work — and finding and solving problems when they arise
- reusing and remixing: making something by building on existing projects or ideas
- abstracting and modularizing: exploring connections between the whole and the parts
As they learn and grow, young people realize that computation is a medium of creation. They learn they can express themselves. We hear them say, “I can create.” They recognize the power of creating with and for others. With this recognition, we hear students express that “I can do different things when I collaborate with others.” This leads to feeling empowered to ask questions about the world, and to solve problems. “I can (use computation to) ask questions to make sense of (computational things in) the world.”
Here are three things you can do to support the development of computational thinking.
- The first is to intentionally create opportunities for learners to engage with computational concepts, practices, and perspectives.
- Second, provide learners with a balance between structure and freedom.
- And finally, make connections both to the big ideas of computational thinking and to learners’ interests and passions. Help them learn to name and claim the computational thinking practices they are using to solve problems.