Computational Thinking

A core goal of my Think Through IT series is to help you learn some tools to think like a computer scientist even if you never ever write a line of computer code.

Why?

There’s more to it than just getting a program that looks pretty.

While it’s not difficult to learn how to code a basic computer program, it takes quite a bit of different thinking to learn how to do it effectively.

It’s about problem solving. It’s about knowing how to break a complex problem down to smaller manageable and solvable parts. It’s about seeing all the disparate parts and determining the best way to put them together.

It’s valuable to learn for everyone, not just software programmers.

What am I talking about?

Computational Thinking. Over the years I’ve learned it’s difficult to teach, it takes time and experience. Though children can and do learn it, I did and at the time I was no where near a computer.

I wasn’t a prodigy either.

I was a music student. When I was five, I began voice and piano lessons. They went pretty well even though I was frustrated I didn’t get to learn the pieces my friends did. The magic really started in fourth grade, when I began to learn flute.

I hated it. I couldn’t make a noise at all. I wanted to make it sound pretty like Jean-Pierre Rampal did.

Every day, my very wonderful teacher asked us practice for just 10 or 15 minutes. We could go longer, but she didn’t really want us to do so, yet. As I could already read music fluently, I focused on trying to get a sound and learning how my fingers were supposed to go on those keys and how those matched with different notes. The lesson book began with small repetitive exercises and very slowly expanded to include different notes held for longer or shorter counts and being played in different combinations. Eventually we could play a short recognizable melody. It took me about a month and a half, but I will never forget that first time of actually playing the flute properly. My lessons still included learning small parts and then piecing them together to form a coherent whole, and eventually I was playing with groups.

Fast forward four years. Flute players were a dime a dozen and we were already thinking about how I could attend college.

I was given the opportunity to learn bassoon. Within a month I had auditioned and earned a spot in a regional festival.

How’d I do it? I practiced every day for 15-20 minutes (I was a older and already had muscle strength from my years of flute). I started with basics to what I had learned four years earlier and began to apply them to this new, very different, and much more complex instrument.

I practiced computational thinking … for music.

How does that apply to what I hope to teach in this series?

I hope to find experiences that you might be familiar with, break them down, and show how that relates to a concept in computer science. All without ever mentioning the words computer, programming, or code.

I’m not the only one to do this. There are a other resources out that cover these topics too. Today there are two books I’d like to mention:
Computational Fairy TalesComputational Fairy Tales by Jerry Kubica. I requested and received this as a Chanukah gift this year and it introduces many concepts in a very approachable manner. I wish I had this book back when I was a teaching assistant for engineers who had to take a computer science course.

Lauren IpsumLauren Ipsum by Carlos Bueno and Ytaelena Lopez (Illustrator). This is geared toward younger readers, and there are several chapters available online. I’ve not yet read the entire book, but I like what I have read so far and that with every copy sold, a copy is donated.

Now, these books are not perfect, teaching is not perfect, there are some issues when teaching through storytelling, but hopefully it is another tool we can use to understand and learn.