Computational Thinking and Coding in the Classroom: Views from a Novice

 Go to the profile of Matthew Oldridge

Computational Thinking and Coding in the Classroom: Views from a Novice

Computers are best at following lists of instructions, while we humans are best at critical and creative thinking, making decisions and judgements, and problem-solving.

I always have and always will adopt a critical stance toward new ideas, trends, and movements in the education world. Ideas must be tested and evaluated on their merit. I am skeptical of absolutes. The world is probably a bit too complex for absolutes, most of the time. “Only a Sith deals in absolutes.” I am unequivocally against any statement of the construction, “_______ is the new literacy.” Literacy is, and always will be, the “new”’ literacy. This is my own “absolute”. Skills, texts, and our ways of engaging with them change, true, and school systems must catch up. But we have not come far enough into the universal literacy era (and the era of ubiquitous texts) to take literacy for granted. I wrote down my thoughts about reading, writing, coding, and “absolutes” a few years back.

Enough has been written enthusiastically endorsing coding as as 21st century skill for all; on the flip side, enough has been written against coding for all. In Ontario, Brian Aspinall is perhaps our most passionate advocate for teaching kids to code. People like Mark Zuckerberg can strongly advocate for all kids learning to code, and he should. A balanced perspective from Wired is here. A piece by Andrew Robinson about the “coding obsession” is here.

Arguments for and against coding tend to focus on its utility, from a future job perspective, and, increasingly, its power as a way of thinking. This piece is about the latter. It describes a novice’s glimpse into the world of coding with blocks.

My own experiences consist of a lone programming course in the Pascal language in about 1993. I am not sure that I finished my program for my project (a Minesweeper clone, that the teacher gave the perhaps politically incorrect name “Drunkard’s Walk”.) I know I didn’t work hard enough to access the type of thinking I needed to do to excel at the work.

The type of thinking that computer scientists do might seem quite different from anything we do in day to day life (or in school), but Google’s Computational Thinking Course for Educators changed my mind.

As they describe it, computational thinking has four different categories:

1. Decomposition-breaking down data, processes, or problems into smaller, manageable parts.

2. Pattern recognition-observing patterns, trends, and regularities in data.

3. Abstraction-identifying the general principles that generate these patterns.

4. Algorithm Design-developing the step by step instructions for solving this and similar problems.

In Lorena Barba’s formulation, computational thinking is the thing that bridges the gap between computer and human endeavours.

Lorena Barba calls it:

“a source of power to do something and figure things out, in a dance between the computer and our thoughts.”

Computers are best at following lists of instructions, while we humans are best at critical and creative thinking, making decisions and judgements, and problem-solving.

This does not mean we want or need our students to be using computers all day to be computational thinkers. A child packing her backpack in the morning for school, purposefully choosing what will go in it, is thinking computationally. Following a recipe (or better yet, writing one), is thinking computationally. Selecting a math strategy to solve a problem in math class is thinking computationally. Reading, analyzing, and drawing conclusions from graphs are examples of thinking computationally. Recognizing patterns, like perhaps a simple ABAB pattern in Kindergarten made from loose parts, that’s computational thinking. Learning how to use the standard multiplication algorithm in math class, or even inventing your own? Computational thinking.

Bringing creative, flexible and logical thinking to classroom tasks, for me is the true argument behind bringing coding to schools.

This little bit of block text in Scratch represents my first attempt at block coding. I simply wanted to “code the answer” to a little question I made up, comparing costs for two amusement parks.

Here is how it went.

I spent a long time thinking about how to bring the project “‘into being”’. What should it look like? It didn’t exist yet. I had no idea, in my mind, what would appear on the screen, and what code blocks would help accomplish that. I am too much of a novice to think about the shortest, most efficient set of code. Just finishing with something that worked would be enough.

I was able to name variables, and to set up inequalities. I kept playing through pieces of the project as I created it, to see if it was working. It was. When I got to the end though, the inequalities set up to compare price weren’t working, at and after the point at which the two equations were equal.

I had to sleep on it. No debugging solution presented itself. In the morning though, I realized: I was trying to use letter “F” and letter “J”, instead of what was need, variable “F”, and variable “J’. Embarrassing rookie mistake.

By the end of this little bit of work, I felt my mind was starting to think in terms of computational logic. With more practice, who knows? (Well, I do know I won’t quit my day job!)

Another session exploring the very basics of Hour of Code and Scratch with grade 9 and 10 teachers went like this. One of the participants mentioned working with the Logo turtle as a kid in the 1980s. So we looked up projects that draw shapes, specifically rectangles.

Drawing Rectangles in Scratch

The discussion that followed was interesting. We looked “under the hood” of various projects, and figured out how they worked. One didn’t reset the pen tool to the middle of the screen, so we fixed that. They all had remarkably different ways of doing similar types of things. It was an exercise in logic and problem-solving.

Just the merest novice glimpse into the world of computational thinking has me interested. I am an advocate for classrooms as open thinking spaces, and computational thinking is a powerful form of thinking. Classrooms should be places of creative, critical, logical, and yes, computational thinking.

“What I’ve learned teaching coding: 3 years and 1900 kids later”

Article here http://”What I’ve learned teaching coding: 3 years and 1900 kids later”

 

 

My students’  knowledge and proficiency grew and grew with each passing class. From that first class until today, the kids are so engrossed in coding; that they wouldn’t leave their computers when I announced that class was over. They were hooked on making their coding projects. There was magic in the room.