A Broad Definition


Janice Cuny, Lawrence Snyder, and Jeannette Wing co-authored a paper for SIGCSE 2010 titled “Computational Thinking: A Definition”. I can’t find a copy that isn’t behind a paywall, but their definition is:

Computational Thinking is the use of abstraction, along with automation and analysis, in problem solving.

They then talk about data abstraction (a subway map), process abstraction (an algorithm), automation (never actually defined), and analysis (including algorithmic analysis, performance analysis, specification, verification, debugging, testing, and experimentation). If there’s a difference between this and the systems thinking that Weinberg and others have been talking about for the last quarter century, it’s too subtle for me to see…