3 Types of Programming Classes for Kids

I’ve been doing a lot of research on how to effectively make a curriculum for the 4th Graders that I am teaching. Turns out, it’s not easy!

I’ve been struggling to figure out what my role is in this experience. For example, there are many MOOCs (Khan Academy, Code Academy ) out there that essentially provide a self-directed learning environment. There are some hybrid environments like Tynker that provide a more structured environment which helps teachers run a larger class, but still get into some depth around programming. It would be a waste of time for me to have them just simply turn on computers and point them at Khan Academy.

My experience watching my children try to use these tools is that they work well for everything … except programming. It is really hard to make a perfectly self-contained, understandable, modular programming environment where the kids don’t go off the rails. That said - they are great to use when someone can help get past roadblocks, bugs in software, and design issues that make the software confusing. I think online or self-directed curricula are very important, but I think that if kids (especially younger kids) are left to their own on these programs, they will get stuck and discouraged, even with the best designed programs.

So, where does that leave us? Can we adopt an online curriculum for our class or do we have to build our own?
There are some curricula out there, especially built around tools like MIT Scratch. The curriculum you use or develop is highly dependent on the kind of structure you put towards your class. This stuff is probably pretty obvious to anyone who has been involved professionally in education (teachers, etc) but it’s a new discovery for me.

I would categorize the curriculum into 3 groups (classes, teams, and clubs)

The Class

The entire class is going to be learning the exact same thing, at the same time. This seems to be the model taken by schools. It’s also a valuable way to go if you have a large group of kids (more than 8 or 10) since you really won’t have the time to give them individual attention. You are trading some creativity and self-direction for scale. It’s also harder to get kids to be excited by a class.

The Team

You are teaching them some skills but there’s a lot of free time and everyone need not learn the same thing. There’s a concept of working together as a team and collaborating. Teams can be smaller, and different kids can specialize in different areas. There’s a sense of grouping by age and at the end of the “season” you should have learned some valuable skills. You might have a competition or challenge as well.

The Club

You are there to provide some resources and keep everyone moving forward, but it’s more self-directed. My guess is that this model works really well in high school, where the kids have self-selected into wanting to participate and have the ability to solve more in depth problems on their own. You are offering lots of opportunities and an environment for individual creativity and collaboration.

For the MVCoders group, I am going to use the “Team” approach since I am dealing with a small group of motivated kids.

Future Questions To Address

  • Visual Programming Languages (ie, Scratch) vs Text based Languages (javascript)
  • What is an appropriate amount of “help” to give students
  • As a developer, how much custom code should I be writing myself?
  • What is the relationship of a coding class to other traditional classes?
  • What expectations does everyone (parents, kids, teachers, etc) have for the class?
Find a problem or mistake? File a bug or better yet, submit a pull request