What is Computational Thinking?

What is Computational Thinking?

One of the goals of the Callysto project is to "Introduce computational thinking to K-12 students in Canada", so what is computational thinking? Computational thinking involves solving problems by designing questions and processes that can be computed. One way of describing the process of computational thinking is:

  1. Decompose - break down the problem into parts

  2. Recognize patterns - find trends in the problem

  3. Design an algorithm - create a series of steps to solve the problem

  4. Abstract - remove some specifics to generalize the solution

  5. Evaluate - analyze the solution

It's important to notice that there was no mention of "programming" or "coding". Computational thinking within the scope of student learning is generally problem solving or testing in a way that works with technology.

Thinking like a computer scientist means more than being able to program a computer. It requires thinking at multiple levels of abstraction Wing 2006

Computational thinking is an analysis and problem-solving methodology. This is what the Callysto project is incorporating into the K-12 curricula.

Computational thinking can be taught:

  • By incorporating it as a problem solving methodology in traditional lesson plans.

  • Without any need to see/understand code.

  • By defining/analyzing a problem as you may in order to solve the problem using a computational approach.

  • By laying out algorithms which start at a problem definition and lead to a solution.

  • In subjects other than math and science.

What is Data Science?

Data science involves obtaining and communicating information from (usually large) sets of observations. This usually involves collecting, cleaning, manipulating, visualizing, and synthesizing data in order to gain insights and inform the decision-making process.

Data science is often about answering questions like:

  • What happened (descriptive)

  • Why did that happen? (diagnostic)

  • What might happen next? (predictive)

  • How can we make changes? (prescriptive)

Summary

When developing Jupyter notebooks for the Callysto project, it may be appropriate to consider "teaching students to code" as a secondary goal. The highest priority is to introduce computational thinking and data science processes within activities or lessons that students would be doing anyway.

  • Not all Jupyter notebooks need to teach the students how to code

  • Demonstrate thought process while solving the problem

  • How are you breaking down/formulating the problem?

    • Why did you choose to do it that way?

    • What methods are you using and why?

  • What data are important to finding your solution?

  • Which visualizations are you using and why?

The goal of Callysto is to introduce students to the idea of computational thinking and data science within the regular curriculum. We are using Jupyter notebooks because they are designed around the idea of "literate programming", meaning that it is possible to explain not only your code, but the underlying theory, directly in the notebook itself. Jupyter notebooks allow us to break down a problem computationally and explain the solution process.

External References

To get a better idea of computational thinking the following articles are good starting point: