this post was submitted on 04 Sep 2023
97 points (97.1% liked)

Programming

17513 readers
274 users here now

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!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
 

I'm thinking of starting a local group for kids (8-12 yo) to learn programming using Scratch.

Do you have any pointers that I might consider?

For reference, I'm a senior developer and architect, the programming part will probably be the easiest of it all.

all 43 comments
sorted by: hot top controversial new old
[–] [email protected] 29 points 1 year ago* (last edited 1 year ago) (3 children)

I actually did this for about 5 years (5 years ago), specifically making games in Scratch. I’m wary about sharing too much personal information in a comment thread so feel free to message me if you’d like to discuss further, I’d be happy to share context that might be relevant.

Here’s a few key things I learned.

  • Get them to interaction as soon as possible. It’s better to start with a template game that is “playable” but has room for modification e.g. movement speed
  • Age is little indicator of aptitude, I saw 5 year olds speed past kids twice their age
  • Set expectations for what can be done: in scratch; in the time you have; by a single kid. They don’t necessarily know they won’t be able to make a massive 3D open world game
  • Few kids I saw were excited by programming in and of itself but plenty took to it as a means to an end. They might be way more into making a cool animation and they’ll learn how to programme an animation. You have to figure out what they want to do and then show them how to do it by programming
  • Not specific to programming but kids have lives and you have to be prepared to deal with that. They will not all come to you ready to learn, they might be dealing with any number of other things, and they won’t leave you unaffected. This can be as difficult as it is rewarding but it’s ultimately why I left working with kids. I don’t want to scare you off but I saw a lot of adults completely unprepared to be in a child’s life and you very well could be. I’d even go so far as to recommend seeing if you could get someone involved who works with children professionally. I have a lot more on this specifically but down want to pour too much cold water on you.

Edit: I forgot to add, I did this for a living, not a volunteer

[–] [email protected] 5 points 1 year ago (1 children)

Saved your comment for later reference. As for your concerns, I think I'm quite ready for that (if circumstances allow) and I'm quite sure I can manage being in a child's life. As for getting someone who works with children involved, I'm planning on that for the first 3 to 5 lessons to get some pointers. Feel free to pour more cold water if you want, this is definitely also what I'm interested in.

[–] [email protected] 4 points 1 year ago* (last edited 1 year ago) (1 children)

Firstly apologies; I wrote my previous comment in a rush - on my phone - while at work. I haven't thought about this time in my life for a while and I think I was just over excited to share my experience. I shouldn't have gone in with the warnings without knowing you or your experiences. I think want you're wanting to do is brilliant and I truly wish you the best of luck. Your desire to do something off your own back is honestly half the battle and puts you in good standing to succeed.

I will provide some context for why I leapt to concerns because I think it's important to assuage any fears I might've created. I'd appreciate if you could let me know once you've read this comment (or saved it elsewhere if you find it useful) because I'll likely want to delete it afterwards.

I spent the last two years of my time at this company working exclusively in schools and organisations for vulnerable and neuroatypical children, who were no longer attending regular schools. The particular challenges of working with these children are likely not something you'll face, at least not so acutely, and were the reason why I ultimately couldn't continue to do the job. At the time I simply wasn't strong enough to be there for kids that really needed me to be. For most children simply being there is enough, these particular children needed more than I could offer.

On reflection I think the only really important and universal message I'd want to stress on this side of things is don't force them. You might have an idea of how it will go, or what you want them to produce, or even the parts of your sessions that you think will be interesting and fun and they will have other ideas. You have to find the bits they care about, or engage with or are capable of and run with that. This is a skill to learn, both spotting what they respond to and being able to improvise around it. You're still trying teach them something and you have a destination in mind but with something like this that is extra-curricular, you have to flexible about the route you take to get there, and comfortable with idea that you might not reach it, but you can still take them on a journey.

The satisfaction of a child wanting to show you something they've made, that you've taught them how to do, is unmatched. At least I haven't found a feeling equal to it since.

A few more, less philosophical tips;

  • An fun and easy way to get some valuable intel on the kids is to have them fill out a printout on day one. I used to use a template I'd created, loosely based on Top Trumps with fields for preferred name, drawing of yourself as a superhero, what super power you would have, what would be your super weakness, and then score yourself out of 5 in a few diverse categories like creativity, friendship, kindness, quick thinking, burping. This gives you an opportunity to identify strengths and weaknesses and a handy way to remember names!
  • Kids like big numbers; if you're going to have a number variable, like a score in a game, make it massive, ten thousand points not ten
  • Be wary of violence if you're doing games, parents are not all comfortable with it, however crude or cartoony. Make innocuous subs, like water balloons instead of bombs, slingshots instead of guns. Kids will try to get away with it if you give them free-reign of design but make house rules like, "No guns because guns are in loads of games and it's boring, we're trying to do something new!" or "Minecraft is the best selling game ever and there's no guns in that" If you do do weapons make them historic like swords and bows, generally if it's in minecraft it's ok
  • If all else fails, toilet humour is always a winner. One of the most successful projects I ever had was a kid who made a fart counter, just a button that incremented a variable and readout at that said "x farts today", I left it on a laptop at the front and the kids would come up and click it when they farted

