Liam, my nine year old son, has taken an interest in computer programming. In fact, it’s become more than an interest – it’s an obsession. There’s minecraft, of course, but that’s more an exercise in creativity than real programming. He’s interested in Python and Java Script. He’s been spending hours on the Khan Academy’s Computer Science website learning Python, then going over to Code Academy and learning Java Script. He’s been spending hours on these programs an, as a result, has not been focusing on other areas of study. It can’t be good, right?

WRONG!

Liam is learning all kinds of things, and is doing so in a way that is meaningful to him.

Liam is learning logic – Computer language is based in logic and you need to understand how it works. Liam was so interested in the logic that we was learning in his classes that when I was learning categorical logic in my Think Again: How to Argue and Reason class he crept downstairs one evening to tell me that he wanted me to teach him how to do that as well. So we spent the next couple of days making equations and filling out truth tables together. Yes, Liam, being Liam, as started talking in if/then statements all the time and that can be rather interesting, but that is alright!

Liam is learning math – Liam needs to use ratios and angles in his designs every day. Liam uses multiplication, division, addition and subtraction in ways that a meaningful to getting the end results in the projects that he is working on.

Liam is writing – to experts in the field and asking educated questions. He is answering other students questions. He is communicating with children his own age about his projects on Khan Academy, and collaborating with another person to create a 2D version on Minecraft using Python.

Liam is being creative
– the ideas he comes up with are fascinating. He is building on other people’s ideas and coming up with his own.  He makes up full adventure stories to animate. He’s finding ways that work to share his ideas with the world.

Liam is being methodical – he comes up with the problem he wants to solve. For example, he wanted a calculator that would automatically keep track of various characters hit points in Dungeons and Dragons. He said it sucked to have to calculate them every time. He also knew that certain characters use different weapons/defense/whatever (can you tell that I don’t play D&D?) and was able to take that into consideration with a start page where he program that information to come in automatically when you chose your race/class and set your other stats.  He researched about the different characters before hand. He wrote all the information he needed on paper. Then was able to code it and ended up with a finished project.

Liam is learning problem solving and perseverance - When Liam doesn’t know what to do, he has learned not to give up (a problem we’ve had in various other areas this year). If he doesn’t understand the information from one source he looks it up in another, be it on Wikipedia or YouTube tutorials or somewhere else. And problem solving – let’s face it, half of coding is problem solving. One open bracket somewhere will throw off the whole thing. You need extraordinary patience and attention to detail to be able to spot these errors and I’m always amazed when Liam can read through it all and go “oh” and fix the issue.

So I say, let them program!

Here’s a pretty neat video that my husband sent me a couple days ago about Teaching Kids to Code that talks about a lot of the things that I mention above (I’d already ranted on facebook and come to conclusion that Liam had learned all the things above ^, but it felt nice to be backed up by the experts!

(Since seeing this video, Liam has now added Scratch to his list of programming sites that he is learning to use).