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.

  • Szwajcer@discuss.tchncs.de
    link
    fedilink
    arrow-up
    16
    ·
    edit-2
    1 year 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.

  • IAm_A_Complete_Idiot@sh.itjust.works
    link
    fedilink
    arrow-up
    16
    ·
    edit-2
    1 year ago

    See if you can find a book on python, and work through it a bit. Sit down with him once you know some and try making something basic with turtle or the likes. Your goal is to keep his interest up and not make it a “studying” thing. For a kid the most important part is that he needs to be able to see results of what he’s making. Drawing simple shapes, cool patterns, etc. in python is a nice way to start and it can teach all the basic initial things he needs to know.

    There’s also simple robot kits for kids that could be fun to play with, which he could eventually move on to basic electronics to after from.

    W.r.t. safe browsing, I’d try blocking egregiously bad stuff with some DNS blocker that you either buy or host using something like pihole. Use it to block ads and well known “bad” domain names. Also have a conversation about it. (I’m not sure how much this helps here considering he’s 8… but better then nothing.)

  • Wet@lemmy.world
    link
    fedilink
    arrow-up
    14
    ·
    1 year ago

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

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

        Writing a program in assembly for 6502 processor might be a little bit too far from scratch for an 8 year old

        • MonkCanatella@sh.itjust.works
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          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.

  • adr1an@programming.dev
    link
    fedilink
    arrow-up
    10
    ·
    1 year 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

  • MajorHavoc@lemmy.world
    link
    fedilink
    arrow-up
    9
    ·
    1 year ago

    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 to Python or JavaScript.

    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.

    • Lem453@lemmy.ca
      link
      fedilink
      arrow-up
      4
      ·
      edit-2
      1 year ago

      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.

  • psycho_driver@lemmy.world
    link
    fedilink
    arrow-up
    7
    ·
    1 year ago

    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.

    • Nate Cox@programming.dev
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      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.

  • CosmicTurtle@lemmy.world
    link
    fedilink
    English
    arrow-up
    7
    ·
    1 year ago

    I often suggest MIT App Inventor. Most kids are more comfortable with phone apps.

    But this requires an android phone.

  • 56!@lemmy.ml
    link
    fedilink
    arrow-up
    7
    ·
    1 year ago

    I learned programming at about 12, by following tutorials for the Pygame python library. It doesn’t do anything especially fancy, but it taught me many concepts, while I had a lot of fun. My first project was making the traditional snake game, which I think is a good level of complexity.

  • Sinnerman@kbin.social
    link
    fedilink
    arrow-up
    7
    arrow-down
    1
    ·
    1 year 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

  • 0xc0ba17@sh.itjust.works
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    1 year 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
      ·
      1 year 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
        ·
        1 year 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
        ·
        1 year 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.