Lastly, if you want any ongoing advice feel free to come back to me here or I can give you my email address, or if you happen to be London or Cambridge (UK) based, I'd be more than happy to meet up for a coffee. I could also dig try and dig out some of my old Scratch template games and prinouts if you like although no promises I know where that stuff is. Really best of luck with this endeavour, I'm sure you'll have an absolute blast.

[–] [email protected] 2 points 1 year ago (1 children)

Thank you for your message and your concerns!

I'm sorry for your experiences, it must have been rough.

Thank you for the advice and if you're cool with sharing your email, I'll be happy to ask you for more information when the time comes! I'm not UK based but I'm planning to visit London next year or so, so we might go grab some coffee then!

[–] [email protected] 1 points 1 year ago

Happy to share loads more advice too if you want it but good luck either way!

[–] [email protected] 1 points 1 year ago

Got any good recommendations for template games that you can mod?

[–] [email protected] 20 points 1 year ago* (last edited 1 year ago)

The whole scratch thing is extremely well put together and is easy to teach. Small chunks, fast results, forgiving environment. It gets kids thinking programmatically without even trying and for those that take to it, it is trivial to say “here are some code words, write this in code”

The only challenges are differences in ability which in a mixed class of 8-12 yo might be significant, so it would work best if you segment them into those that grasp it quickly and those that take a little longer (not necessarily age)

The hard bit with teaching kids anything in keeping them tuned in, and a segment approach can help.

[–] [email protected] 13 points 1 year ago (3 children)

Get some robots. Big marketing thing and another point of fun and learning. And the results are visible IRL.

[–] [email protected] 5 points 1 year ago (2 children)

Lego Mindstorms! We did that stuff as cub scouts, but I dont think we were the ones to program the bot.

[–] [email protected] 1 points 1 year ago

They are fun, especially with the motorized arms, but they are crazy expensive last I checked. There are cheaper options, for Arduino and microbit. But even those are not cheap. They run at at least $30, without the microbit or arduino, for a couple of motors, IR and ultrasonic sensor.

[–] [email protected] 1 points 1 year ago

In Poland there are quite popular Proton bots. You probably can find them across Europe.

[–] [email protected] 4 points 1 year ago

Yeah, those aren't cheap at all. I would have to find someone else to pay for it.

[–] orrefailaT 1 points 1 year ago

Makey Makey is another fun bit of hardware for kids. Works great with scratch too, have them make their own scratch game then use makey makey to build their own controller

[–] [email protected] 9 points 1 year ago (1 children)

Scratch is great but make sure to let them know that they can see the actual code that runs underneath the drag-drop UI.

I can also recommend hourofcode.com where there are a ton of good tutorials ranging from scratch-level coding in a game setup (e.g. minecraft) to actual coding in python.

[–] [email protected] 2 points 1 year ago

Thanks, I'll check it out!

[–] learnbyexample 6 points 1 year ago (1 children)
[–] [email protected] 2 points 1 year ago
[–] russmatney 5 points 1 year ago (2 children)

This was a cool talk on teaching programming gradually (with a lang called hedy) at last year’s strangeloop: https://youtu.be/fmF7HpU_-9k - might be some useful takeaways for you in there

[–] [email protected] 1 points 1 year ago
[–] [email protected] 1 points 1 year ago

Here is an alternative Piped link(s): https://piped.video/fmF7HpU_-9k

Piped is a privacy-respecting open-source alternative frontend to YouTube.

I'm open-source, check me out at GitHub.

[–] [email protected] 5 points 1 year ago (1 children)

There's a minecraft mod called ComputerCraft Edu which is lovely and works on older versions of Minecraft if you're willing to set that up!

When they "get" it, it also has Lua in addition the the graphical scratch nodes

[–] [email protected] 2 points 1 year ago

Sound interesting for some later lessons, thanks!

[–] [email protected] 4 points 1 year ago* (last edited 1 year ago) (1 children)

When I was a kid Lego mindstorm was the shit but I don't know if Lego even sells that anymore. But my advice is find some robot kit with a building block scripting language.

Alternatively download unreal engine 4, learn how to use blueprints and show them how to make simple games, as that is another "building block" scripting language.

Edit: oh, not "from scratch", "using Scratch" haha oops. My bad.

[–] [email protected] 2 points 1 year ago

No problem! I'd actually love to teach them using Mindstorms or something like that, but damn that's expensive. Especially because I'd need to buy more than one.

[–] [email protected] 3 points 1 year ago (1 children)

Try https://code.org. It's free and really well done with a low barrier of entry. There are different types of tasks for various ages.

[–] [email protected] 1 points 1 year ago

Thanks! Will check it out.

[–] mrkite 3 points 1 year ago (1 children)

I know John Carmack got his kids an Apple II and taught them BASIC.

[–] [email protected] 2 points 1 year ago

Exactly why I still have and maintain my Apple IIe and old consoles. Both as nostalgia bait for myself but also as a way for my future kids to understand where we started. I don’t expect them to care, but I know I can trust toddlers with the games and programs and technology from the 80s and 90s without having to deal with parental controls or internet privacy concerns. This old tech can be valuable in both education and safe, fun entertainment until kids can learn to think critically about what they’re doing.

