“Developing” the Next Generation

notebook_coffee_laptop

Link to original image | Attribution-NonCommercial-ShareAlike 2.0 Generic (CC BY-NC-SA 2.0)

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? 🙂

3 comments

  1. thank you. not only do i agree with the points of your post, it encouraged me to take another look at code.org, which ive been too hastily judgmental of because of some of its sponsors. i found this reassuring: http://blog.code.org/post/73963049605/the-secret-agenda-of-codeorg

    i also agree very strongly with the concepts in that note from code.orgs founder, in fact i talk about these things to anyone that will listen. (it must be annoying, but it still matters.)

    if you ever decide that youd like to write a programming language, i can tell you the easiest way how. (i can also point you in some directions towards the “right” way, but finding the “right” way is the easiest part of doing it.) i lean towards toy languages, because everyone can make them and the benefits are two-way: it makes you a better coder, and it could inspire a feature in the next “big deal” language– maybe.

    at least thats my thesis: everyone should learn to code (even if they dont become professional coders) and every coder should write a simple language (even if they dont become professional language designers.) if i didnt think i could prove that the latter is as easy as any other programming challenge, i wouldnt suggest it, you know? making a language with 5 commands should not take more than 5 hours. happy coding.

    1. “everyone should learn to code (even if they dont become professional coders) and every coder should write a simple language (even if they dont become professional language designers.)”

      I like your thesis. To be honest, I never thought about writing a computer language though I did take a course about programming languages (functional, procedural, declarative) many moons ago in university. Writing and designing a simple programming language sounds like a great way to “look under the hood” of all programming.

      1. my formula for a language isnt special:

        * iterate through a large string, or the lines of a file
        * what you do next depends on how easy you want it: look up tokens in an array or table on the fly, or just look at everything to the left of the first space of each line, or even just look at the first letter (all are valid approaches.)
        * depending on what that first part is, determine what to do with the rest (easier than it sounds.)
        * you could even alternate between “1 line is a command, next line is parameters,” etc.
        * sure, if you want could use a parser generator and and up with a nice recursive language implementation. but lots of people that write their first language as a fun challenge skip all that, and keep it really simple.

        when i started i thought this might be fun, if naive. id written a couple scripting toys already (an animated ascii art language, for one.) never “general purpose” or even close (it doesnt have to be; markdown languages arent and theyre still fun/useful.)

        then i found a bunch of toy languages using “my” approach on youtube, and watched an author of “how to design programs” teach language design using scheme– no parser generator to start out. the easiest way to start your own language is to write functions in something like python (or lisp– even javascript; anything you love) and then come up with a straightforward way to translate a simple language to call those functions. lots of compilers translate/transpile to things as high-level as c++ or js now.

        thats good enough for a (seriously) day-long or week-long leap into language design. the only reason to spend more time on it than that is if you fall in love with the idea. then you get to decide in which ways you want to enhance the design. there are no rules, only “best practices” — hobbyists and side projects are never limited to those. 🙂 so sometime if you feel like it, its possible and fun. cheers.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: