HACKER Q&A
📣 mavsman

Programming curriculum for a 10 year old


I'm a professional software engineer and I'm mentoring a 10 year old kid (Big Brother Big Sister).

I'd like to teach him some programming but I don't know the first place to start. I want to be careful that I'm not aimlessly pecking through scripts with him and wasting his time on a screen (he plays enough video games already). If it were my kid I'd be a lot more laid back in my preparation for teaching but I don't think I have that luxury since with this kid since we aren't together constantly.

I want to give him a taste of what programming is like. Any advice or curriculums you've used would be hugely helpful.


  👤 AnimalMuppet Accepted Answer ✓
I'd start with what he wants to do. Is there anything he wants to do that a computer can do? Can you make that a project for him?

Then, given the project that he actually wants to do, what does he need to know to be able to do it?

See, at 10 years old, you're trying to whet his appetite. You're not trying to give him skills that will turn into a professional career - he's not ready for that. So give him something where the learning will pay him back in terms of being able to do something that he wants to do. That whets the appetite better than teaching him something that, at the end, he's learned something that he doesn't care about.


👤 WheelsAtLarge
The most important part of learning to program for a beginner is to master the logic and the general tools you get in a language to implement your ideas. Some people can get it right away others take a bit more but if you try to force the logic and the intricacies of a language like C++ at the same time then it becomes a more difficult task than it needs to be and it's a recipe for giving up because it's too hard.

I suggest you teach a language like Scratch. The ideal way to do it is to agree on a project that the 10 year old and you agree on and set a plan to get there. Working towards a goal gives you both a goal to work towards and a reason to continue forward. The project doesn't have to be unique but you both need to agree on it and develop a road map to get there. You should also set a deadline.

Once you finish the project you can move on towards a different language and more advanced subjects but always using projects to help you move forward.


👤 sn9
The Little Schemer, The Seasoned Schemer, How to Design Programs, Realm of Racket, etc.

Not programming but perhaps even more invaluable: Learning How to Learn on Coursera. Also, Khan Academy.


👤 ThrowawayR2
You could try educational games:

Human Resource Machine covers processor level programming in a fun and quirky way and should be understandable by a 10 year old: https://tomorrowcorporation.com/humanresourcemachine

Screeps allows players to program little avatars in Javascript to do things in a virtual world: https://screeps.com/ If you search through the HN archives, it's been discussed before. Though it's nominally a MMO, buying just the base game allows playing in sandbox mode offline.


👤 topmonk
If he likes board games, you might want to try Tabletop Simulator and writing some simple scripting for games that he invents. (It uses lua)

It's the fastest environment to go from zero to ”something cool” that I know about. And using the steam workshop, there are literally tens of thousands of games and projects with various different types of game pieces, scripted dice, etc. already created there.

Also quite cheap at around $20. And right now, half off. https://steamcommunity.com/app/286160


👤 __d
Scratch (https://scratch.mit.edu) is an ok introduction to thinking like a programmer, although it might be a little too simple for a 10yo gamer ...

I'm finding the leap from Scratch to Python + PyGame is kinda challenging for my 8yo, but he's getting there with some hand-holding.


👤 danbolt
I'm not 100% sure what a good learning curve would be, but I could imagine since he likes video games, making some simple stuff would blend over well.

I'm curious if anyone else here could suggest something similar to PyGame, since it doesn't require a lot of technical knowledge compared to languages like Java or C++.