This was the first week of my 8 Week Coding Class for 4th Graders
I ran 2 classes after school (about 5 kids per class) after school. I was a bit nervous to get started as I had no idea what was going to happen, or if the kids were going to get bored. We followed the plan that I laid out in my the fourth grade coding curriculum on Github, with a few modifications.
Getting everyone to focus at the beginning was tough. They came directly from school and were a little bit rambunctious from sitting in class all day. Some kids immediately booted up their laptops to play a video game and I had to tell them not to.
I asked the kids to bring their own laptops if possible. I have a series of old laptops and fortunately, most of them worked, even if they were a little bit slow. I needed Google Chrome installed on each computer, which I had to install on a few of their laptops.
I’ve decided to avoid using any native shell programs since they aren’t going to be the same amongst all the laptops that the kids have. For example, I’ve had kids bring Macbooks, Chromebooks and Windows 7 and 8 laptops. Even trying to get a bash shell running on all those environments would have been tough.
In the future, I may look at Nitrous.io if I do want a terminal that they can all use. I tried out making a “Hello World” Voxel.js / Node.js with Nitrous, and that worked. I may use that in a future class, to show them how you can code your own Minecraft world.
I asked the kids what they thought programming was. Some named programming languages like HTML. One mentioned “The Matrix” and how they used progrmaming there. A few said Minecraft. Some said it was a way to get computers to do what you want. A few had no idea.
I asked them what they wanted to do in the class? In the first class, they all unanimously said “make video games”. Some had very specific ideas about the games that they wanted to make. In the second class, it was a mix. One wanted to make a very specific Minecraft plugin that made it easy and safe to make other Minecraft plugins. One wanted to make it safer to use computers online (he was on a Windows 8 laptop, FWIW). The rest wanted to make video games.
They responded well (“woohoo!”) when I told them that this wasn’t going to be like a normal class in school where you had to listen to a teacher talk, and that they’d spend a lot of time coding. That said, I did have to calm them down periodically, just like any class.
The class was in our living room, and I used my laptop + ChromeCast to show them videos and code samples on the screen. This worked out really well - we watched the Code.org video in one of the classes, and the kids responded really well to seeing Bill Gates and Mark Zuckerberg on the screen, talking about coding.
One thing I am not sure about is how someone with no programming experience can help kids. Most of the problems that I was solving for were debugging issues. These are easy for developers to solve (sometimes) but sometimes they are not! Some of these problems could be resolved with a more sophisticated user interface. But making debugging “easy” is a famously hard problem in computer science. One example of this problem is the halting problem Ie, trying to detect if a computer is stuck in an infinite loop. I think this gets easier with visual programming languages since it’s easier to stay “on the rails”. But, much of the power of coding is still in language based coding, so I want to balance out these two techniques.
That said, whenever the kids solved a problem on their own (ie, fixed a missing parentheses, semicolon, or capitalization), they would get very excited that they accomplished something. CodeCombat also did a good job of helping them celebrate their victories by showing them a little animation of their knight crushing the enemy or winning.
Browser Based Coding
I’ve built a little ASP.NET MVC website that gives them logins, lets them take notes, and then guides them through the class using the curriculum that I put on Github. This mostly worked, but there was a bug in the first class where some of their notes didn’t save. This software is really valuable for parents to see what’s going on, and it gives me a way to communicate and guide the class. This code isn’t available yet but I plan to put it online in a few weeks.
The goal of the next class is to introduce them to MIT Scratch which is a visual environment for learning to make games and animations. I’m working on the curriculum now, so check back in a week or so to see how that went.