Coding and the Evolution of Math Education

Every time someone posts one of those visual algebra problems on Facebook, my mother and I get into a discussion about order of operations. When she was in school, PEMDAS wasn’t a thing they taught. You just solved problems moving left to right. By the time I got to elementary school, teachers were drilling us about our dear Aunt Sally. I’d been teaching algebra for a few years when it finally occurred to me why the order of operations was even a thing (and why it was more likely to produce a correct answer than simply working left to right regardless of the operators).

Similarly, I learned in high school to describe translations through words or some really bizarre shorthand that never seemed to carry over to other math classes. But when I finally had to teach translations to middle schoolers, they were learning a uniform notation that actually made sense to me. They learned to craft a statement that would tell every single point in whatever they were moving where to go to keep the shape. In short, they were learning to write algorithms. (I was so jealous of them. *grin*) Thankfully, I had some computer science classes and random attempts at coding under my belt at that point, so I was able to help them understand what they were doing and why. (Seriously, A’ = (x+3, y-2) would have been a million times easier than all the garbage we had to write.)

At the time, it struck me as pretty cool, because taking a logical opportunity in math class to introduce students to thinking algorithmically has some benefits. First off, it gives them exposure to algorithmic thinking. (Exposure is always a good thing.) It shows them a situation where algorithmic thinking can be useful. And for those students who might move on to code in school or on their own, it gives them an opportunity to start thinking about how to craft efficient code.

All of this was rolling around in my head this morning while I was messing around with Santa’s Village, Google’s interactive Christmas countdown calendar. A couple of days have had coding games using the visual coding tools that are starting to show up more and more in children’s toys and apps. (Seriously…how cute is this coding caterpillar?) I’ve never played with visual coding tools before, so it took a moment to see how what I know about coding translated into these brightly colored blocks. But I caught on quickly and beat the coding games.

What struck me most (once I moved on from how cool it would have been to have things like this to play with in between learning to write lines of BASIC and lines of Turbo Pascal when I was a kid (I’m a little old. Heh.) was how it presents the idea of programming. Each action is a bit of code displayed as a puzzle piece. How you put the puzzle pieces together dictates how your little elf moves. If there is a more efficient way to move your elf, the game lets you know and then gives you an opportunity to find it. (For those curious, it will display the javascript you created for that level, creating the mental connection between the puzzle piece and the actual code for those ready to explore that.)

It was certainly far less stressful than searching through a hundred lines of code looking for that one forgotten semicolon when you’re still learning how to read code. *wink*

But that’s how it works. I learned a long convoluted way to present translations, only to teach a much more efficient, meaningful method years later. I learned to just sit down and write lines of code. Children younger than I was when I wrote my first BASIC program (and I was in elementary school) are learning,”This tile does this. When I connect it with this tile, they do this and that.” And they’ll continue to grow and learn this way of thinking until they’re presented with an opportunity to actually write the lines of code, or read the lines of code, or find other ways to apply that algorithmic thinking they learned through play and visual means.

As a funny side note, I’ve talked a little here about kids learning algorithmic thinking and then finding non-coding ways to apply that to the world around them. The last computer class I took focused on object-oriented programming in C++. A few years later, I took that mindset to develop some interchangeable educational programs for a museum. You really never know where or how you’re going to end up using what you’ve learned. That’s why exposure and general practice are so very useful when learning a skill.