« Building Emacs | Main | Adobe Open-sources Flex »
Jeannette Wing on Computational Thinking
Tonight is Jeannette Wing’s general interest talk as part of her Organick Memorial Lecture at the University of Utah. The talk is on computational thinking. Here’s an article she wrote for ACM Communications. These slides are close to the ones she used tonight.
Computational thinking will be a fundamental skill, like reading, writing, and arithmetic, in the 21st century. Computational thinking enables what one person cannot do alone. There are two components: abstraction and automation. CT involves thinking at more than one layer of abstraction at a time. Automation mechanizes the abstraction layers and their relationship. These allow the ability and audacity to scale.
She goes over several examples of computational thinking including how difficult is a problem, thinking recursively, reforming problems, interpreter code as data and data as code, using abstraction and decomposition, type checking, understanding sychronization, understanding pre-fetching and caching. In short “CT is taking an approach to solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer science.”
Computational thinking is revolutionizing statistics—some schools put the statistics department in the school of computing. Computation is the big bet in biology. CT influences economics (game theory), chemistry (nanocomputing), and physics (quantum computing).
But computational thinking isn’t just for scientists. It’s for everyone.
CT is conceptualizing, not programming. CT is how humans think about computing. CT is a fundamental skill, one that every human being needs to understand to function in modern society. CT complements and combing mathematical and engineering thinking. It draws on mathematics, but is constrained by the machine. It draws on engineering, but builds virtual worlds unconstrained by physical reality.
CT is about the ideas and not the artifacts. Computing is engaging and challenging. It’s not just programming. One can major in computer science and anything—just like English, political science, or mathematics.
Jeannette goes through a number of examples of research problems in other fields that are computationally based, including examples from biology chemistry, geology, astronomy, brain science, mathematics, and engineering. Beyond the sciences, she gives examples in economics, social sciences, law, and entertainment. See her slides for details.
Universities should start with freshman-level intro courses by teaching how to think like a computer scientist (aka Principles of Computing), rather than “intro to programming.” The K-12 curricula needs to be reformed as well. This has to be a collective effort.
Don’t stop at the freshman year. Upper-division courses and graduate-level courses are needed as well. CMU has a program called CS4All to reach high school teachers and counselors and show them that there’s much more to computer science than programming.
What could be in such a course?
- Thinking recursively
- Thinking abstractly (e.g. data abstraction and representation shows layers)
- Thinking ahead (caching, pre-fetching)
- Thinking procedurally
- Thinking logically
- Thinking concurrently
- and so on…
Paper and pencil as well as programming exercises. She discusses some topics along with how they could be explained by every day activities: sorting and searching, intractability, computational size, undecidability, data as code and code as data, correctness, caching, pipelining, concurrency, and distributed computing.
Some additional ideas came up in the Q&A session: privacy and fallibility.
She finished by talking about some deep questions of computer science and with a call to action: spread the word.
A few interesting links:
Posted by windley on April 25, 2007 8:40 PM



