Teaching Coding to 4th Graders

I’ve decided to teach coding to some 4th graders after school, including my son and about 7 other kids.

My background is as a software developer, but teaching is new to me.

So, I’m planning on writing some blog entries to keep notes on what I’ve learned and how I’m structuring the class. You can follow along about it using the mvcoders tag in my blog.

My son really enjoys Minecraft, to the point where he religiously watches every “How-To” video on YouTube about fun ways to use Redstone and Command Blocks to do neat things.

I really want to encourage kids to have fun programming. It is so much different now and there are a ton of resources to use that don’t require kids to get immersed in the guts of the OS to learn some basic coding.

My challenge has been to find a good curriculum to teach, and figure out how to best structure for the class so that all of the kids have a great experience.

Resources I’m looking at using:

  • Scratch - This is a visual programming language with a very active community, centered around making games. There’s a lot of resources to help make the class.
  • Khan Academy CS - There is a great new environment in Khan Academy that helps kids learn javascript. My sense is this would be good for some of the advanced kids.
  • CodeAcademy - Similar to Khan Academy, this site helps people learn javascript (and other languages) in a step by step environment.

I’ve also been intrigued by using MineCraft directly in the class. You can do a lot of interesting programming and logic exercises simply by using Redstone and Command Blocks. That said, there’s no real guard rails here and I’m pretty sure as soon as I let the kids go play MineCraft, they’d go off and do whatever they wanted.

There’s an open source / javascript version of MineCraft called Voxel.js. I’ve tried this with my son, and though it was cool, I am not sure it’ll work for a class. It looks very similar to Minecraft but doesn’t have all the features. I am a bit worried that they will be disappointed by this. I like it because it will get them to learn a greater part of the coding toolchain (node.js, text editors, html5, javascript, etc) whereas tools like Scratch hide all of that. I might introduce it later in the cycle if the kids find Scratch too limiting. Similarly, there are a lot of open source javascript frameworks for gaming. I haven’t looked too closely into these so I’m not sure that they’ll work.

I’m also looking into “physical” devices such as Arduino, Lego Mindstorm, or Raspberry Pi to introduce hardware concepts and give them something real to play with. This might be too ambitious for this class (which is only one day a week for 1.5 hours after school) so perhaps I will do that in another class.

If you know of any other resources (around curriculum, tools, or generally understanding the mindset of a 4th grader), please share in the comments!

Find a problem or mistake? File a bug or better yet, submit a pull request