Help Teaching Programming to a Teenager

I’m looking for ideas about different sources – online, books, and software – for helping a teenager learn how to program.  I’m looking for both introductory / early programming stuff as well as general computer science stuff.  The more interactive, the better.  If you have any ideas, please post your comments. 

  • You might want to take a look at BlueJ

    BlueJ is an integrated Java environment specifically designed for introductory teaching – great for learning general concepts in object-orientated programming, as well as solving the issues that some people have have teaching Java as a first language. And it’s free…

  • Raul P. Murguia

    Try ‘The Little Lisper’ for a short, delightful intro into big ideas of Computer Science.

    Alan Kay’s Squeak is another great learning enviroment.

  • You might try Kids Programming Language (KPL). It encourages “hacking by example” by providing a number of graphic games among the code samples. My 9-year-old was moderately entertained, since we replaced some of our own photos and sounds for the built in ones, without having to code up the boilerplate for the environment.

    It’s built on .NET, so you need Windows, but it’s otherwise free.

  • And for a little fun along with the learning, try Robot Wars:

  • From a friend:

    I’m having my son (14yrs) Carlo go through Learn to Program, by Chris Pine.

    He’s enjoying it, but there’s just so much more to do in the summer that he hasn’t concentrated much on it for more than a month 😉

    If you haven’t seen Ruby, it makes a great language to learn because it’s small, interpreted, and dynamic. BUT, it can grow with you as you learn more. It’s fully object oriented and therefore more consistent than something like Java where primitives and classes aren’t completely interchangeable.

  • Chad Harrington

    Here is a talk about using Python to teach teenagers programming that you might find illuminating. I’m also including a link to an O’Reilly interview with the author of the talk. Good content.

  • I have to agree with Adam’s comment and start with something like Robot Wars —

    Along with learning some coding skills and having fun, you will get a good base in basic logic and skills that can be applied across many languages.


  • You could try It is a site full of e-learning for technology, which is based on quick time videos from very good presenters. Sample files included, and on a relatively low cost subscription.

    Good luck.

  • One of the most enjoyable books I have read recently is a programming introduction called Why’s Poigniant Guide to Ruby on Rails.
    It is very funny and I think a creative/smart teenager could really enjoy it. Besides, Ruby is the hot language right now.

  • I just spoke to my good friend Dan Scholnick, Founder & President of Flurry ( – creators of flurrymail).

    He and I agree that books, CDs and the like are important *parts* of learning, but the key to really growing into computer science (or anything really) is finding a willing, patient mentor who will help guide you.

    Dan first became interested in programming at age seven, when he picked up a book on Basic and taught himself (via the examples in the book) as much as he could. He says he quickly outgrew the book, and had questions but no one to ask (at seven your concept of ‘who to talk to’ is limited mostly to family).

    As a result, he gave up programming in favor of other activities. He picked it back up at Dartmouth, where he was very active in the Basement, and helped create Blitzmail.

    As prolific as Dan is now (he’s attending HBS), imagine the difference a mentor might have made.

  • mac

    I suggest you look at RUR(PLE)( which is a very gentle intro to Python.

    Scheme is another possibility. Three excellent sources:




  • Brad, I think it depends on the kid’s age, gender, previous computer background, and literacy. A few years ago, some friends asked me to teach Java to their gifted, 5th-grade son. He was already into Lego Mindstorms and other “kid” programming. He wanted to learn the “real” stuff. Because my daughter was his classmate, she agreed to join us. We were meeting in a location without Internet access, so we picked a book to use – Simply Java. It seemed ok since it was a hands-on, tutorial approach. What I found was:

    – the tutorials were too rote and didn

  • Since Chris Pine’s book was mentioned, it’s worth noting there is an online version of the basic tutorial. It runs through some very basic concepts with code samples that show implementations of those concepts in Ruby (and starts with how to get Ruby running). Although this tutorial is an OK way to show someone what it will be like to “program” it doesn’t do a lot, necessarily, to engage the creative juices. But, it’s tough to teach “real” programming while giving projects that seem relevant, since there is so much to learn at the lower levels before you can really start to be creative — I suppose that’s the trick, though.

    One way I have found to shorten the time from learning basics to getting creative is to start with the web. Learning a few basic HTML tricks and then introducing some javascript basics can be an easy way to introduce a lot of basic programming concepts but still get some instant gratification — especially when the web pages created can be put up for all of the world to see. It’s important, of course, to not just be teaching the HTML itself but focus on the javascript and what can be done with basic looping, conditionals, expressions, functions, etc.

    This is such an important topic. My cousin’s kid is 15 and desperately wants to learn how to program applications for his Macintosh, but few books start from “the beginning” and even fewer seem to come at things from a perspective that engages someone in the art of code conceptually before getting into the details. On the other hand, I suppose that it’s good to learn right up-front that programming involves a lot of (at times frustrating) minutiae.

    It’s also good for someone interested in programming to get some higher-order perspectives. For instance:

    Or, possibly event:…was_the_Command_Line


  • The most important thing is to have a “real” project to work on. My first project as a kid was to keep a log of when someone entered or exited my room. I used a Apple IIe and a photo resister attached to the game port to detect movement in the room. Today you could do something really cool like that but instead snap a photo any time you hear a sound, for example.

    The resources to learn how to do a specific thing are readily available to be googled at any time. The key is having motivation to do that particular thing beyond just “studying” it. Once you have the motivation to solve a specific problem and have a specific goal in mind, the answer to any problem or question is usually easy to find with examples in any programming language.

    In summary, the best resource is a real project and a real mentor to point you in the right direction and provide needed hints.

    I’d be happy to act as a mentor in this way via email or in person in Boulder. I don’t think it takes much to help somebody in this situation, as long as they’re self motivated. If not, they probably won’t be a good programmer anyway. Feel free to pass along my email.

  • Last spring, I volunteered to teach an introductory programming class at the small private school at which my three daughters attend and my wife teaches. I chose python for three reasons:
    1. I know it very well
    2. No compiling
    3. Syntactically easier to deal with. Although issues such as indentation and case sensitivity are still bumps in the road for the kids.

    It was a qualified success. Since it was a voluntary class, half of the kids bailed when they realized it actually meant work. The remainder stayed and by the end of the semester had become proficient in using Python up to object oriented concepts.

    The text I ended up using is “Python Programming for the Absolute Beginner”, Michael Dawson, ISBN 1-59863-112-8

    This summer, I have employed my eldest daughter at $8/hr as a python programmer. She spent two weeks using the above mentioned text to get up to speed on python. She then used the reference “wxPython in Action”, Noel Rappin and Robin Dunn, ISBN 1-932394-62-1, to get up to speed on gui programming using wxPython.

    We use subversion for source code control and Bugzilla for the enhancement/bug manager. I assign her a bug/enhancement request, she checks out the latest from subversion, does the work, tests it, and then checks it back in for review.

    She will be off to university in three weeks to start her studies in Biology and I’ll miss having her in the office. She has made a slight change in her major, she has elected to pursue the Computational Biology specialty.

    My middle daughter (15) is more interested in Java. The high schools have a computer science competetion in Java. The aforementioned BlueJ has proven to be a good tool. I let her pick out the text to use. She really likes it and has made good progress but I do not have the citation at hand.

    My youngest daughter (12) is working through the above-mentioned python book. Since it teaches python by building games, she stays interested. It also helps that I’m paying her $10/chapter.

  • nuff said? 🙂

  • Tom Varsavsky

    when I turned 12 ,over the summer I went to a camp called cybercamps at Stamford University and took a course on javascricpt and html. Cybercamps are based all over the states and it goes from ages 8 to 18. It helped me understand alot about programming and I strongly recomend it.

  • Maurice

    try python there is a book out and a program to help teach you im a teenager myself i started to self teach but i got caught up in other things but from what i saw it seems like a good bet

  • Marc

    It may sound crazy, but I first learned to program writing VBScript macros for windows. I used a template, which is available here and I just added to it and also tried to understand everything that it did. Now, several years later I am writing my own desktop and database applications.

  • The incident was especially painful for Blippy, given that a New York Times breitling navitimer profile of the company appeared Friday morning, highlighting the growth of start-ups replica watches like Blippy that are designed to share personal information breitling evolution with the world.

  • Pingback: auto insurance quotes online()

  • Pingback: car insurance quotes()

  • Pingback: quote on car insurance()