In this month's CACM, CMU Chair Jeannette Wing wrote a neat Viewpoint
column
Computational
Thinking (with related
slides). In
the article she argues that many of the techniques we use to reason
about computation apply to much wider range of problems. She gives
many aspects of computational thinking such as
Computational thinking is using abstraction and decomposition when
attacking a large complex task or designing a large complex system. It
is separation of concerns. It is choosing an appropriate
representation for a problem or modeling the relevant aspects of a
problem to make it tractable. It is using invariants to describe a
system's behavior succinctly and declaratively. It is having the
confidence we can safely use, modify, and influence a large complex
system without understanding its every detail. It is modularizing
something in anticipation of multiple users or prefetching and caching
in anticipation of future use.
Wing goes out of her way to separate computational thinking from
thinking about computers.
Computational thinking is a way humans solve problems; it is not
trying to get humans to think like computers. Computers are dull and
boring; humans are clever and imaginative. We humans make computers
exciting. Equipped with computing devices, we use our cleverness to
tackle problems we would not dare take on before the age of computing
and build systems with functionality limited only by our
imaginations.
Jeannette Wing makes a strong case that computational thinking should
be as important a part of the learning experience as the three R's,
though in CACM she preaches to the choir. She suggests that computer
science professors teach a course "Ways to Think Like a Computer
Scientist." But how do we convince students they should take it?
It occurs to me that this description better applies to physics than to computer science...
ReplyDeleteBut how do we convince students they should take it?
ReplyDeleteThere is a first-year class at CMU that sounds sort of like this now, "The Great Theoretical Ideas of Computer Science." How to get students to take it? Serve pancakes, do magic tricks, shoot marshmallows at the audience at high velocity.
It occurs to me that this description better applies to physics than to computer science...
ReplyDeleteThis is in general applicable to any science. The main point is that it is time for people to adapt thinking from CS.
One answer to how to get students to take it is to have it satisfy a requirement. Harry Lewis teaches a course, "Bits" at Harvard that talks about CS for non-majors. The course satisfies a "quantitative reasoning" requirement for undergraduates. I haven't had a chance to ask anyone how the course went, but the syllabus certainly looks like it covers the kind of computational thinking discussed here.
ReplyDeleteThe idea of Procedural Thinking has been around for a long time. I think it is inherent to learning computer science.
ReplyDeleteI like the term "Computational Thinking" because it is more broad-based and includes Porcedural thinking.