Computational Thinking has been identified as the bedrock of 21st century skills which anyone should have.
1 What is computational thinking? Wing first defined computational thinking in her 2006 in ACM Communications?Computational thinking involves solving problems,designing systems,and understanding human behaviour, by drawing on the concepts fundamental to computer science?
2 One of the biggest contribution of computational thinking is,as stated,in the area of solving problems.Computational thinking helps one to ask how difficult the problem is to solve,and what the best way to solve the problem is.In this article we will share a problem solving framework inspired from how computer scientists solve problems.This framework is called PCDIT.
PCDIT is a problem solving framework to help novice programmers to write code.
At the same time,we can apply such framework to other context and situations even where computer code is not involved.The framework consists of five non-linear steps that programmers do in solving problems.It starts with P which stands for (P) roblem formulation.
In this step, one asks questions like: What is the input to this problem? What do we have in hand to start with? What is the output of the problem? What do we want to achieve? What is the computation involved? Or what is the process we need to do? Though this steps is simple as it sounds, novice programmers may have difficulties in identifying the input and the expected output.Sometimes they don’t ask further questions like what kind of input they have,what the domain of the input is,or even what the boundary cases are.
Thinking through this problem formulation may sound abstract,and that is where step C comes into
play.This step stands for (C)ases,or in programming is more commonly called Test Cases. Rather than
jumping straight into implementing a solution, a programmer designs test cases based on the
problem formulation.Designing test cases may help us to formulate the problem in a more precise manner.It may also help us to think of the boundary cases.The main point of this step is to go into the concrete example and detailsof the various cases in this problem.
(D)ESIGN OF ALGORITHM
Thinking about various cases does not only help us to re-formulate the problem to be more precise, it also helps us to bridge to step D,which stands for (D)esign of Algorithm. By looking at the Cases and work on
those cases, we can start writing our step by step approach in solving the problem.These steps
constitute a solution to the problem,an algorithm.The key element in this step is to write those steps and
re-write them again.One should refine those steps, looking for patterns and common steps that is to be done again and again. Almost all algorithmic solutions comes into three kind of basic structures: sequential, branching,and iteration.We will discuss these patterns in another articles, but now, we are ready for implementation.
The last step is called T for (T)esting. One should always test their implementation and see if their solution works.What may not be obvious is that such testing should not be done only after the whole implementation is finished.Rather,it should be done in small bites as the solution is being implemented. One should learn to test in steps as well as to test for all the possible cases.We can see how these steps may not be linear as we can discover more cases or even found out that the solution may need some refinement.There maybe cases when we need to refine our problem formulation.
In summary, PCDIT framework which is used to help programmers writing a computer code can be used consciously or unconsciously by anyone in any other problem solving situations.Such computational thinking helps one to solve problems systematically.Such thinking helps one to solve the problems more thoroughly by analyzing different cases of the problems.Such thinking encourages iteration and refinement of the solutions as well as testing those solutions in bites and in big chunks.Maybe that is why computational thinking is identified as the bedrock of 21st century skills for today’s world and the future.
(1) Kurshan,B.Teaching 21st Century Skills For 21st Century Success Requires An Ecosystem Approach
https://www.forbes.com/sites/barbarakurshan/2017/07/18/teaching-21st-century-skills-for-21st-century-successrequires-an-ecosystem-approach/#116570f73fe6 (accessed Jul 24,2018).
(2) Wing,J.M.Computational Thinking.Commun. ACM 2006,49 (3),33?35.