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.
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
Anonymous
June 09, 2009
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)Anonymous
June 09, 2009
Did you ever check out Small Basic? http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx Here's the "Getting Started Guide": http://download.microsoft.com/download/9/0/6/90616372-C4BF-4628-BC82-BD709635220D/Introducing%20Small%20Basic.pdfAnonymous
June 09, 2009
Well you should first teach him optimization! This draws the same image in 9/10th the time :-P repeat 9 [wee]Anonymous
June 09, 2009
I have started teaching my 6-year old son logo as our summer learning project.  My goal is to helpAnonymous
June 09, 2009
I can recommend SmallBasic. It's based on the .NET platform. http://msdn.microsoft.com/en-us/devlabs/cc950524.aspxAnonymous
June 09, 2009
The comment has been removedAnonymous
June 09, 2009
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 IanAnonymous
June 09, 2009
My fist language was Pascal which I think gave me a good foundation.Anonymous
June 09, 2009
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:-)Anonymous
June 09, 2009
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 helpfulAnonymous
June 10, 2009
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.Anonymous
June 10, 2009
@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. :)Anonymous
June 10, 2009
I'd love to play around with http://antme.net/English/ Most likely not for beginners. But maybe later.Anonymous
June 10, 2009
My fault: The source is currently only available in german. Maybe a second goal; learning german while learning programming. : )Anonymous
June 10, 2009
@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.Anonymous
June 10, 2009
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.Anonymous
June 10, 2009
"And why do you think you have nightmares of so-called 'abstraction layers'?" asks the therapist... :)Anonymous
June 10, 2009
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!Anonymous
June 10, 2009
The comment has been removedAnonymous
June 10, 2009
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. IgorAnonymous
June 10, 2009
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)Anonymous
June 10, 2009
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/Anonymous
June 10, 2009
I agree with Bertrand... eToys is slick, although I'd say Logo gets the concept of structured programming better.Anonymous
June 10, 2009
The comment has been removedAnonymous
June 10, 2009
http://stackoverflow.com/questions/20059/suggestions-on-starting-a-child-programmingAnonymous
June 10, 2009
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.Anonymous
June 10, 2009
The comment has been removedAnonymous
June 11, 2009
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.Anonymous
June 11, 2009
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? :)Anonymous
June 12, 2009
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! ;)Anonymous
June 12, 2009
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.Anonymous
June 12, 2009
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.Anonymous
June 13, 2009
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.Anonymous
June 13, 2009
I taught my self C# on .NET 3.5 over the summer of 2009 and have continued by learning PHP.Anonymous
June 15, 2009
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.Anonymous
June 17, 2009
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 livingAnonymous
June 17, 2009
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!Anonymous
June 18, 2009
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.Anonymous
June 18, 2009
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.Anonymous
June 18, 2009
Tonight I read the blog post from Brad Abrams a “developer” at Microsoft that I have been following fromAnonymous
June 19, 2009
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.Anonymous
June 20, 2009
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?Anonymous
June 21, 2009
The comment has been removedAnonymous
June 22, 2009
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, AlexAnonymous
June 22, 2009
The comment has been removedAnonymous
June 22, 2009
The comment has been removedAnonymous
June 23, 2009
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.Anonymous
June 24, 2009
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 pathAnonymous
July 04, 2009
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?