Ask HN: Programming and Shaping Minds?
Forgive me if this topic has been covered before. I have a friend with a young kid (age 8) who has a fascination with computers (daddy uses OS X, mommy uses Windows).
Because I'm a friend and developer, this young kid's mom has asked me if I could recommend some programming curriculum for her child. I haven't really thought about this much but it seems like a great opportunity to get a hacker started at a good young age.
I was hopping some fellow HN fans could recommend a curriculum or just a path for this young kid to begin with.
So where would you start if this was your own kid, who has a predilection for computers (nothing forced here, the kid genuinely wants to learn)?
24 comments
[ 2.9 ms ] story [ 62.6 ms ] threadFor boys, I'd probably start with games. Maybe Python and PyGame? I've heard pretty good things about it. JavaScript makes a good first language as well, since all you need is a web browser to make it run.
For girls, I'd do something webby with a social component. If you could write a server, maybe set up some sort of framework where she and all her friends could send things to each other, sorta like real-time Pownce? Actually, now that I mention it, I kinda wanna try implementing this, since it could be kinda cool.
For both sexes, maybe take a look at Alice from Carnegie Mellon? http://www.alice.org/
That's what I plan to do with my kid. He's 2 years old, a little young for Python. But I have an OLPC, and I sit down with him while he pokes away at it. When the time comes, I will try not to be pushy or academic about it.
They seem to pick up on the basic math concepts pretty quick (i.e. to move the character up, I need to add something to this X variable...).
Its a lot like Squeak (I think a derivative), in that they can paint the objects they're going to animate and then visually construct programs to control them and implement their logic.
It's recommended for ages 10+, but I'm sure a bright kid with an adult helping would love it.
I think HTML, Javascript, and CSS make a great starting point. Web pages are something you can show off to your friends--I got a lot of satisfaction from showing off what I had made when I first started out,
There's tons of books and resources to learn it. More importantly it's easy. You can't get HTML stuck in a loop, but it will still provide many opportunities for the kid to learn that computers will do what he says, not what he means. And all he needs is a text editor and a browser.
But if you want to build games, also consider Game Maker.
http://en.wikipedia.org/wiki/Logo_(programming_language)
The advantage is that the kid can see immediate visual effect of the code, it is easy to understand and it can introduce more advanced concepts (functions), also it might direct curiosity towards robotics.
It is very simple and intuitive and there must be some open source version for every platform.
I would recommend,
http://www.greenteapress.com/thinkpython/thinkpython.pdf
Python got the turtle, so no need for logo.
Videos makes things easy.
http://showmedo.com/videos/python
Games are also a great motivator.
http://www.pygame.org/
When (s)he gets more advanched, older (think: upgrade path) I would recommend things like,
http://www.sagemath.org/
http://www.scipy.org/
http://www.diveintopython.org/
http://nedbatchelder.com/blog/200711/best_computer_language_...
The teaching material does not have to be all that pedagogical, but the motivation make the computer do something needs to be there.
In this day and age, I think that the absolutely best environment is to make dynamic web pages. By just outputting a few rows of text you can see a result page and imagine having it online for friends to use. One can also create dynamic pictures.
I used my knowledge of BASIC around that time to write training programs in multiplication, addition, and when English classes started, word translations. That is, I made semi-realistic solutions to problems I had, and the resulting program was used by me (and also friends once you could compete in score points).
When I was a young'un, I also had a major fascination with computers (guess it didn't wear off...) and managed to badger my mum into getting me a ZX Spectrum 128 from a car boot sale in the run up to a birthday (perhaps my 10th?). This was already old technology, then - we had a Windows 95 machine at home - but I didn't care. It was MY computer and, with the help of a few yellowed books and the first two volumes of INPUT magazine, I could make it do what I wanted!
I think that this was a very powerful introduction to programming - a good few years of PEEKing and POKEing and dipping into assembly every now and again is perhaps the most natural way to develop intuitive ideas as to how computers work and, although BASIC is frowned upon, it's always good to find out why the hard way! A lot of these ideas sound scary now, but on a small machine a kid can really go wild with them, and that freedom can be the best learning tool of them all.
And another plus with this plan - the kid gets a cool new gizmo. ;)
I did a quick overview here http://www.issackelly.com/Blog/entry/Hands_on_with_Small_Bas...