Sunday, March 6, 2011

Thinking Computationally

I've been thinking about computers since I was a very, very little girl.  Somewhere inside, I believe they think about me, too.

I have one that has trouble waking up in the mornings, one that plays with my kids and one that is there for me whenever I need it; no matter what time of the day or night (I call that one Mac.)  For all of the emotion that I tie up in my computing, my brain knows that they are inanimate machines which are simply responding to low-level binary commands.  Even so, it's hard not to personify them once you get to the point where you're confident enough with a keystroke to really make them dance.

For some, getting to that point is more difficult than others.  I do believe, however, that there is a specific way of thinking that promotes the ability to really connect with your integrated box of circuits.  It's called "Computational Thinking."

Originally, it was the definition by Jeanette M. Wing which helped the concept hit the stratosphere.  In short (very short) she boils it down to "abstraction" and "automation."  Basically, getting a problem ready for computation, then using computation on it.

As CT started to catch fire, people took those sparse guidelines and ran with them.  Many went one way, while some went another and other groups sat still.  The idea of CT really opens itself up to many different interpretations; the easiest to say being, "Think like a computer scientist."  While I wouldn't consider any of these wrong, I wouldn't consider them complete, either. 

The definition I bonded with most was that of Google, in the doorway to the curriculum which they developed for schools in California.  They've worked hard to put together "classroom ready" lessons for grades 6-12.  Though their actions are commendable, I'm not necessarily in favor of the "Math & Science" approach...nor do I love the concept of starting at a middle school level.  I think if we want to show that CT is a universal key to problem solving, we need to give lively examples in fields as far away from what one thinks of STEM as possible.  I also believe that if we want the females to successfully weather the storm of gender bias in computer science, we need to start teaching these CT ideas as fundamentals in grades K-5.

Now, as I like to say, enough talk...let's do something inspirational.

I would like you to oblige me in an idea.  It seems apropos that computational thinking could be represented as a tree, with each node further pointing to all of the specialized categories that the brilliant minds of computer science can think up. The essence of this tree is that it begins by splitting into two distinct sides...things that a computer can do & things that *we* must do for the computer.  Maybe I should include a diagram...a good diagram can make anything appear more official. 

Diagram 1a: The CT Tree

You see, I believe that computational thinking has two functions.  For starters, there is the concept that humans should understand how to process a problem for computation.  It's an extremely useful skill and has an infinite number of uses...even when there is no plan to ultimately use a machine for execution.  Secondly, there is a need to understand how to process a problem correctly and efficiently...even without machinery.  Comprehending both pieces makes it easier to see that computational thinking can be helpful in any field. 

Take art, for example.  A painter may want to create a statement on how all living creatures should be considered as important as humans.  She may want to find the patterns which all of her favorite animals have in common with people, then abstract out the remainder of the details.  She can then plan to highlight the shared qualities through boldness and exaggeration.  Once her algorithm has been determined, the artist can avoid getting overwhelmed by the long, detailed road ahead by following her algorithm step by step; considering each piece individually and looking for patterns as she goes (consecutively painting areas that require similar colors, etc.)

The above example may be uncharacteristic of an artist's personality, but it's an effective illustration of the way that efficiency can be brought to many aspects of life...whether or not it belongs in those aspects is up to you.

Regardless of your opinion on efficiency, hopefully you can see the need for both halves of this definition.  Whether you plan to prepare problems for computation or perform the computation yourself, computational thinking will certainly be a vital skill for the future.

1 comment:

Peter said...

I like this way of viewing it. Thanks!