My little girl wants to learn programming but she is still a little young. What would be the best approach to teaching programming to a 7 year old that still lacks a lot basic skills?
I've heard a lot of folks talk about Alice from CM, but I found it kind of funny.
I think when it comes out, Microsoft's Boku may be a good start. LittleBigPlanet is simply an overgrown level editor compared to it. Maybe something like Batie, as it translates it to C#.
This is a really tough question. When I was studying in school we had computers as a subject. we started with basic concept of input/output devices and so on. and then we started with basic programming using LOGO. It was fun playing with it and also a good learning. Maybe you can start with that. This is going to be a trial and error coz you never know what interest your kid will develop. My advice is be patient and go slow. Good Luck. Please post your experiences as well as time goes.
Skills are not important. Long term interest is :)
A good way might to let her watch you work on programs, watch how you play with them, change them, make them do different things, and start to explain how to make them work when she asks. If she's curious how you did it, the chances are that she'll pick up basic skills pretty quickly.
Check out Small Basic from Microsoft. A really simple IDE and the language only has 15 keywords I think - it's made with kids in mind. http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx
Also check out this article on Wired's How To wiki, which has a wealth of information: http://howto.wired.com/wiki/Teach_a_Kid_to_Program
This is about computer science. Computer Science Unplugged is a set of school level teaching resources about computer science and programming.
I am going to have to go with what a lot of us learned on as little kids...
Squeak is a smalltalk environment well suited for learning. Squeak is included on the "one laptop per child". See this video with Alan Kay showing how squeak can be used for teaching both science and programming. (Squeak appear at approx 12:20). This will also teach object orientation. More resources here - EToys is a sort of grownup version of Logo, a teaching tool that lets you graphically build block structured pprograms and animate the results on screen.
Simply put, don't.
She is still very young and really should be spending a lot more time building up far more important skills. No 7 year old should spend endless hours on a computer writing software, despite what they want to do. When I was 7 I wanted to be a wrestler, when my girlfriend was young she wanted to be a plumber because that's what her Dad does.
I really do not see why parents choose to make their kids programmers, just because that's what they've chosen to do with their lives. What's wrong with kids just being kids until they can make an unbiased opinion on what they want to do with their free time?
Let her make friends, go out for food and birthday parties with her friends, go to boys houses and whatever else girls do. She's still very impressionable, and she'll obviously want to do what you do. Your task is to let her decide and not sugar-coat your job by giving her a toy IDE to play with.
The worst thing you could do to a 7 year old girl is alienate her from every one else she knows by getting her into something you enjoy. This'll most likely be an unpopular answer, but it'll be the same answer I'll be using on every other "how can I get my kid to be a programmer" article, so at least it'll be easy for me to find on my answers list.
I also believe that it might not be the best idea. But simply denying it is also not a good solution. That will only make her want to do it even more, which she most likely will in secret. In the end this would only give you both painful times.
You must be careful. The Big Bad Thing that could happen is that this alienates her from her friends because she is spending to much time at the computer and not enough developing her social skills (which, I hope you agree, are way more important than computer skills).
I'm no expert in these things (hell, I don't even have kids of my own yet), but I think that limiting her time at the computer and making programming to be something "special" is the way to go. Also, keep watching how interested she is in it. If it gets boring, don't push it. Let her do it on her own terms, so it stays fun. But remember that there are limits to computer usage per day. This actually applies to computer games, web browsing, etc. Programming is not the only way how a computer can become an addition all too fast.
And lastly - I would adivse to consult a child psyhologist or something about this. A specialist, in other words.
That said, I'd recommend QuickBasic, because that's what I grew up on myself. But there probably are more appropriate (simpler) languages that I don't know about.
This came up on Slashdot recently. A few posters suggested HTML + Javascript and I'm inclined to agree. It's a real language, but more importantly, she will become the kid who can do cool stuff with MySpace / Bebo / whatever, rather than a social outcast.