What makes a good first programming language for kids?
My son, who is 8 years old, was intrigued by some of the games I made years ago (mostly in Director), and perhaps is ready to learn his first programming language.
It doesn’t have to be all coding at this point, perhaps with a mix of visual programming. Since he likes playing with lego, we looked at Lego Mindstorms; however, I’m not sure if he’s ready (the box says for ages 12+). I know Robin teaches his kids C#, but the complexity of the language, libraries and compiler…etc. would probably frustrate an 8 year old (and no doubt my son). Logo seems to be a logical choice, but I’m open to suggestions…
What do kids like to do? What frustrates them (and diminishes the interest in learning)? Why even learn a programming language? What are the essential ideas kids should learn? Logic? OOP? Making turtles draw?
After looking at different options, I think ActionScript is not a bad choice! 😎
29 replies on “Programming for kids”
I’m biased, but I honestly think AS is one of the best languages you can learn on… it’s based on modern syntax (ie. what you learn is relevant), it has immediate visual feedback, and it’s probably the most scalable languages you can find – you can start with simple timeline commands, and ease slowly all the way up to ECMA262 OOP.
Another major benefit is that it leaves a ton of room for your son to be infinitely creative – you might find he enjoys like the design aspect of Flash more so than the coding.
This is all coming from someone with no kids though. But I did start coding when I was pretty young, and I know the visual aspect of Hypercard was the main thing that kept me interested in the beginning.
I have a kid brother(13) who just won’t follow my footsteps… he loves art/drawing to death but won’t do it on computers… i’ve been trying to sell flash to him, but I guess i’ve been a bad salesman so far… like grant, what I really appreciate about using Flash/Actionscript as an introductory point is the immediate visual/audial feedback you get from it… i know in my [10 ?”hello world!”] days, PLAY was one of the keywords that got me hooked early… there’s also kidwaresoftware.com where you can find some java, c# and vb stuff… but if you have a plan for teaching Flash, then by all means I think it’s the best… and you could probably open a miniblog for that :)… i’d love to see how that goes; i could probably steal some ideas from there
our software architect teaches his children in squeak http://www.squeak.org/
I would suggest a robust language like Fortran, let the kid get some historical references before getting into the new stuff.
I think that’s important to teach him a language where he can see what happens whith his code. Most languages need too much preexperience before you can e.g draw some lines or even move a drawn object around.
Flash makes this easy! I started programming with 12 on QBasic which was hell. I can’t remember what kept me on this track anyway.
Teach him Python. It is very simple language and has lots of resources for teaching non-programmers. The interactive command line make it easy to learn variables, simple print statements, creating your first functions and your first class.
Plus once you learn Pyhton, all the concepts port to other languages. But once you get hooked everything else will look boring by comparison.
The AS idea seems like a pretty good one – as Grant stated, it allows the option of coding or graphics as the draw at that point in the child’s life.
on a slightly different slant, html (although not really coding) may not be a bad step – it at least gives a very gentle intro to tags, and simple syntax. good for instant gratification too – no compiling and all.
Maybe I’m way off base here, but html seems (to me) to be kind of a ‘gateway’ language…
processing is a simplified java like language that makes it easy to write little apps that draw things and interact on screen. http://processing.org/ it’s kinda fun i think
I started actionscript at 11, it taught me allot of basics and standards.
I actually found Java easier to learn than C, C#, C++, etc! I went on from there building my own languages like JVBML.
Thanks everyone, all good suggestions (except I’m not touching Fortran!)
I showed my son Python, doing some simple calculations from the console; he thought it was cool to get results so simply.
However, I think the lack of visuals from “just” a programming language is not going to be too interesting for a kid. He had more fun playing with Photo Story 3’s music generator! 😎
What the hell is wrong with you? Teach your kids how to play sports first! Don’t let them become the geek you became 😉 just kidding
I actually started with LOGO and still recommend it to my kids, with a few hours of SPORTS too 😉 😉
My son is about 4ï½½ years old now. We do have a lot of fun of making small games and apps in flash.
We just do simple things like ‘worms’ and basic ‘shot the enemies’ games. My kid tells what he would like and then we just start by drawing a superduperhardcoresuperhero in a intergalatic hyperspeed turbocruiser (done in flash and/or Photoshop with a Wacom by my kid), soundeffects are also recorded by my son through a microphone and we then implement them in our games. It’s fun for both of us to play and learn computerskills this way.
I think instead of thinking whats the best choice for learning a programming language for kids it’s much better just to sit down with him and do something he finds interesting.
You mentioned, that he had fun playing with a music generator – what about build something like that in a visual enviroment like flash? It sounds like more fun to me than to look at some ‘real’ languages like c++ etc?
I think that in his age it’s not that important to ‘think’ language it’s more important to see what can be done quickly and that it can be visualized with sounds and lots of effects.
Or how about you. Why did you start with programming? Because it was fun, right? 🙂 What was fun? I’ll bet it was to see something on the screen that worked and that you actually build yourself. Well, it was for me. If your kids find it funny to work with programming i’m sure that he soon will be ambitious and hopeful will find his own way – and soon be a better coder that yourself.
And as Alex said. Teach your kids how to play sports first! 🙂 Nothing nice about kids in bad shape that doesn’t know how to play.
(ps. Sorry for my bad english, my spanish is even worse :o))
AS is a good choice because it’s modern and clean… but primarily because inside Flash you can see your results right away. I don’t know of anything else that lets you see stuff so quick.
I think the lego mindstorms is a pretty good product, the programming interface is much better than it used to be. Lego anything is pretty good for kids as far as I’m concerned…
Still I think there is nothing like flash for kids. Even when they aren’t programming, the design part with nested symbols/mcs/gotoAndPlay etc is a lot like programming. That and it is both visual and ‘fun’. Dog turn animations can really capture a person’s attention – in my family anyway. I always loved fooling around with the kids doing that kind of stuff : ).
PS I’m really bugging them to post some of their games – they have a pretty complete tank war one done. They are 3D nuts too (I know, how do you discourage that?), so the graphics look pretty game-like. It is very neat to watch them getting pissed off at things while programming, I can feel their pain man : ).
Who the hell suggested Fortran?? What a moron.
A long time ago, there was a language invented for this exact purpose: BASIC. I started programming at a very young age using QBasic. In hindsight, it left alot to be desired, but ignorance is bliss. It allowed me to easily draw to the screen and capture user input, so I was able to develop some really crappy games. Eventually I moved onto Pascal (which I believe, as basic, was also invented for educational purposes), which made the transition to C an easy process. Nowadays I would think that OO is a good way to start. C++ is a nightmare. Java is nice but I don’t think it would provide the instant gratification necessary.
I begrudingly endorse AS.
What about Design By Numbers? http://dbn.media.mit.edu/
Here’s the quick write up. http://dbn.media.mit.edu/whatisdbn.html
I used to use this to introduce basic programming concepts to art students and it worked extremely well. Now I would use Processing (http://www.processing.org – DBN was the project that inspired it’s creation), but for an 8 year old, this seems pretty hard to beat.
Check out Botz:
It’s a kid friendly programming environment similar to Logo, where you are programming a robot to do different things. You can program it to draw pictures, also solve simple puzzles, and even battle with other Botz. It uses simple drag and drop programming and should offer something for everyone.
why not start them with flash 4?
It’s really amazing!
I start programming very early , especially in China.
But , however, the EDUCATION in China is really very cruel .
So I gived up programming and study some foolish stuffs .
At last, I returned , now , I am already 20 years old .
I hope the kid can really enjoy programming. I don’t wanna ’em be like me .
My company just released a freeware programming language and environment for kids – we call it KPL. I was looking for places to spread the word about it and thought I’d add it to the thread here. I hope you have the time to take a look at the announcement and at KPL itself:
Any feedback you have would be very welcome.
I’m a kid who’s trying to learn to programme. I’m 13 years old now and I thought that learning C++ was the best option but I wan’t to know what is actually the best for me? Java or C, Visual Basic etc…
(Learning C++ is going well actually!)
I’m a kid who’s trying to learn programming.
I’m busy now with C++ and I’m wondering what’s best for me because I’m 13 years old. Maybe I could learn Java or C, Visual Basic etc…
(That C++ is going very well actually! but still…)
How bout Ruby? Something that seems to be missing here is the thought of teaching Objects first, before a language. I realize that the concept of compartmentalization and encapsulation may be a bit tough…but. If you can somehow mix the the concepts with widgets on screen, I think the learning process will go a lot further. Anyway, I think Ruby’s syntax and structure (and the fact that its a scripting engine) make it less complex than compiled languages. Python/Perl might make good choices as well, but Ruby is definitely easier to look at. You can add a graphical toolkit on top easy enough if you need the windowed output.
Another thing…it is really important to push the art of programming as a tool, that could possibly help the child at any point in their life, regardless of where their career path may take them. Obviously, the kid is going to wonder why they need to learn this stuff in the first place…be prepared for that.
My 12-year old is struggling with the straight subjects so I’ve had to lay off the CS stuff for a bit. But, every once and a while I catch him opening up a Python shell in a terminal and punching in numbers. Cool stuff.
Just my $.02.
I can recommend Gamemaker http://www.gamemaker.nl
more resources: the following triggered the spamchecker so I’ll spell it out
http://www dot freewebs dot com slash schoolgamemaker
[Thanks Tony, here’s the link:]
im a graphic designer from Australia looking to outsource action scripting for flash and also programming (php, xml, xhtml, css etc) – just wondering what your hourly rate is?
Well, if he’s only 8, I suggest Scratch- Easy programming for all ages. It helped me understand the harder stuff like Java, and Flash, even though all it is is dragging blocks together. I think it is a great way to learn…
Clov: Thanks for the suggestion. Indeed, my son is now 12 and he has been using Scratch for a few years and created some interesting games. Scratch is great for introducing programming concepts with its simple GUI.