Paul S. Wang
A Ph.D. and faculty member from MIT, Paul Wang became a Computer Science professor (Kent State University) in 1981, and served as a Director at the Institute for Computational Mathematics at Kent from 1986 to 2011. He retired in 2012 and is now professor emeritus at Kent State University.
The book From Computing to
Computational Thinking can
be ordered at: computize.org
Why Computational Thinking?
Digital computers brought us the information revolution. People in the information age must deal with computers, smartphones, and the Internet. Information Technology (IT) brought us tremendous benefits as well as brand new challenges. For example, we can ask Google to answer any questions we may have on just about any subject and usually get answers instantly. The Internet spans the globe and brings all parts of the world within instant reach. Yet, it also allows hackers to steal our information or worse, to hold our computer or sensitive data for ransom.
As modern citizens, we need to adopt IT techniques and products effectively, and to wisely mitigate the risks brought by the information highway. That's where computational thinking (CT) can come into play.
What Is Computational Thinking?
Computational thinking is the mental skill to apply fundamental concepts and reasoning, derived from modern computers and IT, in all areas, including day-to-day activities. CT is thinking inspired by an understanding of IT, its advantages, limitations, and potential problems. CT also encourages us to keep asking questions such as “What if we automate this?” “What instructions and precautions would we need if we were asking young children to do this?” “How efficient is this?” and “What can go wrong with this?” CT can expand your mind, help you solve problems, increase efficiency, avoid mistakes, and anticipate pitfalls, as well as interact and communicate better with others, people or machines. CT can make you more successful and even save lives!
Who Promotes Computational Thinking?
Back in March 2006, Dr. Jeannette M. Wing published an article on computational thinking in The Communications of ACM and boldly advocated it as a skill for everyone:
Computational thinking builds on the power and limits of computing processes, whether they are executed by a human or by a machine. Computational methods and models give us the courage to solve problems and design systems that no one of us would be capable of tackling alone. ... Computational thinking is a fundamental skill for everyone, not just for computer scientists. To reading, writing, and arithmetic, we should add computational thinking to every child's analytical ability. Just as the printing press facilitated the spread of the three Rs, what is appropriately incestuous about this vision is that computing and computers facilitate the spread of computational thinking.
Within the academic research community, there have been significant discussions on computational thinking, what it encompasses, and its role inside the education system.
In educational circles, there is an increasing realization of the potential importance of learning to think computationally. According to a recent report on computational thinking by the National Research Council of The National Academies (NRC):
... Computational thinking is a fundamental analytical skill that everyone, not just computer scientists, can use to help solve problems, design systems, and understand human behavior. ... Computational thinking is likely to benefit not only other scientists but also everyone else. ...
A Powerful Way of Thinking
OK great, CT is important. But what exactly are the concepts and methodologies it provides? Here is a list of some main aspects of CT:
• Simplification through Abstraction Abstraction is a technique to reduce complexity by ignoring unimportant details and focusing on what matters. For example, a driver views a car in terms of how to drive it and ignores how it works or is built. A user cares only about which mouse button to click and keys to press and generally overlooks how computers work internally.
• Power of Automation Arranging matters so they become routine and easy to automate. Working out a systematic procedure, an algorithm, for carrying out recurring tasks can significantly increase efficiency and productivity.
• Iteration and Recursion Ingeniously reapplying the same successful techniques and repeatedly executing the same set of steps to solve problems.
• An Eye and a Mind for Details Small things, such as characters in uppercase versus lowercase or with an extra space, can make all the difference. Any piece of data may be subject to interpretation, depending on the context. You need eyes of an eagle, mind of a detective, and a careful and meticulous approach. Overlooking anything can and will lead to failure.
• Precision in Communication Try telling the computer to do what you mean and not what you say ;-). You need to spell it out precisely and completely. Don't spare any details. Vagueness is not tolerated. And contexts must be made explicit.
• Logical Deductions “Cold logic” rules. Causes will result in consequences, whether you like it or not. There is no room for wishful or emotional thinking. Don't we all wish some of this seeps into such things as our politics?
• Breaking out of the Box A computer program executes code to achieve any task. Unlike humans, especially experts, it does not bring experience or expertise to bear. Coding a solution forces us to think at a dumb computer's level (as if talking to a one-year-old) and get down to basics. This way, we will naturally need to think outside any “boxes.”
• Anticipating problems Automation relies on preset conditions. All possible exceptions must be met with prearranged contingencies. Ever said “I'll take care of that later”? Because there is a chance you might forget, according to CT, you should have a contingency plan ready in case you do forget. Otherwise, you have set a trap for yourself.
These are just some of the main ideas. CT offers you many more concepts and ways to think that can be just as, if not more, important.
In the author's new textbook From Computing to Computational Thinking (CRC Press 2015), a new word is defined.
Definition: computize, verb. To apply computational thinking. To view, consider, analyze, design, plan, work, and solve problems from a computational perspective.
When considering, analyzing, designing, formulating, or devising a solution/answer to some specific problem, computizing becomes an important additional dimension of deliberation.
Where to Apply CT?
People say “hindsight is 20/20.” But, since automation must deal with all possible applications in the future, we must ask “what if” questions and take into account all conceivable scenarios and eventualities. Let's look at a specific example. Hurricane Sandy was one of the deadliest and most destructive hurricanes in US history. Thank goodness, it didn't hit Kent or Ohio, for that matter.
With CT at multiple levels, dare we say that many of the disasters from Sandy might have been substantially reduced?
• The New York City subway entrances and air vents are at street level. What if streets are flooded? What if flood water enters the subway?
• What if we need to fight fires in a flooded area? Do we have fire boats in addition to fire trucks? Do we have firefighters trained for boats?
• Most portable emergency power generators run on gasoline. What happens if gas runs out and gas stations are flooded?
• What if the drinking water supply stops? Can we provide emergency water from fire hydrants? In that case, can we use a mobile contraption that connects to a hydrant, purifies the water, and provides multiple faucets?
• What if emergency power generators are flooded? Should we waterproof generators in designated at-risk buildings?
• What if cell towers lose power? How hard is it to deploy airborne (drone?) cell relays in an emergency?
• What if we simulate storm damage with computer modeling and find out ahead of time what to prepare for? So, let's computize at multiple levels and do our best to get 20/20 hindsight beforehand.
CT Success Story
A loop in a program is a construct that applies the same set of steps repeatedly until a certain goal is achieved. This technique is known as iteration in CT.
Iteration of a process has led to the invention of the polymerase chain reaction (PCR), a technique in molecular biology to generate thousands to millions of copies of a particular DNA sequence. Developed by Dr. Kary Mullis in 1983, PCR is now indispensable in medical and biological research and applications, including DNA testing and genetic fingerprinting. The impact of automated PCR is huge and far-reaching. Mullis was awarded the 1993 Nobel Prize in Chemistry for his part in the invention of PCR.
In recounting his invention, Dr. Mullis wrote in his book Dancing Naked in the Mind Field:
I knew computer programming, and from that I understood the power of a reiterative mathematical procedure. That's where you apply some process to a starting number to obtain a new number, and then you apply the same process to the new number, and so on. If the process is multiplication by two, then the result of many cycles is an exponential increase in the value of the original number: becomes 4 becomes 8 becomes 16 becomes 32 and so on.
If I could arrange for a short synthetic piece of DNA to find a particular sequence and then start a process whereby that sequence would reproduce itself over and over, then I would be close to solving my problem.
At the time of the invention, the “polymerase" and other related DNA duplication techniques were already known. It was the “chain reaction" part that was missing. Well, we have Dr. Mullis and his computational thinking to thank for the invention. And what a significant invention! The New York Times described it as “highly original and significant, virtually dividing biology into the two epochs of before PCR and after PCR.”
Still need more convincing? Just ask the Cleveland Clinic, the Innocence Project, any guiltless person freed from jail, or people finding their genealogical roots, through DNA testing.
In this brief overview, it is impossible to cover the many aspects of Computational Thinking and how it can help individuals, organizations, and society as a whole. We may continue with a series of articles in the future. For now, it suffices to say that, as history demonstrates time and again, a society, that is better educated in the next dominating technology and that can merge a new way of thinking into different disciplines, will have a significant competitive edge over others.