Thinking computationally is not only programming. It is not even thinking like a computer, as computers do not, and cannot, think. Computational thinking is a new problem solving method named for its extensive use of computer science techniques. It synthesizes critical thinking and existing knowledge and applies them to solve complex technological problems.
Computation
Computer Science’s ultimate significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology—the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Traditional mathematics provides a framework for dealing precisely with notions of “what is.” Computation provides a framework for dealing precisely with notions of “how to.” (Harold Abelson, Gerald Jay Sussman, with Julie Sussman, 1985, Structure and Interpretation of Computer Programs (1st edition), Cambridge, Mass., MIT Press).
Computation provides us with new tools to express ourselves. This has already had an impact on the way we teach other engineering subjects.
For example, one often hears a student or teacher complain that the student knows the “theory” of the material but cannot effectively solve problems. We should not be surprised: the student has no formal way to learn technique. We expect the student to learn to solve problems by an inefficient process: the student watches the teacher solve a few problems, hoping to abstract the general procedures from the teacher’s behavior with particular examples. The student is never given any instructions on how to abstract from examples, nor is the student given any language for expressing what has been learned. It is hard to learn what one cannot express (National Research Council, 2010).
Computational thinking enables you to work out exactly what to tell the computer to do. For example, if you agree to meet your friends somewhere you have never been before, you would probably plan your route before you step out of your house. You might consider the routes available and which route is ‘best’ – this might be the route that is the shortest, the quickest, or the one which goes past your favorite shop on the way. You’d then follow the step-by-step directions to get there. In this case, the planning part is like computational thinking, and following the directions is like programming.
Being able to turn a complex problem into one we can easily understand is a skill that is extremely useful. In fact, it’s a skill you already have and probably use every day.
For example, it might be that you need to decide what to do with your group of students. If all of you like different things, you would need to decide:
(Source: https://www.bbc.co.uk/bitesize/guides/zp92mp3/revision/2)
A computer language is not just a way of getting a computer to perform operations but rather it is a novel formal medium for expressing ideas about methodology. Thus programs must be written for people to read, and only incidentally for machines to execute (Harold Abelson, Gerald Jay Sussman, with Julie Sussman, 1985, Structure and Interpretation of Computer Programs (1st edition), Cambridge, Mass., MIT Press).
Can you think of a program that was made in a way that expresses ideas about methodology?
Read the part of the book (page 57 to page 58) to get familiar with the PROBlem-oriented Explorations, or PROBEs.
4.2.4 Carnegie Mellon University’s Center on Computational Thinking
(12840.pdf)
Discover what is cognitive computing and how basic concepts like Cognition, Artificial Intelligence, and Big Data fit together.
What is the best pedagogy for promoting computational thinking?
A great deal of education research in recent years suggests that students can learn thinking strategies such as computational thinking as they study a discipline, that teachers and curricula can model these strategies for students, and that appropriate guidance can enable students to learn to use these strategies independently. In many cases, a key element of “appropriate guidance” consists of the capabilities afforded by a suitable computational environment and toolkits, such as programming languages for computing and modeling languages for noncomputing domains that are particularly helpful in promoting computational thinking (National Research Council, 2010).
What is the best pedagogy for promoting computational thinking?
A great deal of education research in recent years suggests that students can learn thinking strategies such as computational thinking as they study a discipline, that teachers and curricula can model these strategies for students, and that appropriate guidance can enable students to learn to use these strategies independently. In many cases, a key element of “appropriate guidance” consists of the capabilities afforded by a suitable computational environment and toolkits, such as programming languages for computing and modeling languages for noncomputing domains that are particularly helpful in promoting computational thinking (National Research Council, 2010).
Computational thinking is a problem solving method that synthesizes critical thinking and existing knowledge and applies them to solve complex technological problems. There is a strong indication that the use of computers as a tool for problem solving enhances the students’ abilities in solving real world problems.