Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Programming and Shaping Minds?
15 points by donniefitz2 on May 3, 2009 | hide | past | favorite | 24 comments
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)?



Check out LEGO Mindstorms, it's basically LEGO with motors that you program. I think something physical attached to the (abstract) programs would be a great way to start.

It's recommended for ages 10+, but I'm sure a bright kid with an adult helping would love it.


Check out Not Quite C (NQC). It lets you write actual code to run on the Mindstorms platform. (This was my first experience coding.) http://bricxcc.sourceforge.net/nqc/


agreed. NQC is better than the various forms of BASIC that I and many of my friends learned calculator and basic robotics programming on.


Well, personally I always had a fascination with software but not (yet) with hardware. Mindstorms sounds a bit like hardware... so I don't think it would have necessarily worked for me. YMMV.


I've had good luck with Scratch from MIT in teaching my children. http://scratch.mit.edu/

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.


First thing, don't underestimate kids' ability to learn new things, it is important to keep them challenged.

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/


Eight seems a little young, I think most start in their early teenage years. My own experience was to start with HTML and Javascript, and from there I moved on to Perl, C and the like.

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.


I completely disagree. I started programming in BASIC when I was eight. From the first lesson on, I was always after my parents to give me more - a computer, programming books, etc. If the kid is truly into it, all you will have to do is get him started with a real programming language. His natural desire will (hopefully) take over from there. Baby steps, by starting out with a markup language may also work, but it won't necessarily be better.


I couldn't disagree more. It's better to have a simple, consistent, and easy to read language such as Python.

But if you want to build games, also consider Game Maker.


That's a great point. I learned with HTML, CSS, and JS too. The instant gratification was enough to make me want to learn more and once I saw the limitations of "static" content, I moved to server-side technologies.


If money isn't particularly tight, or if the family already has a licensed copy, Flash and ActionScript make a particularly good start. Like Logo, the kid can make things happen nearly immediately, but since ActionScript has a syntax that is similar to "real" languages in common use, the habits gained are more directly transferable to other projects later on. I'll refer you to Ned Batchelder's site for a better argument:

http://nedbatchelder.com/blog/200711/best_computer_language_...


Logo and Turtle-graphics might still be the best way to get started:

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'm going to go against the grain a bit here and recommend that the parents try to pick up an old 8-bit micro for the kid.

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. ;)


At that age I had started programming BASIC on my C64 a year earlier, copying the examples from a book targeted at adults and written in a language I did not know (english). [Only slightly bragging, but here is what i want to say:]

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).


Boy or girl? I think the assumption is going to be "boy" unless you specify otherwise, but I'd recommend different things for different sexes...

For 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/


For clarification: the kid is a boy. I would like for him to learn from the bottom-up (start at the beginning and work up from there). I will play a big role in his learning (scary, but I am a developer so I feel sort of qualified).


I think enthusiasm is more important than structure and curriculum both for 8 and 80 year-olds. Just plant the seed - if he takes an interest, he'll start learning on his own. When he comes up with interesting questions, you can start filling in the background he lacks.

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.


A nice simple language like Python would be best, and no, 8 is not too young, especially if the kid shows interest. The kid should be given lots of sample code, and encouraged to modify/extend it. I think there's plenty of substance in text-based programming to hold his/her interest, but one of the robot programming toolkits could be used to help keep the kid motivated.


I'd recommend Invent Your Own Computer Games with Python (http://pythonbook.coffeeghost.net/book1/index.html). It's free online, and it geared towards exactly that kind of age and setting. It's written for a beginner at programming, and most kids would probably love writing their own games.


Microsoft put out Small Basic a little while ago. It's actually a lot of fun, and really simple (well... for me... the kid would be the real test) to pick up.

I did a quick overview here http://www.issackelly.com/Blog/entry/Hands_on_with_Small_Bas...



I think the kid need would know a bit more math first (than a typical 8 year old would) and then move to something like http://pine.fm/LearnToProgram/


These are all great suggestions and I'm seriously looking each of them over. Thanks to the HN community.


javascript. Everyone has a text editor and browser. Plus young kids can use it to screw around in school.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: