Computational Thinking and Problem Solving
When I learned the Basics of Programming courses on Code Academy website, I found out that many practical problems are transferred into a mathematical or logical problem, which made many troublesome problems become clear to understand and solve. For example, the course uses a hamburger-making process to explain the concept of function. It is easy to understand that making a hamburger is step by step, but for many other problems, usually it is not clear about how to carry it out in such a way. However, if people can decompose a complicated problem into clear smaller and easier problems that can be solved in sequence, like a computing way of problem solving which translates solutions into instructions easy enough for computers to understand and execute, and that is as what Evans writes in the book: “computer scientists think about a problem as a mapping between its inputs and desired outputs, develop a systematic sequence of steps for solving the problem,”1 the problem solving process of practical problems will be far more efficient.
Another example is the concept of conditional structure. If applying the concept in the problem solving process in reality, the problem will be processed in a quite logical way. It is just like a reminder for people to always have a plan b, but actually they need to take as many conditions as possible in order to prepare for any probable situation that may appear when coming across a problem. Let’s suppose that a company is going to publish a new application, but before that, they plan to invite some users to experience the beta version of the app and give their feedback in order to ensure the app will be a success. Thus it is important for a manager to predict what kind of situations may happen after the test. First, there may be no severe problems and the app runs well at most of the time, so the company can publish the app as scheduled. Second, if there come some severe problems that lead the system to break down often, the schedule must be delayed, so how to resolve the delaying time? Third, if the users gave a lot of advice, which ones should the company take and make a change, and which ones should it omit and ignore? Should they accept and resolve all the advice? The manager should take all possible situations and outcomes in advance like a programmer inputs instructions including all possible situations may happen in a program. Computer science is invented to transfer practical problems into a way that computers can understand and solve them. Now, people take advantage of it to solve the problem by themselves, and that’s the circulation which leads human society keep stepping forward.
Combining what Wing2 describes as one of characteristics of computational thinking, it is “a way that humans, not computers, think.” Thus people can take full advantage of using it, whether to control computers, or solve any other kinds of problems in reality. To explain more about the point, coding language is a good example to prove it. In primitive society, people invented language because they want to communicate with others to solve problems. Now, people want to communicate with computers in order to solve some bigger problems, thus they invented a new kind of languages. These languages are simple, clear, and understandable to both humans and computers. Moreover, if a person can apply the computational thinking in his or her professional field to solve problems with efficiency, he or she must be very outstanding. This can explain that “one can major in computer science and do anything.”3 Having a good command of computational thinking is important for anyone.
- David Evans, Introduction to Computing: Explorations in Language, Logic, and Machines. 2011 edition. 16.
- Jeannette Wing, “Computational Thinking.” Communications of the ACM 49, no. 3 (March 2006): 35.