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.

Computationally Thinking

For the last two years, I've been doing research focused around women in technology; more specifically, getting young girls interested in computing.  In all of my reading, research and interrogations, what I have determined is that "computational thinking" might just be the concept that helps bridge the gender gap.

Computational thinking is in the middle of an identity crisis right now.  The scientific population doesn't yet have a standardized definition, though one is beginning to materialize.  My view on CT differs slightly, but I elaborate on that in another post.

First, let me state that I acknowledge that not everyone fits snugly into a gender stereotype. There are certainly women that will not fit the descriptions that follow.  I don't mean to imply that anyone outside of the groups I discuss are somehow less "female," just that they are less indicative of the majority.

Formalities aside, let's address the reason why I believe that CT can help draw girls toward technology.  Bear with me, this is a bit of an indirect and bumpy ride.

The female mind is an incredible thing.  From infancy, studies show that the mind of the average female tends to be far more empathetic than that of a male.  Such empathy is an expression of a fundamental difference in the way that women solve problems.  In general, the empathetic brain looks for emotional cues and facial expressions to assess the validity of a decision, while a systematic brain (typical male brain) uses behavioral queues.  This means that machine related tasks come relatively easily for men, but leave women cold as they lack the emotive qualities that we seek.   When someone fiddles with a program or gadget and the behavior of its response changes, a man is likely to absorb that change and consider the gathered information useful.  A female brain, while easily capable of accurately taking note of the data, is less likely to have an intuitive reaction to it. 

That one difference goes a long way toward explaining why young girls consider computer science to be "hard" and "masculine."  Without emotional feedback, technology doesn't naturally fulfill a woman's instinctual learning methods. This is why we see such a large percentage of women in people-related jobs.  Even in 2009, the most popular female careers were secretaries, nurses, teachers, and cashiers.  All receive frequent face-to-face interaction which is a supplement to pay rate when considering how rewarding their job is. 

Now, take an empathetic woman with a high-desire for emotional reward and place her in a career that often requires many hours of individual performance - where the majority of her feedback comes from a compiler in cryptic, uninspired messages - and you have a recipe for a very dissatisfied employee.

By now, you're probably asking yourself why computational thinking has any effect on the above scenario.  In a word...understanding.

The beauty of an empathetic mind is the ability to sympathize with, relate to, and understand views other than those which they have previously experienced.  Computational thinking is the tool that links sympathy and the machine.

Again, I'll save my detailed beliefs on the definition of computational thinking for another day, but in short, CT is the ability to comprehend what is needed for a computer to do its job.  It's more than just a list of steps that one does to prepare code for a solution.  It is, instead, a method for understanding the needs of a computational entity so that one can either process a problem to make it solvable by computer *or* look at a problem from the viewpoint of a computer.  Either way, it's a symbiotic junction which allows a human to relate to a machine and in my opinion, that's a very important first-step toward translating "hard," "masculine" feedback into meaningful personal cues.