Hi all,
My 8 year old is asking if he can learn how to program. He has asked specifically if I could set him up with a ‘programming kit with lessons’ for a Christmas present. I’d like to support this, and it seems like it’s not a transient interest as he’s been all over scratch, and using things like minecraft commands for the last year. I have an old (pre 2017) MacBook Air I can set up for this. How do I / what would you advise I set up for him, to a) keep him safe online (he’s 8!) and b) give him the tools he needs in a structured way.
I am not a programmer. I know enough bash/shell and basic unix stuff to be dangerous and I was a front end dev a very long time ago, but I wouldn’t call myself a programmer and don’t know what concepts he needs to learn first.
Hugely appreciate any advice, thanks.
Edit: So I posted this then had a busy family day and came back to so many comments! I will methodically go through these all, thanks so much.
A couple of things on resources: he has expressed interest in 3D worlds and I noticed comments on engines, but wonder if that’s too advanced?
Totally agree with the short feedback loop rather than projects that take days.
He has an iPad 6 and I’m happy to pop a Linux distro on the Air, so certainly open to that.
So many links to research. Hugely grateful.
In terms of keeping him safe online look into some content filtering for the whole home network, either paid or self-hosted.
Projects that act upon physical stuff are the most rewarding. Something simple such as building a simple Python script that interacts with a smart home API and turns switches on/off or changes light colors around the house are relatively simple and require no hardware/mechanics if you’re not into robotics, soldering or circuit boards.
You’ve got a great kid :)
I love this. https://www.youtube.com/c/beneater ben eater does a lot of hardware stuff that may be of interest in this area.
I know that there’s some pretty advanced lego stuff which is a great entry point as well.
Writing a program in assembly for 6502 processor might be a little bit too far from scratch for an 8 year old
HAHA yes of course of course. But it’s not out of the realm of possibility if they show an interest in it. Ben does some really simple projects that an 8 yr old could tackle to get some real fundamental understanding of what’s going on under the hood.
Google Scratch! Could be a good way to get started.
OP says the kid has been “all over scratch” so we can assume they need something more
Shit. My reading sucks.
Small Basic is about equivalent to Scratch in terms of what you can do, but you have to actually write the code. It reinforces various coding principles in a more explicit way than Scratch.
The website has a printable curriculum that looks reasonable.
I think it’s an excellent stepping stone.
Do you have a linux machine at home? My 12 year old daughter is also wanting to learn to program and I’ve been updating the NakedMUD codebase to work with Python 3. It has been working for a while now but I’m still tweaking some stuff within the codebase before turning her loose on it. When it’s ready I’ll probably throw the modified code up on a server somewhere.
If you’re not familiar with MUDs they’re online text-based game servers (Everquest was basically a graphical version of one, supposedly even using code stolen from the most popular at the time). NakedMUD has a core written in C but the game engine itself is extensible with Python (and Python changes can be initialized without rebooting the server) and the world/NPC handling code is also extensible with Python. Users can dabble around with making changes to the Python scripts and then see the results real time, and in a gaming environment. To me it seemed like the ideal way for my daughter to learn programming in a way that will likely keep her interest.
MUDding taught me programming and Regex in a very real and useful way.
It also contributed to a gaming addiction that took years to break, so food for thought I guess.
A couple of things on resources: he has expressed interest in 3D worlds and I noticed comments on engines, but wonder if that’s too advanced?
I most certainly wouldn’t start out programming with / in 3d worlds.
Drawing 2D shapes seems like a good way to spark interest though, with immediate visual feedback.
I’m not sure if it’s good for your case, but I learned programming in Garry’s Mod - specifically the Expression 2 chip from the Wiremod addon. It uses C-like code either running on I/O triggers or in an infinite loop, and can interact with Wiremod’s other components or the game world itself.
I see a lot of good advice, so I’m going to suggest something different. Have your son watch this guy or someone like him do some stuff.
https://youtube.com/@SebastianLague
He just picks something that interests him and builds on top of that interest.
My kids (8 and 11) don’t even have any interest in doing programming at the moment, and they like watching him build stuff. We watched the Geographical Adventures playlist twice.
Alice is a pretty good 3D programming environment aimed at kids, with little programming blocks to snap together.
You might want to try going back into the archives and pulling out something like MS-DOS and QBasic, or Logo. You can find a good tutorial in book form, and you can get a system that was designed to be programmed offline, with things like local help in the editor instead of behind a Google search, so it should be 100% safe to leave the kid alone with the machine.
I’ve had good luck with edubuntu with my nephews and nieces. https://www.edubuntu.org/
deleted by creator
a linux web server on an old PC https://www.linuxbabe.com/ubuntu/install-lamp-stack-ubuntu-20-04-server-desktop , a tutorial https://www.w3schools.com/ , and a text editor https://notepad-plus-plus.org/ is all you need to get started.
There’s Colobot, an old game with a C++ based language where you control bots through scripts.
Ground him into a room until he learns to make a game with only assembly, give him a Tandy to figure it out
Well, Scratch is certainly a good starting point so I would assume he wants more if he’s been all over it.
There are some toys and kits available but I am not really aware if they are any good.
If my little brother would make such a request I probably would want to go with Python and an Arduino project. Robots are cool so it would pique his curiosity while basics with Arduino should be challenging but manageable. The only drawback is that it probably would require some time investment on your side.
A cheaper alternative would be directing him towards writing some simple programs in Python or Java as the only setup this would require is an IDE and it would also teach him googling for information.
I think the safety online is the biggest problem here and the only thing I can think of is to only allow some domains…
Maybe some of these suggestions sound good to you, if so I’ll gladly expand on them.
Also big kudos to your approach on the matter.
There’s a lot out there for Arduino which is a great platform for learning. Arduino is a microcontroller you can use to read button inputs and control LEDs, all the way up to controlling robots and all sorts of things. It’s pretty hands on compared to a lot of pure software stuff and is often sold in starter kits for kids learning. Worth looking into!