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.

  • jet@hackertalks.com
    link
    fedilink
    English
    arrow-up
    15
    ·
    10 months ago

    Everyone else’s suggestions are great.

    Get them a copy of Factorio, it’s a game, but it’s all about computer science fundamentals, architecture, pipelining, busing, data integrity, etc. It’s a visual game, but it’ll scratch the itch of programming. It’ll get them to think.

    Buy the hardware projects, the little ones with either a pic, an Arduino, something that does something physical. A little bit of programming. To make a thing happen. So they can experiment.

    Look at the software robot competitions, there’s a couple on steam, there’s couple elsewhere, you can do it as a family project, whiteboard out the logic of what your robot will do, and you can write it together. And see how it acts.

    Just make sure anything you get, has a very small feedback loop, so they can iterate very quickly. That’ll keep them engaged and exploring. You don’t want to get a daunting project that’s going to take weeks to see any output. You want things on the order of minutes, or even seconds to see what happens

    • Szwajcer@discuss.tchncs.de
      link
      fedilink
      arrow-up
      4
      ·
      10 months ago

      Ah, haven’t thought about factorio. On that matter 7 Billion Humans is a cool game that can teach the basic logic behind programming.

    • Big P@feddit.uk
      link
      fedilink
      English
      arrow-up
      1
      ·
      10 months ago

      If you get them factorio then they’ll just play that all day instead of learning programming

    • jet@hackertalks.com
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      edit-2
      10 months ago

      Get a breadboard. Get a bunch of wire for it. And do small projects with the breadboard in a controller. It’s fun to move the wires around. You can even build a tiny 8-bit computer with a breadboard. And have a do things like output of display. It’s very tactile and hands-on. Excellent visual. There’s excellent YouTube tutorials up there for breadboard projects.

      https://www.youtube.com/channel/UCS0N5baNlQWJCUrhCEo8WlA

      This guy has some excellent breadboard projects. Find an easy one. And do it together with your child

  • adr1an@programming.dev
    link
    fedilink
    arrow-up
    11
    ·
    10 months ago

    I don’t want to undermine everyone’s suggestions but I think they are failing to understand this is a kid, buying him a laptop and stuff is okay but doesn’t motivate him to much.

    Check for authors of books for kids. Invent with python is great, that was going to be my suggestion. But same author has plenty, like this one https://turtleappstore.com/book/ … to echo someone who mentioned Minecraft (indeed, already marked a whole generation into computer science subject!). Good luck! Maybe you can even find something for you, like, how do we teach CS/ programming to kids? How come that moving the Logo turtle was alright for so many years, lol

  • Sinnerman@kbin.social
    link
    fedilink
    arrow-up
    10
    arrow-down
    1
    ·
    10 months ago

    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

  • elxeno@lemm.ee
    link
    fedilink
    arrow-up
    7
    ·
    10 months ago

    keep him safe online

    Not sure how well it works but u can try those family safe DNS servers like adguard I used the adblock ones and it’s good, but not as good as ublock or pihole.

  • OldMrFish@lemmy.one
    link
    fedilink
    arrow-up
    6
    ·
    10 months ago

    If he likes working with physical objects as well (robotics) I can’t recommend the Lego mindstorms or education series enough. The standard interface is very similar to Scratch so he’d feel right at home, but they can generally also be programmed with more traditional programming languages if using building blocks becomes too restrictive.

  • 0x0001@sh.itjust.works
    link
    fedilink
    arrow-up
    6
    ·
    10 months ago

    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.

  • 0xc0ba17@sh.itjust.works
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    10 months ago

    I can recommend PICO-8, if you have access to any windows/osx/linux computer.

    It’s a “fantasy console”, a self contained gamedev environment that emulates an 8bit retro console (while using Lua, a popular and modern language), is super user friendly, and allows you to get a satisfying and fast feedback loop when learning to code.

    There are many resources to learn it and a lively community

    • JackbyDev@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      ·
      10 months ago

      Pico 8 is super frustrating at times. I wish they’d make a program to be a “Pico 8 dev kit” that has a larger resolution so the IDE is more readable. The IDE being so hard to work with makes me want to use a proper text editor but there are downsides with that too. It could keep the game’s resolution the same and only have a larger resolution for the IDE so the specs don’t change.

      • 0xc0ba17@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        10 months ago

        I agree with the resolution, and I (almost) never use the built-in code editor.

        Most of the time I have a folder per game, with a somegame.p8 whose only code is #include main.p8.lua (+ other includes if needed), and the code itself is inside main.p8.lua. Since the code is cleanly separated from the other assets, I don’t risk overwriting one with the other while juggling between my IDE and pico8

      • 0xc0ba17@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        10 months ago

        Actually I prefer to develop in TIC-80, but the community is way smaller, and TIC-80 games can’t be played on phones without a keyboard. It’s not a 1:1 alternative, tho I’m glad it exists.

  • IonicFrog@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    5
    ·
    10 months ago

    Don’t worry about Linux, and don’t try to over complicate things. If you are set on going the Linux route, get a Raspberry Pi. It will give him something really flexible and cheap to experiment with later on.

    Look into modded Minecraft. There is a mod called Computer Craft where you can write programs in Lua. One of the things that makes scratch so good for kids is that the results are instantly visible. This is important for kids.

    https://www.curseforge.com/minecraft/mc-mods/cc-tweaked

    There are programs to control your reactor > https://www.youtube.com/watch?v=N9fC3khXuj8

    Unmodded Minecraft has Redstone where you can build logic gates.

    Outside of what you already have check into a maker space or a computer club at school. Here in Atlanta there is https://www.codeninjas.com. Maybe there is something similar in your area.

  • hperrin@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    10 months ago

    If he’s interested in 3D worlds, you could get him started with Java making Minecraft mods.

  • Tathas@programming.dev
    link
    fedilink
    arrow-up
    5
    ·
    10 months ago

    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.

  • Szwajcer@discuss.tchncs.de
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    10 months ago

    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.

  • fmstrat@lemmy.nowsci.com
    link
    fedilink
    English
    arrow-up
    5
    ·
    10 months ago

    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.

    • Alxrg@lemmy.ca
      link
      fedilink
      arrow-up
      2
      ·
      10 months ago

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

      • svetlyak40wt@fosstodon.org
        link
        fedilink
        arrow-up
        1
        ·
        10 months ago

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

        • Alxrg@lemmy.ca
          link
          fedilink
          arrow-up
          1
          ·
          10 months ago

          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.

  • purelynonfunctional@programming.dev
    link
    fedilink
    arrow-up
    4
    ·
    10 months ago

    For general Unix skills, get him a laptop and help him install a Linux distro on it. Show him a few different desktop environments, buy him a Linux magazine with a DVD and articles or projects. Then just let him try whatever he wants and promise to be there to help him fix whatever he breaks (by pointing him to docs, belong him write good forum questions, helping him revise search queries, etc.). These skills are perhaps a bit simpler to pick up but can eventually grow into scripting and programming skills.

    For programming, start with simple programming exercises or koans, and maybe give him prizes (like a quarter or a piece of candy or something) when he solves them. Let him solve lots of similar problems/puzzles over and over as he builds his confidence; rather than pushing him to harder material, just offer harder material with higher rewards. You’ll probably have to write your own exercises at first, like just translating arithmetic expressions from a notation he’s learning in school to one used by whatever programming language you’re working in together. Eventually, you can start to do online exercises together.

    Once he has been messing with this stuff for a year or two, revisit fundamentals by working through a carefully selected introductory textbook together. You can include shell scripts at this point to tie the Unix stuff and programming stuff together, and maybe use a good Linux magazine or Learn Enough Developer Tools to Be Dangerous as the ‘textbook’ for that side. Then he’ll at least know basic version control and surrounding tools.

    After you’ve gone through a chunk of those basics together— full mastery is not required— sign up for an introductory programming class together at the local community college. Taking it together, you can make sure he’s keeping up with the material, encourage him to ask questions, and help him with homework if necessary. If you want, you can also do this with networking or systems administration.

    This is based on some things that my dad did with me, including a couple of community college classes we took together. (Idr exactly how old I was during those classes, but I think it was before I started high school.)