Computational Thinking


When Jon Udell interviewed Phil Libin, on IT Conversations, Libin said that in the future people will have to understand asymmetric encryption in order to function in the world. At first I was incredulous--that seems like a pretty esoteric concept to force on everyone. But then he said this: when Adam Smith first put forth idea of free markets, the notion that most adults would have an intuitive understanding of the concept seemed equally ludicrous, but in fact around 80% of U.S. adults do.

Why understand encryption? Because it affects your life in multiple ways. People who understand encryption can make informed decisions about how secure their ATM or voting system might or might not be, or whether they should trust a particular online banking site. People lose money every day because they don't have a basic understanding of encryption.

Understanding encryption is just one aspect of what we might call "computational thinking." Last month I attended Jeanette Wing's Organick Memorial Lecture at the University of Utah on that very subject. Wing, the head of Carnegie Mellon University's School of Computing believes that computational thinking will be a fundamental skill, like reading, writing, and arithmetic, in the 21st century. Coincidentally, Jon just finished interviewing Wing for IT Conversations. I posted the show last week.

Computational thinking isn't thinking like a computer, rather it involves an understanding about how computer scientists think and solve problems. The reason that computers are used in almost every discipline is that the techniques that computer scientists use to solve problems are universally relevant. At its heart, computer science deals with how difficult problems are to solve, how to think about and manage problems, and how to create procedures for solving them.

Computational thinking involves thinking recursively, thinking abstractly, thinking ahead, thinking procedurally, thinking logically, and thinking concurrently. In Wing's words: "computational thinking is taking an approach to solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer science."

To underscore the importance of these ideas in general education, Wing pointed to the influence that computational techniques are having on disciplines of all sorts--not just science and engineering--but fields as diverse as sociology and the law. Just as math and good writing are a key skills that affect almost all disciplines, so is computation. As a result, computational thinking isn't just for scientists and engineers. Computational thinking is a fundamental skill--one that every human being needs to understand to function in modern society.

I believe that Computer Science, like English or Mathematics is a good undergraduate degree for people going into almost any profession because the techniques have such broad applicability. More parents should encourage their college bound children to consider Computer Science.

More importantly, I think we need to do a better job of teaching computational thinking in grades K-12. Many of these concepts can be learned and understood without a computer at all. Computational thinking is conceptualizing, not programming. Every day activities provide plenty of examples. Computational thinking has almost nothing to do with how to use a word processor or spreadsheet--the current mainstay of computer courses in our schools.

Moving computational thinking out of our Computer Science departments and into the broader classroom will require that Computer Science professors look beyond their own parochial needs and interests. I think it also requires school administrators to put into place the organizational models that encourage and support these outreach efforts. Ultimately, however, this is the road to the real influence computational thinking needs and deserves.