Computational Thinking

From IAE-Pedia

Jump to: navigation, search


Contents


Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer science. Computational thinking is thinking in terms of abstractions, invariably multiple layers of abstraction at once. Computational thinking is about the automation of these abstractions. The automaton could be an algorithm, a Turing machine, a tangible device, a software system—or the human brain. (Carnegie Mellon, n.d.) [Bold added to emphasize use of one's brain.]

[edit] Introduction

Many adjectives describe modes of thinking: Abstract, analytic, conceptual, concrete, convergent, creative, critical, deductive, divergent, strategic, synthetic, tactical…and computational and procedural.

Computational and procedural thinking are fundamental ideas in the discipline of computer and information science. A computer is a machine that can automatically, rapidly, and accurately carries out the steps in certain types of procedures. Computer programmers think in terms of solving problems and accomplishing tasks through the use of procedures.The procedures may be algorithmic or heuristic, or a combination of these two approaches.

  • An algorithm is a step-by-step set of directions guaranteed to achieve a task, which may be to solve a particular problem, in a finite number of steps. You probably have memorized algorithms for adding a column of positive integers and for multiplying a pair of integers.
  • A heuristic is like an algorithm except that accomplishment of a specific task or solution of a specific problem is not guaranteed. Many heuristics are called “rules of thumb,” simple-sounding guides that often conceal complexities.

For example, a heuristic for solving a complex problem is to break the problem into smaller, more manageable problems. Solve each of the smaller problems, put the results together, and the larger problem is solved.

Brainstorming is a group process heuristic for addressing a complex problem. In brainstorming, people suggest ideas and these are collected without comment by the person facilitating the brainstorming. Later, the group analyzes the brainstormed ideas, deciding on which ones are worthy of further study.

Developing algorithms and heuristics can be very mentally challenging. Here is an algorithm for looking up a definition a for a word in a dictionary.

Start at the first word defined in the dictionary and compare it with the word you are looking up. If they are not the same, go to the next word that is defined in the dictionary. Continue until you find the word, or until you have looked at every word defined in the dictionary. In the latter case, you know the word is not defined in the particular dictionary you are using.

This is, of course, a poor algorithm. Think about how you go about looking up a word in a dictionary. Try to write this process down so that someone else (such as third grader) can follow your set of directions. You can see that it is often quite difficult to figure out how to write down an algorithm, and it is sometimes quite difficult to learn to use an algorithm.

Now, here is another approach.

In the Google search engine, enter the term define: followed by the word that you want to look up. Very quickly, the search engine will provide you with some definitions or tell you that the word you want to find a definition for is not in its dictionary.

In this search engine approach, you (using your brain) decide about what word you want to find a definition for. Presumably you have some purpose in mind. Your brain directs your fingers to key the appropriate search information to the Google search engine. You then read the results, thinking about which of the definitions best fits your need.

This provides a good example of computational thinking. You use your physical and mental capabilities, and your sense of purpose, to work with the capabilities of the Web and the Google search engine to solve a problem. Note that it is quite a bit easier for a young student to learn to use the Google search engine approach than it is for the student to learn to look up a word in a paper dictionary—and it is a lot faster.

Computational thinking is an idea important to all people, not just computer scientists. That is, one need not be a computer professional to take advantage of the complementary capabilities and qualities of human and computer.

[edit] A Tidbit of Computer History

When electronic digital computers were first being developed starting in the late 1930s, people mainly thought of them as aids to doing arithmetic computations. Indeed, during World War II, large numbers of people spent their workdays running calculators, doing the calculations needed to support the war efforts. These people were called Computers.

The first full scale electronic digital computers built during and shortly after WWII were quite good at arithmetic computation. One electronic digital computer could do the work of several hundred human "Computers." Now, relatively inexpensive desktop computers are more than a million times as fast and a billion times as cost effective as the first commercially available electronic computers built in the early 1950s.

This rapid pace of increase in capabilities and decrease in cost has proven to be a major challenge to our formal K-12 and higher education systems. Nowadays, every teacher, at every level and in every academic discipline, is faced by the challenges of how computers are affecting the content, instructional processes, and assessment in the subjects they teach.

[edit]
1962 Historical Quote

The term computational thinking is quite new (Carnegie Mellon, n.d.). However, the ideas are not new. The following quote is from a 1962 book "The Thinking Machine":

But above all it is important to remember that doing arithmetic, solving mathematical equations by sheer bulldozing power, is not the most significant of the machines' accomplishments. Computers are thinking aids of enormous potentialities. Merely having them around is enough to change the way we think, to force investigators in all fields to think through their problems along new lines. We are at the beginning of a trend that is certain to bring machines which not only learn, but which will accelerate the rate at which we ourselves learn. The revolution to come is difficult to appreciate fully. We only know that science, government, and industry will change swiftly and radically in the years ahead.
Computers are too important to overrate or underrate. There is no real point in sensationalizing or exaggerating activities which are striking enough without embellishment. There is no point in belittling either. It is hardly an insult to existing computers that they fall considerably short of the human brain and are not creative. The difference simply emphasizes with new force the complexity and capabilities of the nervous system, and challenges us to study it as well as our machines more deeply. The more we learn about computers, the better we shall understand and appreciate the nature of thought - and the better we shall use our brains. (Pfeiffer, pp. 86-87)

[edit] Three BIG Ideas

Historically, over the years three important computer-related ideas emerged:

  1. Computers could process both numeric and non-numeric symbols, and thus could be used for many tasks other than just arithmetic computation.
  2. A discipline called Computer Science (CS) or Computer and Information Science (CIS) developed and eventually became a significant area of study, research, and development.
  3. Information and Communication Technology (ICT) provides powerful aids to solving problems in every academic discipline. It is a major change agent in human societies throughout the world.

Many of the early CIS Departments in colleges and universities were formed by faculty who split off from the Mathematics Department, the Business School, or the College of Engineering. Initially, many computer scientists were interdisciplinary scholars, studying both CIS and deep applications of this new discipline in other disciplines.

Eventually, CIS grew in both breadth and depth, and it because an important discipline in its own right. Sub disciplines were developed such as analysis of algorithms, artificial intelligence, computability, databases, networking, and so on.

Moreover, computers became more and more cost effective, and the whole field of Information and Communication Technology (ICT) blossomed. Now a wide range of ICT products and services are routine, everyday parts of our lives. The widespread use of cell phones with a built-in digital camera provides a good example. Nowadays, many of these cell phones are also used to listen to recored music, to view television, and to play games.

You know, of course, that reading and writing are both academic disciplines in their own right, and are also important aspects (components) of the other academic disciplines. A strong parallel exists between reading/writing and the overall computer field. We have the discipline of computer and information science, and we have computers becoming an important component of every other academic discipline.

[edit] Computational Thinking

A discipline is far more than a collection of isolated pieces. Learning a discipline and learning to use a discipline at a high level are far more than learning isolated facts, tools, and ideas. As a discipline grows and matures, its leaders give considerable thought to identifying unifying themes. Computational thinking is a unifying theme in the computer field and in uses of computers in every discipline

Using a computer system involves telling the system what you want it to do. Of course, you need to think about what you want the computer to do. You need to think about the overall problem-solving task you are trying to accomplish and how use of a computer might or will contribute to accomplishing the task.

As mentioned, computational thinking refers to people and computers working together to solve problems and accomplish tasks. As Jeannette Wing, a highly respected computer scientist, stated:

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 confronts the riddle of machine intelligence: What can humans do better than computers, and what can computers do better than humans? Most fundamentally it addresses the question: What is computable? Today, we know only parts of the answer to such questions.

(We should always remember that part of “better” lies within the essence of what it is to be a human and what a computer is. Humans have intrinsic purposes; a computer as such cannot.)

Two other references to Jeannette Wing's work of interest:

  • An interview discussing computational thinking.
  • A newspaper article in which she gives advice to students.

Jeannette Wing coined the term computational thinking while she was head of the Computer Science Department at Carnegie Mellon. Quoting from the home page of Carnegie Mellon's School of Computer Science:

At Carnegie Mellon, computational thinking pervades our culture. In our research, computer science interacts with almost every other discipline on campus. Computational biology, computational chemistry, computational design, computational finance, computational linguistics, computational logic, computational mechanics, computational neuroscience, computational physics, and computational and statistical learning are just a few examples of such interdisciplinary fields of study. In our education, our undergraduate computer science curriculum and our outreach programs teach students how to think like a computer scientist. Our message is that computer science is not just about programming, but about thinking. Our long-term vision is to make computational thinking commonplace for everyone, not just computer scientists.

[edit] Computer Programing

A computer program is a detailed step set of instructions that can be interpreted and carried out by a computer. A computer is a machine that can quickly and accurately follow (carry out, execute) the detailed step-by-step set of instructions in a computer program. Computer programmers design, write, and test computer programs—so they are deeply involved in doing computational thinking.

However, all computer users are involved in computational thinking at some level, as they interact with a computer and tell it what they want done. This is true whether you are playing a computer game, retrieving information from the Web, or using a word processor.

[edit] Modeling and Simulation

The underlying idea in computational thinking is developing models and simulations of problems that one is trying to study and solve. We are all familiar with the idea of developing mental models—we form mental representations of a problem and often we "play the mental images" in our heads, doing a mental simulation.

We are also all aware of the value of being able to develop a mathematical representation of a problem. For example, this is what is being taught through the use of word problems in a math course. The value of math modeling lies in the huge accumulation of knowledge about solving a wide range of different math problems. If a problem can be represented mathematically (that is, if a math model can be developed for a problem) then this might well prove to be a powerful aid to solving the problem.

Suppose, for example, I am looking at a crowd in a sports stadium. I see just nine empty seats in a section that has 36 seats per row and 17 rows. How many people are seated in this section? That's easy enough. A math model for this problem is 36 x 17 - 9. Notice that the model is a pure math model. It does not say anything about people, what sport is being played, how comfortable the seats are, and so on. Notice also that this may be an incorrect math model. For example, it does not take into consideration the possibility of adults holding children on their laps or of an extremely large person filling two seats.

A more complex example: A person standing on the earth throws a stone (a baseball player throws a baseball; an artillery piece shoots a projectile). What pathway will the stone (baseball, projectile) follow and how far horizontally will it go? This is a relatively complex question because an answer depends on characteristics of the projectile, initial velocity, height above the ground the stone is released, initial angle, air resistance, and gravity.

This problem has been formally studied extensively for hundreds of years by physicists and mathematicians. (Hominids have been studying the problem less formally for two million plus years.) If there is no air resistance and the gravity is a constant, then the pathway is a parabola (a quadratic function). The horizontal distance traveled can be calculated by finding roots of a quadratic equation and doing some simple arithmetic.

A math model of the "real world" problem is far more complex. A computer program to solve this problem can be thought of as a computer model (a physics model, a math model) for this problem.

A excellent, easy to use computer program to solve this problem is available at http://csip.cornell.edu/curriculum_resources/CSIP/Bernier&Fogleman/projectile.html. The graphical representation to solutions to this problem makes it easy to see the effects of air resistance and the effects of shooting a projectile at different angles.

Each discipline has its own special vocabulary and notational system for modeling the types of problems it addresses. Learning to think in the vocabulary and notation of a discipline is a key aspect of developing a high level of expertise in the discipline.

Computer models have some of the characteristics of mental modeling as well as some of the characteristics of math modeling and the types of modeling done in other disciplines. If a problem lends itself to computer modeling, then the computer may well be able to carry out the steps (procedures, symbol manipulations) needed to solve the problem.

Thus, computational thinking, integrating human thinking with the capabilities of computers, provides a powerful new way to solve problems. The computer aspects of computational thinking require one to know capabilities and limitations of computers and how one communicates with (interacts with) a computer system. From an educational point of view, a key aspect of studying any discipline now includes:

  1. Learning some of the capabilities and limitations of computers as an aid to representing and solving the problems of the discipline.
  2. Learning how to actually make use of these computer capabilities.
  3. Learning how to think about problems in the discipline both from a traditional point of view and from a point of view of possible uses of computers to help solve the problem.

[edit] Effects in Different Disciplines

Computers have had a much bigger impact in some disciplines than in others. For example, you are well aware of use of music synthesizers and the digital representation of music. The music industry has been significantly changed by computers. Nowadays, computers and computational thinking are key parts of the overall discipline and music. However, this does not mean that older components of the discipline of music have gone away. The discipline of music has done a relatively good job of merging the old with the new.

Similarly, you are familiar with digital still and video cameras, and the computer editing of pictures and video. Computer graphics has greatly changed the movie and graphic arts industries. As with music, the graphic arts have done a good job of merging the old with the new. Nowadays, you can easily see this in many of the videos you see on television and at movie theaters.

Probably you write using a word processor. Writing is a challenging mental task. For thousands of years, people have learned to write using relatively simple tools. The invention of the typewriter proved useful to many people, as it increased the legibility of their writing and the speed of getting their thoughts down on paper.

Now we have word processing and desktop publication. As you use a keyboard or voice input to your computer system, you are creating a computer model of the writing task you are attempting to accomplish. This might be done in conjunction with adding pictures taken with a digital camera and graphics developed using computer graphics software. As you write, your word processor may be doing a search for possible misspelled words and possible errors in grammar. You may be making use of a computerized dictionary or thesaurus. You may be using the Web to find materials. In addition, you probably take advantage of the editing features of a word processor, such as moving sentences and paragraphs. Finally, you may use the desktop publication capabilities of a computer system to produce a nicely laid out and formatted final document, which may or may not appear as ink on paper.

As a final example, consider math. The development of writing allowed for the development of mathematical notation and eventually the development of "paper and pencil" computational algorithms. For thousands of years, math education has included a strong emphasis on learning the words and symbols in the language of mathematics, learning to represent problems in this mathematics language, and learning to do the types of mental and paper and pencil computations needed in solving commonly occurring types of problems. Note that the terms "computation" and "algorithm" apply to arithmetic, but they also apply to algebra, calculus, statistics, and so on.

The search for aids to the symbol manipulation (the computations based on algorithmic heuristic procedures) has been going on for many thousands of years. The abacus was a very important early success—an aid many use today. Math tables, logarithms, the slide rule, and mechanical calculators were all quite important aids to arithmetic computation.

Now, we have electronic digital calculators and computers. We have quite inexpensive solar battery-powered scientific calculators that are superb improvements over earlier aids to numerical computations. We have computers that can do the types of symbolic manipulation needed in many different algebraic, calculus, and statistics computations.

These computer systems can graph functions and statistical data, but they can also do graphical displays of the types of models used in many other disciplines. For example, an architect can develop a computer model of a planned building. The computer can do computations to test the structural integrity, fire and storm resistance, heating and cooling requirements, and so on. A computer system can provide users with a three dimensional structured walk-through of a planned building before physical work begins. These are all humongous computational tasks, based on accumulated knowledge in math, physics, and other disciplines.

[edit] Summary

Humans and computer systems, working and "thinking" together, are now routine approaches to problem solving in many different academic disciplines. In the examples provide above, the power of computers has substantially changed large parts of various disciplines.

Computer hardware capabilities are continuing a rapid pace of improvement. [http://iae-pedia.org/What_the_Future_is_Bringing_Us#Moore.27s_Law (See Moore’s Law). A steadily increasing range of problems can be solved through computer modeling and making effective use of the capabilities of computers. A steadily increasing amount of the accumulated knowledge of humans is being put into a form in which a computer system can do art of the work of making use of the information. (note, however, that software capabilities have increased much more slowly than hardware capabilities—in part because software capabilities are often qualitative.)

Thus, there are strong arguments for helping students to learn to think both in terms of the capabilities of their own brains and also in terms of the capabilities of computers. Computational thinking is a key component of a modern education. “A key component—not “the key component”; recall the list of adjectives at the start of this entry.)

[edit] References

Carnegie Mellon (n.d.). Center for Computational Thinking. Retrieved 3/16/08: http://www.cs.cmu.edu/~CompThink/.

Computer Science Unplugged (n.d.). Retrieved 9/13/07: http://csunplugged.com/. This material is primarily aimed at precollege students and their teachers. Quoting from the Website:

Computer Science Unplugged is a collection of activities designed to teach the fundamentals of computer science without requiring a computer. Because they're independent of any particular hardware or software, Unplugged activities can be used anywhere, and the ideas they contain will never go out of date. Unplugged activities have been trialled and refined over 15 years in classrooms and out-of-school programmes around the world.

Pfeiffer, John (1962). The Thinking Machine. Columbia Broadcasting System.

Pinker, Steven (2008). The computational theory of mind (11 minute video). Retrieved 4/13/08: http://www.youtube.com/watch?v=LVrb5ClvDho.

Wing, Jeannette M. (March, 2006). Computational thinking. Communications of the Association for Computing Machinery. Retrieved 9/11/07: http://www.cs.cmu.edu/afs/cs/usr/wing/www/publications/Wing06.pdf. See also (retrieved 9/11/07): http://www.post-gazette.com/pg/07086/772791-96.stm.

[edit] Authors

This page was initially developed by David Moursund and Dick Ricketts.

Personal tools