I heard about <a href="http://www.alice.org" rel="nofollow">http://www.alice.org</a> as being good for kids.<p><a href="http://scratch.mit.edu/" rel="nofollow">http://scratch.mit.edu/</a> is good too, I tried it and it seems to have the basics you need to learn as a kid, you can even use it just like LOGO to draw.<p>Scratch uses blocks which you can drag and drop to construct your program, some of the blocks are: if, repeat, forever.<p>You also have blocks for commands, mainly visual ones, moveto, turn, pen up/down (to draw).
Alice [<a href="http://www.alice.org/" rel="nofollow">http://www.alice.org/</a>] is sophisticated, object oriented, easy to use, and fun. It would probably be my first choice.<p>Microsoft Kid's Corner [<a href="http://msdn.microsoft.com/en-us/beginner/bb308754.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/beginner/bb308754.aspx</a>] provides a structured introduction to a lot of topics.<p>HTML + CSS would also be a great place to start because it is so highly interactive and is such a useful skill set to have.
I'd start him out with an interpreted language like Python and then maybe move towards Pygame. Zgame is also quite good and is available on Windows, that would give him a framework to develop working programs without getting lost in reinventing the wheel.<p>Over the long term I'd say work towards the tablet environment because that's where the action is going to be, but I don't know how friendly/accessible/affordable the iOS development tools are for Windows, or what the 'Hello world' stage is like. If it's great, then by all means start there. A pet hate of mine are tutorials that start out with the basics of variables, loops, and so on, and then dump the would-be programmer into the deep end bereft of any actual algorithms or structural guidance. It's like showing someone how to hammer nails and use a saw on day one, and then expecting them to build a house on day two. That's why I suggest Python as an alternative, because there's lots of high-quality educational material to get going with.<p>If the kid is somewhat computer-savvy already and doesn't need much hand-holding, maybe you could let him loose with the Google coding tools as an alternative - lots of good stuff on there for everyone from the casual to the committed programmer, and while it won't perform as well as native iOS stuff on the iPad, it won't be locked into that platform either.
I see no reason to start him with something like Alice. If he wants to learn to program he should start with Python or Ruby. I'm 14 now and have been doing some programming since I was around 10. That said, I only seriously started actually learning programming fundamentals around age 12.<p>I used Python during that time and I highly recommend Zed Shaw's Learn Python the Hard Way. The name is deceiving if you aren't familiar with it, it is definitely for beginners. Having him go through all the exercises and doing the extra credit in that book should put him in a good position to move onto using frameworks with Python or moving onto a different language.<p>Not sure how could PyGame is, but it's probably good enough to get him started in game programming if that's what he wants to do. spIrr's recommendation could be good, but personally I have no experience with that book. However, Python has some amazing resources online so that shouldn't be a problem.<p>I highly recommend staying away from iPad development as his first venture into programming, which probably won't be too hard considering he doesn't own any Apple computer.
I started by learning the basics of C++ when I was around 15 years old. It stirred my curiosity, gave me a general understanding of what programming is all about, and taught me how hard it is to build a real game (like everyone else, I wanted to make games).<p>I gave up on C++ in the end, and decided that Python is the best way to go. I do, however, thank C++ for helping me to overcome those first (difficult) steps.
I'd start with Javascript, because:<p>a) It's fairly simple.<p>b) Every computer that has a web browser has it. He would be able to run the programs with no additional software needed (including on the iPad).<p>c) You can make simple games with it (that's what I was interested in when I started programming, anyway :) ).<p>d) It's relevant.
A review of the most popular frameworks: <a href="http://www.readwriteweb.com/archives/4_tools_for_teaching_kids_to_code.php" rel="nofollow">http://www.readwriteweb.com/archives/4_tools_for_teaching_ki...</a>
I've seen <a href="http://www.alice.org/" rel="nofollow">http://www.alice.org/</a> recommended as an intro to programming for kids. I can't speak to its value personally.
He might like the games factory: <a href="http://www.clickteam.com/website/usa/" rel="nofollow">http://www.clickteam.com/website/usa/</a><p>It's not writing code but it actually teaches you a lot about objects, event handling, conditionals and you can pipe out something really cool/fun in an hour or two.<p>( my first game I made when I was 12 was a "death star run" game. I had no artistic talent, but it was still fun. )
I think you should decide what you hope to accomplish. However, on a window's machine, there is small basic: <a href="http://smallbasic.com/" rel="nofollow">http://smallbasic.com/</a><p>It's windows, it's powerful, it's simple, and it's highly visual.
Don't start him on a graphical programming environment like Alice. I started programming Pascal when I was 11, but I wouldn't recommend something so low level. I would probably recommend python or ruby.
Thanks for all the advice. Passed it along to my friend, and he just told me that they're a bit overwhelmed now (which is a good thing). Problem solved!