On the other hand, I know a lot of families and kids who love it. It's truly incredible that this free resource was created, persists, exists that's been enjoyed and used by so many kids around the world.
What's your opinion? Is Scratch a good tool for teaching coding to kids? Why or why not? What, if anything is a better approach/program?
I built a little game on Scratch for my nephews. It was starting to boarder on turning into a big mess, but it was much easier than if I would have done it in an actual game engine, and one of my nephews almost instantly jumped into the code and start tweaking variables and had a great time tweaking and changing stuff, with little or no direction from me.
I think there is a lot of value in presenting code in a way that makes kids want to use it, where it feels like a toy. It should be about exploration. “Structured learning” sounds like school, and isn’t always the best way to learn. Scratch lets them learn by doing, through experimentation. That’s how I like to learn.
At some point if the kid wants to keep going, they will need to graduate to something else, but at least at that point they should have a general idea what variables, conditionals, etc are and an understanding of basic logic. Those skills will translate to every other language.
I also recently learned that Brilliant uses block-based lessons, too, so there's obviously some there-there
I would guess that a lot of the problem is one of actualization: how does one go from solving "someone else's problems" to one of realizing their own ideas. Based on what I've seen, I'd guess that a Minecraft mod port that maps blockly down into lua would go a long way toward "do some things that materialize change in an environment that is familiar." I haven't used Roblox, but I believe it's similar so if they have a programming language, same-same. I started to suggest using Valoren <https://gitlab.com/veloren/veloren#get-veloren> since it's actual FOSS and thus would be much, much easier to integrate into, but I haven't played it in order to know how much uncanny-valley it would have with any preexisting Minecraft experience
Tangential, but kind of related, a lot of the first "real" programming was in monkeying with webpages, since "view source" used to go a long way toward showing how any cool trick was done. I guess the risk to that approach is that kids may not care very much about swooshing colors or alert("hello") but it for sure is accessible. I can recall typing Basic programs out of magazines to get a game running, but I don't actually recall what happened from there in order to know if "learning by transcription" is helpful or just feels rote
For teaching a child, it depends on the person’s interests. You can’t go wrong with Scratch (it looks fun, it’s easy to start with, and it’s immediately accessible within a browser), but the child might eventually want to move on to a more flexible language like Python for more complicated programs.
The lectures are well-produced and come with detailed lecture notes, though the assignments are technically difficult to complete. You can find the materials for Week 0 on Scratch is at: https://cs50.harvard.edu/college/2024/spring/weeks/0/
My sense is it's good for learning really basic programming concepts (eg, learning a while or for loop controlling a hardware output), and setting up a context for things like Python or Lua later.
Her school has kind of gradually been working through apps and scratch to build up concepts. Some of the early ones were games where you had to program a route out of a maze or something like that by doing things like providing the steps (up down right left, number of each) out. That kind of led to other things, which led to other things.
It sort of built from "tell this robot how to get out of a maze" to "tell your ipad how to do X" where X got gradually more complex over the course of months or a couple of years.
Thus, unless one wanted to make a "ParentalLLM" through which one could submit questions to an ourhouse.internal/api/v1/prompt api and get back "chat" responses over sms/some existing chat protocol, I'd carefully consider the risk verses reward of bringing LLMs into that process
I also recognize that I came up in the era of autodidactic lessons, and that predisposes me to "teach yourself how to fish" style approaches, but just wanted to draw attention to those LLM interactions coming with trade-offs