Computer Science Education is Literacy for the 21st Century

Sometimes, when you’ve been deeply involved in something for a while, you take for granted how important something has been to your life. I don’t usually think about how different my life would be if I hadn’t tried to program my parents’ computer when I was 8 or gotten into making web pages when I was still in high school. But I did and it moved me directly into my first job and eventually a very nice career in building web applications.

Was I a genius? Did I sniff out what was next in the future of business and position myself, at the tender age of 17, to enter into one of the most lucrative careers for my generation?

No, I got lucky. Something I was interested in, and interested enough to teach myself about, became the next big thing. I hit the career lottery and I didn’t even know I was playing. It’s that early curiosity that landed me where I am now. If my parents hadn’t helped that along by having a computer in the house when almost no one else had one, I don’t know where I’d be now.

I’m thankful for that. It’s gotten me to where I am and I plan on passing that on to the next generation.

I read an article on NPR recently where the mayor of New York City said, “A computer science education is literacy for the 21st century.” I can’t agree with this more. I don’t think there is a single job out there that won’t need a computer science education of some kind. It’s not just about using a computer, but telling it exactly what you want it to do that will be the most valuable skill. And that will take some sort of programming knowledge.

Will it be as important as literacy? Time will tell, I guess. But I’m going to make sure my children at least get a basic education in programming.

Helping Children Learn Programming

As I’ve worked through teaching my kids programming, I’ve learned a couple of tricks to gear the teaching more for how they learn. It’s not like you can sit a child down in front of a computer and tell them to study dry, boring programming books that don’t seem to have any relevance to what they really want to do with a computer. It’s hard enough for me to do that as an adult, and I’ve been programming for 20 years.

The alternative is to meet them where they are. Children rely on stories and play to figure out how the world works. So, teach programming through stories and play and it will be much better understood and retained.

Part of what makes programming so hard for children to understand is that it’s not physical. It is, at its core, ideas and electricity, so a lot of the best tools for teaching children programming frame the programming concepts into a more tactile and physical concept. If you can frame the concept into a real world metaphor that they already understand, all the better.

That’s one thing I want to accomplish with the Codecasters series of books that I’m working on, I want to bring a new physical metaphor to programming that kids can learn from and apply to their programming education. Most kids already understand Minecraft, so why not use that to teach the concepts needed to make a game like Minecraft?

But, before those books come out, here are some other resources that can help get your child ready for the future:

  1. Scratch – Scratch is an online application that was built and is run by the Massachusetts Institute of Technology and has become a very popular first introduction to programming for many young people.

    When you first visit, it looks like it’s just a bunch of simple games to play with. But each one of those games was built by someone just like your child and the full code for every game is always available on the site. Find something you like to play? Load it into the editor and see how it works. Then, change something and see what happens. This kind of interactive tinkering is a great way to dive into a big complex subject like programming because you can not only see a full working example already made, but also change, break, and fix it yourself to see how it works.

    Now, the biggest problem with the site is the lack of guided tutorials. But, since it’s focused more on experiential learning rather than by the book lessons, it can still be an important part of your child’s programming education.

  2. Code Combat – While this does end up being a mildly violent game, it’s a great “code the robot” style learning tool that is great at teaching how to type out code.

    The idea behind Code Combat is that you are giving instructions, through code, to a knight that is fighting their way through a series of levels. This mechanic is a great way to take kids through advanced concepts in programming one simple step at a time. It’s also a fun game. Go through the dungeons, collect the gems, and learn how to program as you go.

    I love that this is teaching real text-based programming (and keyboard use) in a fun and exciting game. It teaches kids how to think in code to solve ever more complex problems and the concepts they’ll need that computer programmers use every day.

    I also like how they use real world metaphors to introduce certain concepts. For instance, you get a pair of shoes at the beginning that give you various move methods and, later, a sword that gives you the attack() method. I’m trying to do the same kind of thing in the Codecasters series and think that it really helps children visualize what is ultimately a virtual programming concept.

    If you use this, I humbly ask that you set the programming language to JavaScript. It’s a more popular language than Python in general and will teach a syntax that is more widely used in the programming world. There are some that would disagree with me on that because they’ll say that Python is easier to learn, but Kelly didn’t have any trouble picking up JavaScript and can now use that same knowledge to program for webpages (that only use JavaScript natively) and some programming right in Minecraft.

  3. Hopscotch – The last tool I want to talk about is Hopscotch, an iOS application that is a lot like Scratch but simpler and more intuitive. Sadly, it is only available on Apple devices and best on an iPad, so if you don’t have one, you may be out of luck for now.

    The thing I love most about Hopscotch is how quickly my daughters picked it up and ran with it, making maze games and animations on the first day they played with it. It has a nice collection of interactive tutorials that will get anyone up to speed on how to use it and teaches a lot of the concepts that will be needed to make your own creations later on.

Those are the big three at the moment, but if you’ve run into anything out there that I might not have seen yet, let me know in the comments. And if you’re interested in hearing more about the Codecasters series of books, about a boy in a Minecraft style world that learns the ancient art of Codecasting, sign up for the mailing list and you might even get the first book free for helping me out.

What I Write

I decided to set up this blog as a central place to discuss my writing and what I’m doing.

So what am I doing? Well, I have decided, in all my exploration of the kind of writing that I like to do, to start writing children’s level fiction. It’s the kind of writing I’m drawn to and, if I’m allowed to admit this, the kind of writing that I like to read. I’m very much an action/adventure kind of writer but I also like to write things that teach and inform along the way of telling a good story.

The first book I’m publishing along these lines will be the first book in a potential series called Mai Day Mysteries. It follows three young people around as they attempt to solve various goings on around their small town and get into danger along the way. The main characters are Mai, a girl with a lot of heart and caring, Janie, her strong and athletic friend who’s not afraid of a little adventure, and Rupert, her smart and meticulous friend whose gadgets and know how can get the team out of a jam. Together, they go on Nancy Drew/Hardy Boys style mysteries as they try to help out their neighbors as much as they can.

I’m really excited about this book and think that it will speak to a lot of kids out there today. And my kids loved it and forced me to finish it, so it’s got to be good.

Another book that’s in the works now is a Minecraft diary style book called Codecasters. Codecasters takes place in a fictionalize Minecraft universe where the characters of the game can actually program it. There are wizards that run code to change and add to the world in which they live and our main character, Kyle, along with his friend Marie need to stop an evil wizard while learning basic programming concepts along the way.

I thought up of this series because, 1. my kids love Minecraft and 2. teaching programming by teaching the concepts in a concrete way is much more important than teaching programming via just learning what to type. Each book in the series will focus on one basic programming concept and have the characters use that concept in a number of different ways throughout the story to really drive the lesson home.┬áMy daughters are very interested in this one, so I’m excited to work on it.

I also think that programming, especially its basic concepts, are going to be must have skills for our children and it’s not something that is being taught nearly well enough in the schools. I really do want to create a series of not just useful books but also highly entertaining books that everyone will enjoy. Even if your child hasn’t expressed an interest in programming, I hope that they will still be interested in these books and learn programming as more of a side effect. Sneaky learning is the best learning!

If you’re interested in keeping up to date on either of these titles, just sign up for the mailing list and I’ll let you know how things are progressing.

JP Erickson Book Club