Comment from Tim Rue at May 13, 2007 11:16 AM
"Computational Thinking" idea has been spread through the www over this past year. But is it really catching on or just the result of promotional hype?
Is it not just a rehash over computing concepts and directed towards the promotion of such to others who do not program/code?
In using a computer, reading about how to do something is not enough. There is the need to actually do it on the computer, as a feedback loop that verifies the learning process to the user.
Or perhaps this is an effort to:
If we can't get computer to think like humans, then lets try to get humans to think like a computer. ????
Ms. Wing has an extensive background in the computer education industry. And Microsoft supporting this "computational thinking" direction via CMU (MS identifies itself by its actions as an anti-trust supporter - via world wide lawsuits against it. Anti-Trust is an act against the general population which makes up "everyone".)
Is it possible that Ms. Wing is so entrenched in the mindset of her profession that she has lost touch with the mindsets of the general population?
Has she failed to recognize her own human action constants or how they relate to computing? When something is part of your species nature, can you recognize it or are you too subjective inherently?
(i.e. sex drive, abstraction creation and usage, need to sleep, eat?) Or are such species characteristics not to be considered in regards to creating a machine image of your species? )
Mans greatest abstract defense mechanism is that of "denial" and in the scope of "computational thinking" abstractions, without a verification loop, where can there be found any concreteness to validate ones understanding any "computational concept"? Denial support is certainly there, as well as the ability to distort a correct understanding.
I find it questionable what the intent here really is. Could it be to keep the wool pulled over peoples eyes as to what or how simple it can really be?
http://threeseas.net/abstraction_physics.html
Trying to get people to think like a computer.. To think like what you or others have created seems to be somewhat misdirected and inherently degrading.... to think like the machine you created, instead of the creator you are?.
...How about first recognizing what people actually do invariably and creating a system that enables people to apply what they do through the abstraction machine of which computers really are.
Instead of "computational thinking" how about understanding what is primary to it first? What must be before "computational thinking" can exist.
Understand Abstraction Physics and apply it through a configuration of computer functionality that represents the mechanics of abstraction creation and use, where you can establish a verification feedback loop for solidifying ones understanding of whatever abstractions thought up, computational or otherwise. BTW: preview shows bad formatting of comment, no break lines and no explanation how to do them.
Comment from George at May 17, 2007 12:33 PM
Consider Computational Thinking vs. Culinary Thinking. Culinary thinking is thinking that you can use every day. It is far more profound than Computational Thinking in that it actually involves real applied science price, production, and potential principles.
Moreover, this sort of thinking is quite likely to result in something pleasant to eat. Computational thinking, on the other hand, is likely to give you a headache.
Computational Thinking is apparently desperate thinking. Computer science, with it's increasingly strident and shrill utopian ultraformalist emphasis, is becoming the string theory of the engineering world.
Today professional programmers have abandoned all hope that CS will provide any kind of strategic progress in practical software. CS students and research funding are steadily drying up. Many employers are increasingly reluctant to hire CS majors.
So Ms. Wing is out selling her syllabus in direct competition with the hard and mathematical sciences. It apparently hasn't occurred to her that the Computational Thinking pitch is giving aid and comfort to the numerous opponents of the professional engineering system.
From the head of a distinguished engineering school department this Computational Thinking pitch is really regrettable. IMHO there are engineering professional ethics problems here.
Note that Computational Thinking is really just obsolete and outlawed craftwork pattern thinking in the principled professions including all fields of professional engineering. Professional engineers loose their licenses and face serious consequences if caught doing this kind of thinking. Only software engineers are specifically explicitly exempted by international design law frameworks.
Computational thinking is merely thinking in terms of computational format and formalism patterns. This kind of primitive pattern thinking encodes everything but explains nothing. This sort of thinking is an important tool for those that must work with handcrafted software. It is hardly an indispensable truth otherwise.
Computer science has always aspired futilely to a formalist theory of everything but has utterly failed. Universal computation is only trivially universal. It cannot ever in any sense hope to become an ultimate unified pansophical science of overall universal order.
In fact Computational Thinking is a systematic way of trivializing what we already know about the principles of mathematics and mechanics. CS replaces these with trivially universal metaphysical modeling frameworks like OO, ER, and UML. This is ideal for the kind of low information quality, high information quantity punched card pattern programming mostly done today.
This trivialization keeps programmers' heads from exploding. Without this systematic trivialization handcrafted software encoding would be like drinking from a fire hose. But this trivialization also radically dumbs down software and decimates software customer value.
The remarkable thing about the software side of computer science is that it rejects mechanics in favor of metaphysics. In this way ultraformalist utopian computer science is a bet against hard science and high technology. This bet is apparently the basis for Computational Thinking.
Computer science would get a lot more students and research funding if it solved it's Dead Philosopher problem. Logical idealism, logical atomism, and philosophical universalisms of all sorts are getting in the way.
A computer science renaissance will result from riddance of metaphysics and refocusing on powerful mathematical and mechanical science principles in software modeling. In this way software science must eventually transform itself into a mature mechanistic empirical engineering science.
Leave a comment
I encourage you to leave a comment below. Your email address will not be displayed on Technometria, but allows me to communicate with you directly. Your email address won't be displayed, but will be used to compute a MicroID for your comment.