thingelstad

Jamie Thingelstad's personal website

Showing Your Kid to Program

My friend Jim and I were talking the other day and he asked me for some recommendations on a way to introduce his son to computer programming. I have shared, probably multiple times, with Jim how I learned BASIC when I was around 6 years old and how important I felt that was. My very first computer was a TI-99/4A with a cassette tape adapter to store my programs on. After a summer of mowing lawns I added an Extended BASIC cartridge to it. My mother bought me the computer when Texas Instruments decided to stop making computers. If I remember right it cost $99 at JC Penney’s including the RF adapter to plug it into your TV. How many computers can you buy today for $99?

The great thing about that computer was that you turned it on and it did nothing. It just sat there flashing a cursor at you waiting for some instructions. It had a built-in BASIC interpreter and I was off to the races after my uncle Tim, who took one BASIC class in college (1978!) while becoming a carpenter, showed me some ropes. By current standards it sounds horrible, but it was simply awesome. It was like getting an infinite number of crayons and all the paper you could fill with drawings.

Back to the question at hand. Today’s machines are so much more powerful, and the languages are more advanced, but that doesn’t do a lot for a 5-year-old kid that wants to play around with for loops and print statements. My answer came pretty quickly.

I decided to write this up in a blog post because I think the topic is interesting. However, I’m also very interested in what other people would suggest. I suspect a biased answer from my experiences. I also expect that, sadly, my age may show in my answers as well.

BASIC

Nobody will ever write a line of BASIC code for anything real. However, I don’t think any future geek of my generation got through high school without going to Radio Shack and typing

10 PRINT "JAMIE ROCKS!"
20 GOTO 10

Just being able to do simple conditionals, loops and control statements in the simple world of Basic is an amazing thing. Sure even a 5-year-old can pick up an iPhone and do some cool things with various programs. But that is “user land”. Those two lines above are not in “user land”, they are in programmer world, and that is different.

For a kids 4 to 8 years old Basic can still be a lot of fun. Plus, they will learn the horrors of GOTO and realize that even though some modern languages accommodate  GOTO it should never be used.

Even though your modern machine will come with a ridiculous wealth of software it will not come with a BASIC interpreter. Open source software to the rescue with the Chipmunk BASIC interpreter. I downloaded the Mac version and spent a little while reliving memories just now.

Logo

The complement to showing young minds BASIC and all the text-based fun is a Logo interpreter. Logo is a fun little language where you move a “turtle” around on a canvas and place a pen up and down to create graphics. It’s a wonderful little language that you can make pictures in. How great for kids to see the result of their code!

Logo interpreters were never bundled with machines but you can download ACSLogo for Mac OS X that works well and is a free download.

What Else?

As I thought about these two selections they felt right. For kids interested in learning more about programming starting with BASIC and Logo just felt right. I did some searching on the topic and I found a number of other languages that are specifically designed for kids to learn to program. The ones I looked at seemed either too much “user land”, clicking and dragging to me or they were simply overly verbose and silly.

Of course if your kid is ready for something even more interesting, give them the really old beat up computer you have in the basement and install Linux on it and let them dive into the heart of the kernel. We live in amazing times! Maybe the crucial thing is to give your aspiring programmer the junky hardware to force creativity?

