I have kids and, as a parent, I want to prepare them to be successful in their lives. I try to do this in a number of different ways: teach them to be kind, teach them respect, teach them to stand up for themselves, and other ways. One other set of skills I feverently believe they will need is a clear understanding of how computers work and how they are programmed.
I recently read a book by Dr. Douglas Rushkoff called Program or Be Programmed. In it he describes “Ten Commandments for the Digital Age” to allow us to leverage the ubiquity of computers and software in our society and lives. Rushkoff writes:
“Choose the former and you gain access to the control panel of civilization. Choose the latter, and it could be the last real choice you get to make.”
It’s a pretty sobering statement if you take the time to think about it. But what can we do about it both for ourselves and for our kids? Fortunately, the Internet is full of helpful sites to facilitate achieving true computer literacy. My plan (which may be foolish…time will tell) is to work with a few key resources I’ve found and trust based on the feedback I’ve seen.
First, we have something called the Hour of Code which “is a global movement reaching tens of millions of students in 180+ countries”. This is something I think I heard about on CBC Spark (even if it wasn’t there you should check out this radio show and podcast “all about tech, trends, and fresh ideas.”). The Hour of Code is a basic introduction to computer science that can be geared to children of all ages from Kindergarten and up. Our children’s school participated very successfully last year for the first time and I’m hoping to have time to get involved in it next year. There are tonnes of tutorials, lesson plans, and videos that you can use for free to introduce your children (and yourself) to programming and how do get computers to do what you want them to do.
From there, you could look at Scratch, a visual programming language created by MIT Media Lab. It is designed to be very easy to work with and allows one to design games and animations quickly and interactively. It is meant to be a stepping stone into more advanced topics of computer programming. However, you can do quite a bit with it and you see the results of your tinkering right away.
I suspect that the resources mentioned above could keep a child interested for some time. The trick is to present it in a way that will engage a little person. This is a technique that I’m going to need to learn.
The next step, as far as I’ve determined from a bunch of blogs and sites, is to start looking at Python which is still an easy-to-grasp language but much more powerful. It is being used in web sites like YouTube, The Onion, DropBox, and Pinterest. It’s also used all over the place from instant messaging applications to integrated software development environments. I used Python in university and at work (a little) so I am somewhat familar with it. What I lack now is practice.
I was inspired by an article I read on Life Hacker titled “How I Taught Myself to Code in Eight Weeks”. In it the author, David Sinsky, outlines how he went from a complete “n00b” without any prior programming knowledge to being a full developer “contributing features directly into the code base” at a site called Yipit. That’s pretty inspiring. A couple things I’ve taken away from his article is an eBook called Learn Python the Hard Way which I purchased, along with almost 5 GB of videos and exercises, for a very good price. An alternative (that is also free) is Google’s Python Class. David Sinsky suggests trying both, carrying on with the one you like better, and then skimming the other for concepts you might be less comfortable with.
This particular project is slightly longer term and will evolve with my kids. I’m really looking forward to getting into these courses both for myself and for my children. The trick will be balancing it with what I want to learn about Emacs, Org-mode, and Org2blog. Both these learning projects could potentially take a lot of my free time which is a very precious commodity.
Perhaps I need to look into how to improve my efficiency…another project? 🙂
- Book: Program or Be Programmed by Dr. Douglas Rushkoff
- Hour of Code: https://hourofcode.com/ca
- CBC Spark: http://www.cbc.ca/radio/spark
- Scratch: https://scratch.mit.edu/
- Visual Programming Languages (Wikipedia): https://en.wikipedia.org/wiki/Visual_programming_language
- MIT Media Lab: http://www.media.mit.edu/
- Python: https://www.python.org/
- A List of Software Written in Python (Wikipedia): https://en.wikipedia.org/wiki/List_of_Python_software
- How I Taught Myself to Code in Eight Weeks (Life Hacker) by David Sinsky