“Computational thinking is what human beings can do: a fundamental skill for everyone, not just for computer scientists”. — Professor Jeanette Wing.
Aristotle is reputed to have said, “The unreflected life isn’t worth living”. It rings for me put another way, “The reflected life is a life that is inhabited and lived”. To get a bit closer to the the flip side of Aristotle’s aphorism, we tangle with:
Computational Thinking has gone on well before computers were invented — in fact computers were a result of computational thinking — and is now called upon to find ways to solve problems making use of new tools: computer technologies.
‘Why’ and ‘How to’ are the the essential foci of computational thinking, followed closely by other ‘solution-seeking’ questions like ‘With Whom’, ‘With What’, ‘When’, ‘Where’ … engaging a myriad of allied thought processes.
Computational thinking probably covers all sorts of thinking:
logical, divergent, creative, logistical and algorithmic thinking, enquiring scientifically, compositional creative reasoning, using intuition, induction, counting, memorizing, putting two and two together, pattern matching, recognizing symmetry,
experimenting, calculating, trial and error, deducing, trying out a hypothesis, aha eureka moments, testing, verifying by observation, questioning, backtracking, debugging, ‘cracking the code’, checking out, comparing, matching, generalizing, abstracting, synthesizing, breaking down into component parts, simplifying, summarizing, transforming, modelling, simulating, thinking it through, putting it on the back burner, awareness and seeing, finding bare bones, reducing, top-down analyzing, bottom-up building, reflecting and meta-thinking, awareness of process, aesthetical, heuristic, procedural and recursive thinking…
It’s not just about mental arithmetic! If you are engaging some of these activities, you are likely to be thinking computationally.
Add your own ideas to the list!
For a more detailed definition:
A Simplified Working Model of Computational Thinking
We use a simplified Model of Computational Thinking in relation to Algorithms and Programming: (ADAGE)
- Algorithmic Thinking — thinking through the steps required to solve a problem.
- Decomposition — breaking a larger problem down into smaller pieces.
- Abstraction — reducing complexity by using or creating tools.
- Generalisation — adapting solutions so that they can be used to solve a wider range of problems.
- Evaluation — assessing whether a program or technique works correctly and efficiently.
Jeanette Wing raises another issue in her recent publication of March 2016
“There also are interesting research questions that I would encourage computer scientists to pursue, working with the cognitive and learning sciences communities. First, what computer science concepts should be taught when, and how?
Consider an analogy to mathematics. We teach numbers to 5-year-olds, algebra to 12-year-olds and calculus to 18-year-olds. We have somehow figured out the progression of concepts to teach in mathematics, where learning one new concept builds on understanding the previous concept, and where the progression reflects the progression of mathematical sophistication of a child as he or she matures.
What is that progression in computer science?”
My interest is in narrowing the focus, and asking the question: “What is that progression in CT applied to Programming”. Why and How? And my first approximation to the ‘what’ is this Course Outline. How does it start? With Computational Thinking and ‘Unplugged Programming’.