14 Comments

  1. Have you thought about Small Basic? http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx

    I’ve heard a few .NET folks who have got their kids learning with this language and its worked rather well. With only 15 keywords it’s a low barrier to entry. Just a thought. :)

    Donn

    • Small Basic introduces a challenge for me on this topic. Small Basic is object-oriented. Instead of a very obvious PRINT command you get a TextWindow object that you can invoke a Write method on.

      PRINT “JAMIE ROCKS”

      becomes

      TextWindow.Write(“JAMIE ROCKS”)

      Better? Worse? I don’t know.

      My gut reaction is that introducing a 4 or 5 year old to objects is too abstract. I think the basic flow of control for a kid needs to be pretty straight forward as well. With that said though, when I got the Extended Basic cartridge for my TI-99/4A it was all about sprites which in many ways were like mini-objects.

      However, I’m totally open to being wrong on this. Maybe teaching objects right away is better?

  2. That basic program is dead on for everyone’s first.

  3. I started programming similarly – on a BBC Micro which ran its own version of BASIC (BBC BASIC). It was an incredible PC that allowed graphics programming at various levels of complexity.

    I have always been a visual thinker, so I think if I’d started purely with abstract code, I would have been doomed. But fortunately, I learnt programming in the context of drawing geometric shapes. It was a Logo clone for the BBC Micro with language syntax very similar to Logo. I still believe kids need something as instantly gratifying as that to truly appreciate the joy of programming. I still remember the way I figured out how to draw a David’s star algorithmically.

    Of the newer generation products, I strongly suggest Lego Mindstorms for kids to learn programming (and mechanical design and electronics). I liked their Robolab programming environment, but haven’t played with the NXT, so don’t know how the new offerings stack up.

    • The Mindstorms is a great suggestion to get both programming and electronics. For another option like that a model train system with a software control system would be another option.

  4. Jason Motylinski

    February 7, 2010 at 6:44 am

    My mom is a second grade teacher at a science magnet school in St. Paul. She uses Scratch with her kids: http://scratch.mit.edu/.

    • I wonder if my reaction to Scratch (and Greenfoot) are the items that reveal my age. I find myself discounting heavily these heavily scripted visual environments. I feel like a bit curmudgeon and want to say “But programming is about typing code! No mouse required!”.

      I think my problem is that it feels to me like tools like that are teaching people how to be “power users”, not programmers.

  5. Think BASIC is spot on to start with.

    But maybe HTML might be another entrance .. some of the simple tags within the tag.

    OK it wont teach program logic but it is an introduction to certain displine and nesting (matching the tags etc) and kids might get a buzz out of the finished page … and get hooked. Especially with
    a Javascript alert or 2.

    But I think that love of coding is something that can’t be taught … I was bitten as soon as I touched a keyboard.

    PS: Have come over all misty eyed about my second hand BBC Electron and cassette player 20+years ago

  6. FWIW There is an interesting book published by Manning that my son and I are working through titled “Hello World – Computer Programming for Kids and Other Beginners.” It uses Python as the programming language.

  7. Wow, the nostalgia! Funny how close this was to my own early computer experiences and, from the sounds of it, a lot of others from my generation. The only slight difference was that my first toy was a TRS-80 that my dad brought home from his job at 3M when I was also around 6 years old. I had what I now realize was an advantage of having a dad who could program.

    It’s funny you bring up Logo since it was one of the first programs I ever saw the source for, although I didn’t understand much of it at the time. One of my 2 older brothers had come home from school all excited since they had gotten to play around with Logo on the awesome green monochrome Apples at school. So, to play around with the TRS-80 and to sharpen his own skills, my dad made a port of it based on my brother’s description of it.

    My first useful program (at least I thought it was pretty cool) was one I wrote somewhere around 5th grade maybe…? There was an algorithm in one of my textbooks that let you figure out what day of the week any date in history fell on. So, I transposed that algorithm into BASIC and made a little program that could tell you what day you were born on. Because of that, I’ll always remember that I was born on a Thursday!

    Anyway, enough reminiscing. My son is only 2 and a half months old and I’ve already begun to think about these very same topics. Just the other day, I was working from home while he was laying across my lap staring intently at the screen and I thought, “yeah, get used to that.” Maybe he’s already picking up some programming skills subconsciously? :)

  8. Hi Jamie,

    I was searching this exact subject this morning and found your post. Thanks for sharing this. I remember the story about your first laptop :) Anyway, I appreciate your suggestions on how to get a child interested in programming. Though Belle is already in 6th grade – the mpls public school system has yet to introduce her to programming (don’t get me started on the irony of “no child left behind”) – it’s better late than never to get her going on this. Thanks.

    BTW, congrats to you and Tammy on the new addition to your family. Hope all is going splendidly!

  9. Wow what a fun read. Brought back all kinds of memories. All of them good. I still have my Apple ][+ and all the manuals/disks. I love to turn it on once in awhile just to hear the floppy drives start up. Odd I know but they had such a distinct sound that if you have ever heard it you never forget it. I think I even have the first cassette tape that I stored all my first program on.

    Although not a programmable computer, my first experience with technology like a computer was the Pong game. Remember that. I think we wore out the paddles.

    I would love to teach my daughters how to program. However, they are more interested in socializing using the Internet instead of creating anything for it. :(

    BTW, did you have Nelson in high school for a computer teacher?

  10. I hear you, Jamie. We tried scratch, but it turned Eli into a project manager. “Hey can you have it walk the guy over there and then fight with this guy?”

    Unfortunately, our limitations when we were young were the reason we did what we did. I was thrilled with drawing a square on the screen. But that was almost the best thing the computer could do. So we figured out ways to make a box interesting. Unfortunately, now kids know what a computer can do and they want to do THAT right away.

    “Hello World” in the Nintendo DS sdk is moderately easy. You can get your very own program on your DS! The challenge is the next question, which is “how do I animate a self-aware character?”

    I am still looking for alternatives, but at the same time I’m trying not to be “the dad who” — I’m sure my dad would have loved having me work with him in his carpentry workshop, but I was more interested in computers. Ironic (or is it?) point is that now I’m into carpentry. Full circle.

    That said, my daughter (7) is way into the scroll saw now. :)

Comments are closed.

© 2014 thingelstad

Theme by Anders NorenUp ↑