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.
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.
Hope you enjoy the instance!
Follow the wormhole through a path of communities !webdev@programming.dev
Maybe this is something for you:
https://www.microsoft.com/en-us/makecode
https://www.calliope.cc/en https://en.wikipedia.org/wiki/Calliope_mini?wprov=sfti1 https://microbit.org/ https://en.wikipedia.org/wiki/Micro_Bit?wprov=sfti1
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.
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.
I often suggest MIT App Inventor. Most kids are more comfortable with phone apps.
But this requires an android phone.
Can’t one use an emulator?
IMO set him up with some of the modern engines and tutorials… Godot 4, Unreal etc…
actually if you are looking for some stuff to have ready for him.
https://www.humblebundle.com/books/game-programming-with-c-unreal-packt-books?hmb_source=&hmb_medium=product_tile&hmb_campaign=mosaic_section_1_layout_index_2_layout_type_threes_tile_index_1_c_gameprogrammingwithcunrealpackt_bookbundle
If he has access to youtube there’s also lots of really good tutorials etc… out there. Heartbeast has some awesome ones for godot etc…
Ground him into a room until he learns to make a game with only assembly, give him a Tandy to figure it out
One suggestion I haven’t seen, get him a super-cheap laptop with Linux. The exposure to a new environment beyond his phone (and likely Chromebook) will help him get more comfortable with things outside the norm.
It will help him discover if he likes to “make things” or “figure things out” which are very different activities that both directly corrolate with programming.
+1 for Linux but use your MacBook Air. There are Educational Linux versions that would be a great environment for your kid to learn to code. It can also be set up with kid safeguards.
You can also run Linux from a Usb if you’d rather not install it over MacOS
I recently put Linux (Mint) on my old 2015 MacBook Air and it’s been really great.
@Alxrg @fmstrat oh, I’ve installed Ubuntu on Macbook but had many troubles with the keyboard.
Probably some of these problems are originated from the StumpWM – a tiling window manager written in #commonlisp
Not all problems are solved yet. For example, a key near the left shift should produce ` and ~, but it outputs < and > instead. I don’t know how to remap it.
For OP’s question (just to stay on topic before we veer off), would you still recommend a Linux distribution on their MacBook Air?
Edubuntu seemed like a good choice to reuse their existing hardware and have a safe environment. There’s lots more choices to choose from
I’m only casually using my Linux MacBook but haven’t had any troubles with the keyboard.
Although a nice tiling window manager sounds like fun. I’ll have to look into it.
Make Code Arcade is a great next step if your child has completed the Scratch tutorials.
MakeCode allows building with
BlockCode
, but also supports toggling toPython
orJavaScript
.Scratch and Make Code Arcade are both free.
For the Christmas present, get them a [MeowBithttps://www.microcenter.com/product/668481/kittenbot-meowbit-card-sized-retro-game-computer-codable-console) - a $50.00 hand held game system that plays the games they write using MakeCode Arcade.
The full Harvard CS50 course is available on YouTube: https://youtu.be/8mAITcNt710?si=rTa1zOkY2REnlXDe
This is the course all programmers have to take before they get to take the real programming course. The purpose is to introduce programming concepts in a way that essentially anyone who is interested will be able to understand. The instructor is fantastic.
Not exactly geared towards 8yo but if you have the time and inclination, you could go through some of these videos to see how the topics are presented and then try to introduce those topics yourself to your child. Or at least look for resources that introduce them like the comment above talking about scratch.
Or better yet, maybe you both do these lectures together and learn the fundamentals of programming without getting bogged down in a specific language or with specific syntax. I’d bet that will become a core memory for any child.
I’m going to go a slightly different direction and suggest something that has physical feedback like Adafruit’s CircuitPlayground. It can be setup to use MakeCode, CircuitPython, or Arduino and there’s a lot of good resources, both for purchase, and free: https://www.adafruit.com/category/965
You could get a cheap Android phone or tablet and install MacroDroid or Automate. They allow making simple programs from building blocks. Like “If notification is ckicked display message”. … but there’s the risk this somehow leads to wanting to use the internet/wifi.
Unfortunately Lego Mindstorms have been discontinued AFAIK. It were components to build a robot that could be programmed from a PC. That would have been cool. I think one of the programming softwares was also for Mac. Maybe you can get it second hand?
This was a while back, but my cousin learned to program using Codecademy. These were self-paced courses using web interfaces, which was nice because they didn’t have to install anything, they just used a web browser.
It looks like codecademy has a game development path: https://www.codecademy.com/catalog/subject/game-development
Their python chatbot course looks fun too: https://www.codecademy.com/learn/paths/build-chatbots-with-python
Try a more advanced node based programming language that aligns more with a specific language. Something like NodeRed for Java…
…or maybe he’s ready to try game development on something like Godot, which has a language a lot like python.
Python is apparently a good first language to learn.
Get him a $390 Linux laptop and teach him python
Oddly specific
When I started out at about 14 I found a few programming books that really helped at my local library. It’s really tough to keep motivated as a kid, but if you give him tools and help him find joy in the process he’ll push himself to the finish line.
Good on you for supporting your kid, my parents told me to get off the computer and go outside every time they “caught” me programming.
I believe you’d be able to load up Swift Playgrounds on that now as a “here’s a place to start” - https://www.apple.com/swift/playgrounds/ - it is a very safe place to start.
In general, I’m gonna ask “why?” for loading up a Linux distribution on a Mac unless there is specific software that you’re after that only runs on Linux. For the most part, launch a terminal and you’re getting 90% of what the Linux experience has to offer (Mac OSX is a unix certified operating system).
I’d look also for games that are programming under the covers or related. Factorio (circuits) and Minecraft (red stone logic) are two that come to mind first.
Shenzen I/O (and the rest of Zachtronics) along with Human Resource Machine and 7 Billion Humans might be a bit more, but also something he could “grow into”.
I would suggest staying as far away from Roblox as possible.