THE RELATIONSHIP OF COMPUTATIONAL THINKING TO MATHEMATICS AND ENGINEERING
For some, computational thinking is careful reasoning about the methods of doing things that complements and combines mathematical and engineering thinking. The special relationship of computational thinking to mathematics is historical, but looking toward the future, computational thinking will be critical in the social and life sciences as well. Computational thinking currently plays an important role in psychology, linguistics, graphics, and economics and is playing an increasing role in complex engineering efforts such as nanoscience and health. Computational thinking will apply much more broadly than most of the other scientific modes of thought. The conceptual space to which computational thinking applies is much broader than most people imagine, and many of the advances are independent of the usual constraints on natural science.
Computational thinking is closely related to, but not identical with, mathematical thinking. Both are deeply involved with abstraction and reasoning with recognized simplified models. Gerald Sussman argued that computational thinking and mathematics both have an “underlying linguistic structure … [that is] language for precise descriptions and about how to do things and language describing the structure of things … such languages are essential to clear thinking. But mathematical thinking is
more about abstract structure than abstract methodology.” Jeannette Wing also added the qualifier that while similar to mathematical thinking in many respects, computational thinking does have to consider the physical constraints of the underlying computer (whether machine or human).
Paulo Blikstein highlighted that since both mathematics and computational thinking are tools for representation, there may be an opportunity to use computational thinking to represent complex processes and relationships in a more comprehensible manner than mathematics. One example he provided came from his observations of how engineering courses were taught. He immediately noticed that within a common engineering course, mathematical equations appear “approximately one every 2 minutes.” Blikstein added that often these equations are around 10 variables long, and insufficient time is allocated to actually explain the equations. He thinks that “this speaks to the failure of one particular way to think about knowledge and one way to represent knowledge, which is representing knowledge as differential equations and mathematical forms in general. … Computational representations might offer a lot of advantages over mathematical representations that we might be able to explore.”
Sussman gave an example of teaching students how to analyze electrical circuits. He noted that the typical pedagogical approach for this problem is to teach the node method—which in practice many students find difficult to implement in any practical way in solving problems in circuit theory. However, presenting students with a well-written computer program designed to solve such problems as an expert would enable them to internalize the program themselves and execute it much as that expert would.
Several workshop participants recognized an overlap between engineering and computational thinking. Even if it is not formally accepted in the engineering community, engineering schools are “doing a lot of computational thinking,” said Blikstein. Wing argued that both computational thinkers and engineers think about design, constraints, safety, performance, and efficiency. Design issues considered include “simplicity, elegance, usability, modifiability, maintainability, and cost. Wing said that “computational thinking is guided by particular concerns/constraints such as speed, space, and power [and computational thinking is] more like physics and engineering in this respect…. [It is] these kinds of concerns that determine how good an abstraction is. When we are defining abstractions, of course, it is very similar to engineering thinking.”
At the same time, computational thinking is unlike engineering. As Wing pointed out, “In software we can basically do anything; we can
actually build virtual worlds that are unconstrained by physical reality.” Sussman argued that as contrasted to engineering involving physical objects, “computational thinking is engineering where we are not given a hard time by the fact that the physical world produces tolerances, that there is error in the construction of parts. As a consequence, instead of being limited as we are in mechanical or electrical engineering by tolerances and that sort of thing, we are only limited by the things we can think about, by the complexity that we can control in our minds.” In other words, computational thinking invents the abstractions that it manipulates.
Peter Lee noted that several of the 14 engineering grand challenges for the 21st century identified by the National Academy of Engineering had a strong information technology/computer science/computational thinking flavor to them. These included reverse engineering of the human brain; advancing personalized learning; securing cyberspace; enhancing virtual reality; advancing health informatics; and engineering the tools of scientific discovery.1
One important aspect of the computational thinking–engineering connection is managing complexity. Engineered systems are becoming more and more complex. But Bill Wulf noted that software engineering was arguably the first field to face challenges related to complexity, and the need to manage complexity is important in computational thinking. As noted in the Being Fluent with Information Technology report,2 managing complexity entails tradeoffs. For example, one solution to a problem may involve complex design but entail straightforward implementation, whereas another may involve a simple design but a costly implementation. A solution will often result in components of a system interacting in complex, unexpected ways, and the resources available to implement a solution may be inadequate. Managing such dimensions of a problem’s solution is an exercise in managing complexity.
So I like to think about computational thinking as complementing and combining mathematical and engineering thinking. For instance, we clearly draw on mathematics as our foundations. We also draw on engineering, since our systems actually operate in the real world.
See National Academy of Engineering, “Grand Challenges for Engineering.” Available at http://www.engineeringchallenges.org/. Accessed December 28, 2009.
NRC, 1999, Being Fluent with Information Technology. Washington, D.C.: The National Academies Press. Available at http://www.nap.edu/catalog.php?record_id=6482. Accessed December 28, 2009.
DISCIPLINARY APPLICATIONS OF COMPUTATIONAL THINKING
Workshop participants shared their experiences in applying computational thinking in different fields to illustrate how computational thinking might be relevant. Brian Blake described the exchange as “trying to understand how computational thinking, as it is embedded in computer science or computational fields, is used in noncomputational fields to see how what we know in the computational field can be used in other fields.” The hope was expressed that by describing some of these different applications, it would be possible to identify concepts of computational thinking through its application in one discipline that could be utilized to benefit another discipline and indeed to better define and describe computational thinking.
Medicine and health care. Peter Lee described how sequencing techniques commonly employed in computational thinking can help to improve the chance of success in matching organ donors. On a small scale, the task of cross-matching multiple donors and patients is a relatively simple computational thinking exercise. At the large scale at which the medical profession would need to perform these matches to improve donation matching across the nation, this type of matching poses a significant intellectual challenge for computational thinking practitioners. Ian Foster noted that the medical profession is currently trying to cope with enormous amounts of crucial but confidential data. This information must be easily accessed and transferred among medical professionals to improve care but protected from access and misuse by those outside the medical profession. Foster argued that with the advent of health care informatics, “health care is arguably no longer a medical problem, but a computing problem.”
Archeology. Edward Fox works with archeologists attempting to look at trends across different excavation sites. He said that the archeologists he collaborates with have come to realize that “if you are going to study archaeological trends across different areas, and the commerce that takes place between sites, then you have to merge the data and you have to use common terminology.” For example, archeology often depends on archived data, where differences in recording protocols, terms, measurement units, and languages make accessibility a challenge.3 Moreover, archeological researchers need to organize large amounts of qualitative data so that they can be retrieved computationally. Computational thinking approaches to information retrieval, data fusion, and information
integration are especially useful in this area, since there is a need “to classify and search for numerical, textual, and visual data simultaneously” and a need for “an e-science that marries the interconnectedness of digital research tools with the introspection enabled by traditional recordkeeping.”4
Traffic engineering. Modern-day traffic lights are usually run by computer systems that alternate traffic signals based on algorithms and embedded sensors and networks. The most effective traffic algorithms are built using data collected on traffic patterns and other relevant variables in order to optimize flow. The processes by which these algorithms are developed and tested involve computational thinking. The methods skilled drivers may use to navigate them also reflect computational thinking. Christopher Hoffmann noted the example of the veteran bus driver: “The bus driver should know that if he steps on it [the gas pedal] too fast, he gets stuck at the next traffic light anyway.”
Cancer research. Peter Lee noted that agent-based modeling simulations have helped researchers understand that a “tumor is not really a simple group of cells that have their own agenda. They tend to live in an environment where the cells nearby sort of form a nurturing matrix for them and respond to various requests from the tumor for additional blood vessels, for example, or nutrients or whatever. This is something that invalidates a lot of the existing medical science and puts it more into a systems-thinking context, something that I think we [computational thinking scholars] can contribute to.”
Public policy. An increasingly technology-based society creates the need for techno-savvy policy makers. For example, important issues related to information technology regarding privacy, copyright, and spectrum allocation are prominent on the public policy agenda, issues for which an understanding of computational thinking is very helpful. Bob Sproull illustrated the point by suggesting that a legislator might need an understanding of computational thinking in order to be a smart customer of a complicated IT system for the Social Security Administration or the Internal Revenue Service.
Music. Peter Lee described a summer program where young students attempt to write computer programs that allow computers to compose original music. The program challenged students to write a “computer program that could compose or a machine that could take as input some description of Bach and then produce beautiful music.” The process of building such systems makes use of computational thinking in three ways. First, it requires that a programmer analyze and decompose
musical qualities into abstract computational thinking concepts. Second, the program must construct algorithms and programming language that access and demonstrate the aforementioned musical qualities artificially. Finally, by observing this process of decomposition and composition, one can learn more about human intelligence and problem-solving processes.
Law. Kevin Ashley discussed four ways computational thinking applications advance the legal practice: logic debugging, testing, modeling, and information retrieval.
Debugging through the reduction or elimination of “syntactic ambiguity” or “logical ambiguity” is almost always present in any kind of legal drafting. Whether in statutes, contracts, or insurance policies, unintentional ambiguities in legal language are common and must be debugged. Ashley commented that this process involves “getting the logic right, in a manner that’s kind of similar to what computer programmers have to do in getting the logic right in a line of code.”
The development of good test cases reflects an important similarity between computational and legal thinking—both test propositions (or statements) against test cases. “Test cases are important in debugging in programming as well [as in law]—real and hypothetical counterexamples, exceptions, things like that.” Ashley pointed out that they can help a legal professional anticipate how successful an argument is likely to be by simulating the application across various test cases.
Modeling complex legal processes and flows can help legal professionals to understand “the flow of control through a statute, for the process of statutory interpretation, for predicting outcomes, for structured arguments.”
Information retrieval techniques are needed for legal information systems that can represent the justifications and context in a reasonable way. Ashley pointed to the role of precedent, or relevant preceding judgments in similar cases, in legal arguments. Computational thinking can help lawyers to develop good targeted searches based on complex criteria.
Ashley also expressed a caution that computational thinking might lead to over-mechanization of complex processes. “Legal problem solving is highly context-dependent in ways that may not be anticipated. As a law professor, I have to be very cautious about recommending computational thinking to law students, because it might lead them to focus more on a mechanical application of a predefined method rather than on the context and the opportunities in the actual problem to be solved. I have an obliga-
tion not to mislead. We don’t want mechanical jurisprudence here. I think this caution probably applies in a lot of other areas as well.”
Al Aho referred to Christos Papadimitriou’s talk “The Algorithmic Lens: How the Computational Perspective Is Transforming the Sciences”5 as an exemplar of a compelling story about the power of computational thinking. Briefly, Papadimitriou presented a number of vignettes from mathematics, physics, biology, economics, and social science to show the unifying power of computation across these disciplines:
In mathematics, the classic P versus NP from theoretical computer science was named as one of the seven Clay Institute Millennium Problems,6 which pose the deepest, most fundamental, and consequential open problems in the field.
In physics, quantum computation provides a method for exploring and testing the limits of quantum mechanics. Further, how phase transitions can be explained in statistical mechanics turns out to have deep similarities to the way that certain randomized algorithms converge exponentially faster when their parameters are in the right range (analogous to the temperature/pressure of a physical system being at the critical point of a transition).
In biology, understanding the mechanism of evolution can be productively approached as an algorithmic problem. Using optimization theory and search to compare simulated annealing and genetic algorithms as ways to sketch landscapes of fitness functions, it can be shown that genetic algorithms tend to find plateaus in the landscape, while simulated annealing finds peaks. Plateaus in the landscape have the characteristic of being relatively broad and thus relatively stable for many genetic combinations. Since simulated annealing is analogous to asexual reproduction and genetic algorithms to sexual reproduction, this approach suggests that rather than maximization of fitness, sexual reproduction favors adequacy, or more specifically the ability of a genetic variant to function adequately in the presence of a wide variety of genetic partners.
In economics and social science, the Internet—an IT artifact constructed but never designed—must be studied using the methods of natural science (e.g., observation and experimentation) and in the context of the complex social system it enables and serves. It is thus an ideal test bed for sociological analysis and experimentation.
Christos H. Papadimitriou, 2009, “The Algorithmic Lens: How the Computational Perspective Is Transforming the Sciences.” Available at http://www.scivee.tv/node/10204. Accessed December 28, 2009.
For more information see Clay Mathematice Institute, “P vs NP Problem,” available at http://www.claymath.org/millennium/P_vs_NP/, accessed December 28, 2009.
Complementing these perspectives, a number of participants including Bob Constable noted the importance of acknowledging a two-way street for connecting computational thinking to various disciplines. That is, it is not only that other disciplines can benefit from the use of computational thinking in their respective domains—it is also the case that the computer science and information science disciplines from which much of computational thinking is derived benefit from understanding the basis of knowledge creation in those other disciplines. Indeed, those other disciplines provide a context for computational thinking that often leads to new discoveries in computer science and information science themselves.
COMPUTATIONAL THINKING ACROSS DIFFERENT DISCIPLINES
The subsections below are organized around different elements of computational thinking that have widespread application in multiple disciplines.
Several speakers emphasized debugging of systems as an important application of computational thinking. In the real world, people often encounter systems with which they are unfamiliar and whose internal workings they do not understand. Robert Sproull pointed out that when humans encounter such systems, they often attempt to establish “a known state” of the system or a state of functionality that they find familiar or intuitive. This behavior is an aspect of modeling the unfamiliar system in their minds, despite the fact they may not necessarily know what sorts of algorithms are inside.
To develop these models and identify known states, an individual (or group) builds on previous experience and encounters with similar systems to generate hypotheses about how it works, about what its parts are, and so on. Debugging can then be done in a variety of ways. One can, for instance, adjust parameter settings to attempt to debug a system.
You know something about debugging that you have learned from dealing with even more complex things. It carries over as a set of techniques, not just because it was your computer program that you were debugging rather than a dishwasher.
In the sense used here, testing refers to empirical activities that provide information about whether and how a software artifact or system performs in accordance with its performance requirements. For all but the simplest artifacts, it is not feasible to test a system for all possible inputs, and so good testing procedures call for test suites, which generally involve typical cases, boundary cases, and potential failure conditions. For a listing of different kinds of testing appropriate at different stages in an artifact’s lifetime, see http://www.softwareqatest.com/qatfaq1.html#FAQ1_10.
Children encounter many opportunities to engage in testing. One participant used the example of a robotics competition to explain how students engage in testing. Robots are designed to perform specific tasks, and designers must test their performance. Even if there is no computing inside the robot, Sproull noted, “even if it’s just a joystick driving a servo, you have to figure out how to test it.”
Data Mining and Information Retrieval
Popular culture often describes the modern society in a constant state of information overload. Computational thinking provides intellectual tools to help manage information. For example, a computational thinker will understand a variety of ways for retrieving information. Edward Fox commented that computational thinking can help people who are accessing lots of information from a number of data sources to represent it in some common way and to find ways to communicate their results.
Concurrency and Parallelism
Ursula Wolz described a number of ways to expose students to the computational concepts of concurrency and parallelism. For example, a college junior majoring in music took Wolz’s introductory course to fulfill a quantitative reasoning requirement. Wolz’s course uses Scratch, an application for manipulating animated characters, and according to Wolz, “the first thing he ran up against was the problem of synchronicity between music and animation.” With a few simple examples (offered by a more advanced student), the music major said, “I get it.” Wolz offered a second example of a sixth-grade student who worked on animation of comparable sophistication using PowerPoint. In both cases, Wolz suggested that their successes in understanding concurrency and parallelism were due not so much to the Scratch graphical environment as to the metaphors that help convey understanding of the underlying concept.
Mitchel Resnick described a simple programming exercise in which the user choreographs a dance for an animated cat. The “code” is struc-
tured to represent interlocking blocks. Each block contains a specific set of instructions. For example, if a user wants the sound of drums followed by the cat moving forward, then she would take the drum block, interlock the forward step block, and indicate the number of steps forward. In this particular activity, users can see for themselves how programming, sequencing, algorithmic thinking, and parallel thinking play out. In Resnick’s words, “Parallelism comes very naturally. If I say, while it’s doing that, I also want to keep changing the color … [then] I just have another stack that says I want to forever change the color. So it takes some of the computational ideas of sequencing, and parallelism, and tries to make it very easy to put together and explore these ideas.”
To illustrate computational thinking, Mitchel Resnick used a personal example based on his standing Monday tennis match. Every week, he and his partner Ken record who wins how many games in each set, the number of games, and the number of sets. At the end of the year, they have a record of the number of games and the number of sets that each player won. One year, they noticed that Ken had won 54 percent of the games but 71 percent of the sets, and they asked, “What’s the explanation behind that?”
Coming from very different disciplines—Ken in biology and Mitchel in computer science/education—each player conceptualized and approached this question very differently. Ken’s explanation the next week was based on handwritten calculations involving expansions of a binomial expression. Mitchel’s explanation was based on a simulation of matches and replicating the data using children’s instructional software called Scratch. The program was developed to determine “randomly for each game that Ken has a 55 percent chance of winning [and] I have a 45 percent chance of winning.” As the simulation was repeatedly run, the total wins-to-losses ratio closely reflected the real-life outcome.
More generally, modeling is a means by which one represents a system or a process in order to learn more about it and manage complexity. One participant mentioned the power of computational thinking to improve the effective development of complex models through knowledge of scale. Peter Lee argued that a computational thinker “understands the consequences of scale” and can thus “think very big and very small and understand the tipping points at each point.” As more data are gathered, the more sophisticated the model one can build to describe a system. If there is sufficient fidelity in a model, one can perform necessary testing within the model itself. Computers and computation can dramatically increase the amount of data represented in these models and thus a model’s fidelity. An example using computational thinking to model plane crash testing is shown in Figure 3.1.
Paulo Blikstein complemented this perspective when he described bifocal modeling, wherein the physical and the virtual were blended in models, sometimes by using the physical world as inputs to a model, by calibrating a model, or by comparing the output of model mechanisms to sensor data. He argued that such blending was becoming more common in the practice of science and was also a powerful means of engaging students.
Yasmin Kafai noted an example of the importance of understanding models and their limitations: “Government authorities often use models to make predictions, but people often don’t understand how these models were made, what the parameters are, or what kind of assumptions are underlying them … here we have a really great example … [in talking] about computational thinking for everyone and kind of as a goal for citizenship [in] that citizens need to also understand how decisions are being made and what some of the pitfalls in the models will be.” Wilensky added that computational thinking involves more than using models, experimenting with models, or even constructing them; it also involves creating a culture of model critique.