[–] [email protected] 3 points 1 year ago (1 children)

I've used scratch to introduce kids (6~10) to programming. It works quite well IMO. They had a laptop with windows. I recommend a touch screen if possible, especially for younger kids. Though at 8~12yo that should not be as much of an issue.

I used it with the microbit from the BBC. While not required, a dedicated piece of hardware makes it much more interactive and fun, for a basic introduction. Basically, the microbit can be turned into a remote control for your characters in scratch for example.

Though, kids get fond of the ability to create pre-programmed scenes. That are not very logic intensive, more like an animated movie. And since they can add their own drawings and voice, they can get very engaged on this sole basis. So the microbit is not required at all.

Though if you want to use it, Microsoft has its own scratch for microbit that is more annoying to use IMO (you need to flash the program every time, which is not easy for younger kids that have trouble with the mouse), but it unlocks all the capabilities of the microbit for even more interactive applications. You can make them communicates through a basic protocol over 2.4GHz radio, control led strips or even robots for example (though the robots are far from cheap for what they are 😕).

Both scratch and makecode (the links mentioned above) have plenty of resources if you want to get a lab going. Personally, I would set my expectation fairly low and plan for many additional small features that kids that are really interested could implement on their own. In my experience, some kids will not be interested at all, not until they see a feature they want to interact with at least. Others will try to see what they can do by themselves, before the lab even begin. But usually, the older they get, the less likely they are to experiment by themselves and they'd rather wait for instructions. Which is a shame, but that's how it is I guess.

Also, try to make sure they can continue their work from home. Scratch is available on many platforms (though makecode sucks on Android last time I checked) and is trivial to get up and running. That said, importing a project is another matter for kids barely familiar with computers, which is why I would distribute a document aimed at their parent to get them set up.

[–] [email protected] 2 points 1 year ago

Thanks, it's all interesting!

[–] [email protected] 3 points 1 year ago* (last edited 1 year ago) (2 children)

I genuinely don't know if scratch is the right choice or a simple text based language would be better, especially for the older kids. Just from my personal experience, I started programming in BASIC at 12 and don't think I would have had as much fun and continued programming if i had used scratch instead.

[–] [email protected] 5 points 1 year ago

Well yea, I was 9 when I started programming in Batch, but it is not really suited for every kid. Most kids aren't nerds. Some may have problem reading and formatting code correctly, let alone understanding anything not seen before. Scratch mostly takes care of that.

[–] [email protected] 3 points 1 year ago (1 children)

It's meant for absolute beginners and while there are quite a few talented people, you can't really expect 12yo kids in general to understand and, more importantly, enjoy writing BASIC.

[–] [email protected] 1 points 1 year ago

I would use python instead of BASIC, if it was me. I also started with BASIC as a kid, but I remember each step up language wise (BASIC -> Pascal -> C) being a big satisfaction of "hey, it seems like this language is a lot better and I can do more with it." I would echo the recommendation to use actual code though. Language is pretty deeply hard-wired into human beings, and I suspect that the kids that will do well with breaking tasks down into scratch primitives would do equally well with python, and the kids who find python "too hard" or something would also not be able to do too much with scratch. Maybe I am wrong, but that's my guess.

My only other thought is to have some kind of graphical / game you can play / real world robotics angle to it. Maybe there's a little graphical ecosystem pre-provided, and they can write agents that can interact within the ecosystem and then see a visual representation of what everyone's agents are doing. I would definitely recommend to have a bunch of code that they can read, though; that was where my programming as a kid took a big step forward, was when I got a big disk filled with programs I could analyze and break down.

[–] [email protected] 3 points 1 year ago (1 children)

Coder dojo have lots of age suitable things to get groups like that started. It's focused on scratch to get going but moves into other things as they progress.

I taught at our local one for a while and it was great having lessons all planned out for you based on age and experience.

https://coderdojo.com/en/

[–] [email protected] 2 points 1 year ago

Thanks, will definitely check it out!

[–] [email protected] 2 points 1 year ago

Might look at things like Adafruit's Circuit Playground (BLE or Express). They can be used with MakeCode, which is similar to Scratch, and have fun I/Os.

[–] dracs 1 points 1 year ago (1 children)

There's a bunch of great programming games available on Steam. A lot of them start pretty basic, so might be useful for teaching the basics and driving interest.

[–] [email protected] 2 points 1 year ago (1 children)

Any examples? The only one I know of is the Rabbids one.

[–] dracs 4 points 1 year ago (1 children)

7 Billion Humans and Human Resources Machine (same developer) are probably the most kid friendly ones I've played. TIS-100 I found quite fun, but it's assembly like programming which might be a hard starting point for kids. Zachtronics also make some good games, but the ones I've played are more programming games masquerading as something else E.g. chemistry with SpaceChem.

[–] [email protected] 1 points 1 year ago

I played the first two you mentioned, definitely not kids friendly. The bonus level with prime numbers was something else.

I'll check the other ones.