A new generation of programmers begins


I have started teaching my 6-year old son logo as our summer learning project.  My goal is to help him discover the creativity and logical thinking approach that programming requires. And, of course to share a passion that I have with him, so there is a tiny hope we will have something to talk about when he is a teenager. 😉

Anyway, tonight he just finished his ‘real’  first program!  A bit of it was copied from an example and some of it was inspired from watching me play around, but really it was all his idea. 

 

Bostons first logo program

Oh, and you Framework Design Guidelines fans – don’t worry, names like “tri” and “wee” will not last.. what is the naming conventions for Logo anyway?  (btw, “wee” is short for pinwheel and tri of course is triangle)

We are using FMSLogo… it is fine, but we’d be happy to move to a .NET version if you can recommend something.

Have you taught child programming?  how did it go?  what did you use?

Comments (49)

  1. I think nowadays people use Scratch ( http://scratch.mit.edu/ ) to teach programming to school kids/girls (and yes, a .NET version would be nice)

  2. Jesse says:

    Well you should first teach him optimization! This draws the same image in 9/10th the time 😛

    repeat 9 [wee]

  3. What's New says:

    I have started teaching my 6-year old son logo as our summer learning project.  My goal is to help

  4. Patrik says:

    I can recommend SmallBasic. It’s based on the .NET platform. http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx

  5. Pop Catalin says:

    When I was 8, my cousin was showing me his Amiga Sinclair ZX Spectrum 48K, mostly showing me his coold games on tapes (he had a whole case of tapes).

    Naturally I was very excited about the games, but I was also very curious what do all those words on the keyboard mean, and also I saw him type all kinds of commands and that made me curious. I asked him what are those words for, and he explained to me that you use the to make programs, and he showed me how to make a very simple program, to print something in a loop. I was very excited and asked him to show me how to program games :). That was my first encounter with programming.

    Afterward when I was around 12 my parents got me a PC (486 with MS-DOS), didn’t program much but I loved to play around with it, trying to discover how things worked,  and I also bought myself my first computer related book from my own savings (Was a MS-DOS book with 4 smiling corporate faces on the cover).

    I really started programing when I got in high school, and started learning Pascal at school. I used to spend all my afternoons coding all kinds of stuff, and loved doing it.

    I don’t think teaching kinds to program end to end is really the goal, but teaching them how cool computers are and what wonderful things you can do with them by creating programs and spark their curiosity and imagination is the way to go.

    I don’t have kids yet and I know this wasn’t much help, but I think any programing language that you can use to make something cool (non mathematical, but more graphical or geometrical) will do, and I think logo is a good choice.

  6. I have dabbled a bit with my children (aged 6,10 and 13).  The younger they are the quicker they want results of course, and I think you have a great result there for a 6 year old!

    We have played with:

    Popfly: http://www.popfly.com/ (got so far in a crocodile adventure game then lost interest a bit)

    Just using Expression Blend to create fun animations with a bit of interaction

    KPL (some while ago) which I now see is a commercial product: Phrogram http://phrogram.com/ – it’s .net 2 so I may revisit this now…

    Had some recent success with this too: http://robozzle.com/ – my 10 year old boy in particular really enjoyed it, and it teaches some good programming concepts in a fun way.

    Cheers

    Ian

  7. Sinky says:

    My fist language was Pascal which I think gave me a good foundation.

  8. Huw says:

    Brad – I am worried that training kids is going to up the stakes for all us IT workers in the VERY near future, please stick to video games and tv in the future:-)

  9. Sandeep Kumar says:

    Hi Brad,

    You are a good dad 🙂

    Check this Kid’s Corner http://msdn.microsoft.com/en-us/beginner/bb308754.aspx

    My little cousin found this very helpful

  10. Hey there Brad!

    If your stated goals (the teaching of creativity and logical thinking) are indeed your only ones, then good thinking.  Please let us know how he takes to it!

    However, if you’re also secretly hoping to produce some mega-brain programming Frankenstein to unleash upon an unwitting workforce, I’m afraid (unless things have changed drastically since I worked for "the man") corporate American will simply respond with…

    "Wrong continent."

    Unless, of course, he’s going to run the company.

  11. Tom says:

    @Pop: Amiga and Sinclair don’t go together.  Really, really don’t go together.  Read "On the Edge: The Spectacular Rise and Fall of Commodore" sometime, you’ll love it.

    I also learned via BASIC, first on a VIC-20 and then BASIC/GW-BASIC/QuickBasic on the early PCs.  I only got a small chance to use Logo on the Apple II’s at school, although I remember enjoying it.

    SmallBasic looks kind of neat.  But I wonder what it would be like starting nowadays with C# or VB.NET.  It wasn’t until I was 12 that I got into C, but I think C# or VB.NET in a modern IDE would be significantly easier.  It would be interesting to try it, anyway.  Might even give you a valuable opportunity to evaluate certain design decisions from a new perspective. 🙂

  12. Bdiem says:

    I’d love to play around with http://antme.net/English/

    Most likely not for beginners. But maybe later.

  13. Bdiem says:

    My fault: The source is currently only available in german.

    Maybe a second goal; learning german while learning programming. : )

  14. Pop Catalin says:

    @Tom…

    Sry about the mistake. All I remember clearly is Sinclair and 48K, that I know for sure. I don’t know if it was Amiga, Commodore or some other thing. Pardon me on that but I never had the chance to study the history of those systems afterward. Maybe now it’s a good time.

  15. Clinton Pierce says:

    After shopping around, I introduced my kid to MIT’s Scratch.  There are some deficiencies (strings are almost non-existent) but it has a nice sprite model that Small Basic lacks.  Furthermore the "jigsaw puzzle" editor avoids all of the syntax stuff that gets in the way.

  16. Ben says:

    "And why do you think you have nightmares of so-called ‘abstraction layers’?" asks the therapist… 🙂

  17. I think almost any language would be ok for learning, because the important thing is that the person teaching it knows enough that they don’t confuse the student and that questions can be asked. But something else I would like to say is I admire your motivation to teach your child programming. When I was young, my dad taught me a few BASIC things (excuse the pun!), but once I started school they never taught me anything until college, and even now 99% of what I know I taught myself in my free time. I’d be prepared for a really nice Father’s Day gift someday if I were you!

  18. Intrawebs says:

    6?  WTF?  For a "summer project" try these instead.

    Teach him how to swim.

    Play catch (any kind of ball will do).

    Do some drawing or painting together.

    Go hiking.

    Go Fishing.

    Go Camping.

    Build something in the garage made out of wood or metal.

    Anything but a computer at age 6.

  19. Check out RoboZZle. It’s a Silverlight-based programming game at http://robozzle.com/ and a demo video is here: http://www.youtube.com/watch?v=MmqBVWi_Pc0

    Earlier puzzles let you explore state machines, recursion, conditionals, etc.

    Later puzzles are tough and require you to combine the concepts in complex ways.

    Igor

  20. Lego Mindstorm teaches programming in a very visual way, and it also teaches about microcontrollers.

    But the best thing I’ve seen is eToys. You can use it to teach programming, physics or just to have fun. It is AWESOME http://en.wikipedia.org/wiki/Etoys_(programming_language)

  21. You’ll also want to check out Kodu on the Xbox in a week or two when it’s out: http://www.joystiq.com/2009/01/08/kodu-is-the-new-boku-xbox-lives-littlebigplanet/

  22. Kris says:

    I agree with Bertrand… eToys is slick, although I’d say Logo gets the concept of structured programming better.

  23. Paul Howard says:

    Hi Brad, I have a good story with my children you may wish to hear.

    I have been a software developer for 23 years, I have taught my children programming. My teaching started with Lego at a very early age. My children loved lego and we had boxes and boxes of it, it promoted tons of creativity. This graduated to lego Mindstorms. Mindstorms introduced ROBOLAB from Tufts then NXT-G by National Instruments both graphical programming environment for LEGO. They were very simple and worked very well for starters. But soon we became too advanced for it (notice I say we). So we moved on to ROBOTC a C like programming language for Mindstorms that introduced real-time interactive debugging and other concepts. Next we moved to the .NET Interface for Lego Mindstorms using C#. This really introduced my children to mainstream object programming and eventually the importance of practices and patterns.

    Note this was only possible because of a very early interest in Lego and anything Lego related. The children always drove the projects.

    BTW, I am a big fan of yours.

  24. Gleb says:

    I saw like 10-years schoolchildren are programming with Lego NXT default IDE. May be they do not understand that they are PROGRAMMING, but it works.

  25. Nikos says:

    For god’ s shake leave the poor kids play seek n hide or football. Us being jealous of their lives doesn ‘t mean that they are also jealous of ours.

  26. Wil says:

    I had quite literally never **seen** a computer until my freshman year of college, when I learned how to program one.  OK, that was 1967, and the world was rather different then.  But what I have to wonder is, if kids are learning all about computing at an early age nowadays, what is it that we were learning in the 1960s that present-day kids **aren’t**, in the time that they spent on computers?  Maybe they aren’t learning the math and science on which we spent so much time drilling?  In other words, in 2009 are kids learning **how** to compute at the expense of learning **what** to compute?  I assume that’s surely not the case, but one just has to worry that in order for kids to spend their time on the keyboard, something else in their lives had to make way.

  27. Lance Hunt says:

    My 13 yr old is already bored this summer, so I introduced him to Smart Basic (smartbasic.com).  So far, so good with him, but he wants to write games more like what he plays on the XBox360.  

    Is it too early to move on to C# and XNA?  🙂

  28. Lee says:

    I don’t see why Logo, C#, et al and hide-n-seek, camping, et al are mutually exclusive. If the kid shows interest and a willingness to learn I say go for it!

    OTOH, if you allowed a portable DVD player and/or game devices to be brought to the campground, and your kids sequester themselves in the tent/camper all day long, it really is time to rethink your priorities! 😉

  29. Genious says:

    Well, it starts worrying me. what we want from our next generation …. GEEKS

    i guess we should be more nature friendly instead of Technology friendly. never mind.

  30. Erno says:

    I introduced C# to my 12 year old WITHOUT calling it C#. I believe in talking about memory and naming the memory spots. The need for loops and if’s comes naturally. OO isn’t important yet. Console apps are fine, windows apps distract too much. My 14 yr old is more interested in drawing (Expression and Inkscape) so he makes my buttons/icons in vector formats.

  31. borgdylan@hotmail.com says:

    My first programming language was VB.NET 2005 which I learnt when I was about 14 yrs old(now I am 16 and use VB.NET 2008).But at the same time I had to learn Pascal because of Computer Studies classes.

  32. Zach B says:

    I taught my self C# on .NET 3.5 over the summer of 2009 and have continued by learning PHP.

  33. Jay Walker says:

    Kudos to you and your son on quality time spent hacking!

    Your results are way better than anything I created with logo when I was 8 or 9. We just tried to move sprites around the screen on a TI994/A.

  34. Al Pascual says:

    Tonight I read the blog post from Brad Abrams a “developer” at Microsoft that I have been following from years, one of the first Microsoft people to have a blog really. I was very fortunate to meet him in person the last MVP Summit. When I was a kid living

  35. Sergey says:

    my boys is only 4 months old, so i will think of your question few years later… but, i remember my first programming experience – it was a vehicle with few calculator-style buttons, which could be used to program vehicle movements and lights flashes. that was really simple, but it can work for 4-5 years kids!

  36. Piotr says:

    I would recommend giving F# a serious look. With its succinctness and clear flow of the code it should provide very easy entry into basic programming.

  37. Ron Cotton says:

    Brad,

    Teaching kids programming must be a Summer time activity akin to learning to swim or shoot a basket.  I have 4 kids and I working with 10 year daughter.  I plan to work with my 13 year old son later.  The other 2 are too young yet( 1 & 3).  My daughter and I settled on Python and the book,  "Hello World".  You can find the book @ http://www.manning.com/sande/.  The book is wonderful and we are really enjoying our time together.  She is learning a lot and seems genuinely excited.  I’ll let you know how things turn out.

  38. Tonight I read the blog post from Brad Abrams a “developer” at Microsoft that I have been following from

  39. Rob says:

    Brad, Thanks for this post, this brought me back to the days of elementary school where I used Logo for the first time. I completely forgot about this, and I think I will be going home tonight to teach my kids.

    Logo was the first introduction to programming and thats where my love for development began. thanks again.

  40. dave says:

    Very good blog article and comments.  I have 3 kids 8, 10, 11 and of all the comments to me the mindstorm seems the most interesting as it has this physical aspect.  Xbox, wii and modern electronics have killed the inventive aspect that I grew up with.  We were happy making the vic 20 perform a loop.  Todays’ kids have huge expectations.  The question is, how do you bring kids down to the basics and instill into them the same desire that we once had while competing with the extreme games on xbox (etc.).  Making a dot move on the screen or a sprite bounce up and down holds the interest for about 3 minutes.  How do we keep their attention and at the same time get them to strive to focus and complete a programming mission?

  41. dzar says:

    A colleague of mine developed a programing environment (I hesitate to limit it by calling it a language) called Storytelling Alice (http://www.alice.org/kelleher/storytelling/). It’s geared toward middle-school girls, but that was the target group who, traditionally, could not be gotten to be interested in programming. It could be used by middle-aged men, just as well, of course.

    Personally, (I’m aging myself) I learned to program as a 10-year old on my father’s CP/M computer using Z80 assembly language for graphics and "hi speed stuff" and BASIC for I/O. Yes, I was writing DLLs (we called them overlays back then) in 32 KB of RAM on my dual-floppy (yes, TWO floppy drives so I could leave the OS disk in and have my data disk running at the same time… these were 180KB 5.25" disks for those who can remember those) in 1980. I survived and am now enjoying programming cell phones with C# and .NET.

    Hence, I suspect ANY language will work so long as the following criteria are met (I’m employed by a university, now, for full disclosure of where I’m coming from):

    1) The child must be left alone for at least 70% of the time so he/she can explore. More is learned from mistakes than from successes.

    2) Guide the child by asking them to write a program to do XYZ, or better, when they ask you for an answer to something, suggest they write a program to do it (I was told this when I asked my father what the 100th decimal place of PI was… no I was not 10 when I did that one!)

    3) Do encourage multiple languages, but targeted to solving problems best suited for them. So, when your child wants to calculate PI to 1000 places, I don’t think Logo is the best choice. Neither would be assembly. At that point, suggesting a more traditional procedural or functional language might be good as they are motivated by the new problem at hand.

    4) I shudder to think about introducing too many formal or theoretical aspects to a young child. How many of us learned "the right way" to do something only to have a new "right way" or an entirely new language/library/pattern take its place? Keep it fun and focus on logical thinking. If they can master logical thinking, then the other stuff can be learned from books or colleagues. It’s hard to teach a college-aged person how to think logically if they have not done so, previously (I should know!).

    I’ll have a 6-year old in a few weeks, myself. She "programs" by getting on pbskids.org and playing games, drawing pictures and figuring out how to get what she wants quicker! She’s learning to think logically. Now, what programming language should I introduce her to for her birthday? Hmmm…

  42. Alex says:

    Hi all,

    Thank you for your valuable comments and suggestions.

    During the summer we (I’ve a 2 months, 3 and 6 years old kids) most of the time have plans for outdoor activities.

    During the winter thought (Yes, we’re from Canada) I spend some time with my 6 years old playing "The Incredible Machine".

    When I knew this amazing game I already imagined myself playing with my own kids. I think it is a great game to help kids develop their creativity and logical thinking, and introduce them to basics principles in physics.

    I was thinking in start teaching my six years old some basic programming but since she likes painting so much I decided to show her MS Paint first.

    I was amazed how just after half an hour or so she proudly showed me her first drawing in the PC, an exact copy of what she did on paper, you know the classical countryside house with the rainbow, the sun, etc.

    I congratulated her for the nice painting and for the greener home that we’ve now since she used to take dozens of papers almost daily for her painting, now she paints eBirthday cards for her friends instead.

    When I read the first version of OOSC around 1992 when I was in university I realized about the beauty of software and its duality, how a very complex problem can be decomposed and represented with simple constructs nicely related, this book completely changed my view about software, at the time I was fascinated with the algorithms (Knuth), compilers, etc, but that’s for another blog.

    I realized at the time that I could probably use Eiffel and DBC to introduce programming to kids or anyone interested, and I think the same today.

    After all to teach the kids ideally we should try to minimize the gap between the real world concepts they know and how are those concepts represented in something abstract like software.

    And that’s exactly what I think is elegantly accomplished by the OO and Eiffel where the kid almost can read in plain simple english what the program is intending to do, where its behaviour is ‘adorned’ by simple logical assertions known to kids since they learnt what is true or false long before they even learn to talk.

    I’d say there’s almost a one to one mapping between the objects in real life known to the kids and their software representation, the code.

    Anyway I just wanted to thank you for sharing your valuables ideas but I ended up by writing too much.

    Thanks again,

    Alex

  43. tperri says:

    Intrawebs, and everyone

    I don’t think there is anything wrong with teaching some programming as a summer project at the age of 6.  My father began teaching me Applesoft Basic when i was three years old.  I definitely feel that learning logic at an early age was very important aspect to my education.   I am now 34 years old and a programmer.  AND am female.  And am still well-rounded and well-learned in a wide variety of subjects.

    Exercising the body AND mind is healthy at any age.  I am very thankful for the education my parents gave me while growing up.  My daughter is now 2 years old and she can move a mouse and click on her You Tube children’s movies herself.  I will do my best to educate her as I was educated.  I don’t see anything wrong with being able to write a computer program as well as play basketball, paint, or doing anything else that is interesting!

  44. T McLeod says:

    In response dzar on June 21, I too have used Alice to teach programming, but not to middle school girls. These were non CS majors taking a CS survey course. I have to say, however, that the results were mixed, with usually half the class "geting it" while the other not.

    I disagree, however, that teaching kids theory is somehow bad. I find that children age four and up respond well to very elementary set theory, graph theory, combinatorics and algorithms, if presented in a fun, interesting and age-appropriate way.

  45. Robin says:

    Wil asked:  "In other words, in 2009 are kids learning **how** to compute at the expense of learning **what** to compute?"

    I asked myself the same thing when I found my son had programmed his calculator to solve his AP Calculus problems. I hounded him about whether it was allowed (yes), whether it was correct (yes – he said), and whether he was willing to risk his grade to his programming skills (yes). It all turned out OK. I decided that he must have understood the problem well enough to program it.

  46. LastHero says:

    Let the kid be a kid!

    No Summer learning, no staying indoors. Take him camping so he appreciates nature and wildlife.

    All of us here discovered our passion for programming sometime later on and stuck with it.

    Let the kid discover his own path

  47. Joe Gannon says:

    While this is heartwarming, I wonder if Microsoft would ever have a post about "my grandfather." Lets face it, Microsoft has some interesting programs for teens, but none for older workers who want to learn programming. What research proves that older workers can’t program?

Skip to main content