I have spent countless hours in scratch when I was younger. I learnt to program in basic originally but I loved scratch for its ease of use.
There was a group of us during ICT classes who would try and make the best games with scratch. Ended up learning the basics of momentum and control schemes by messing around with it.
But the cool thing is that for any game or story on Scratch, the kid can click into the project to see how it was made, and even access the code and assets. They can copy, fork, alter, build.
The technology is different obviously, but it feels like the early days of the Web, when you could “view source” and “save as” to easily explore and learn how any web page was put together.
> But the cool thing is that for any game or story on Scratch, the kid can click into the project to see how it was made, and even access the code and assets.
Definitely an important feature for learning. Seeing something cool and then immediately being able to find out how it was done is much more motivating than reading and memorizing docs ahead of time.
It's similar in some respects the early days of the web when "View source" was enough to figure out how something worked. It's rather sad that feature has mostly been lost.
Scratch is part of the same lineage [0]. Seymour Papert (creator of Logo) was one of the doctoral advisors of Mitch Resnick, who leads the group at MIT that maintains Scratch.
You can do turtle graphics in scratch. I have taught some beginner scratch classes at my local library and used the turtle graphics feature for the example for the class
My grandfather got me a lesson in Logo when I was <10 on his apple ii. It was before I understood the concept of degrees, so I really struggled with it. That said, it is part of what made me into a software engineer today.
Remember that robblox investigation, were they interviewed that 12 year old that already talked like a burned out developer, feeling cheated out of the revenue. The children yearn for the mines..
I would actually be very interested to hear from a lawyer—or at least someone with legal knowledge—why Roblox hasn't been prosecuted for this. These children are creating value for the company, and they're being compensated via a currency which can be converted into dollars. How is that not payment for work?
If Robux could only be converted into Amazon gift cards, I would still argue that was a labor violation, but I could at least understand why the case was murky.
Can Uber hire 16-year-olds to drive for them without a work permit as long as they're paid in special UbiCoins which are converted into dollars later?
It starts when we’re 8 and coding our very first program. “What’s your favorite color?” it asks, sweetly, twirling a lock of Visual Basic around its finger. You type in your answer, the screen changes color accordingly, and boom — time to show off to family.
Then Aunt Jody calls.
“Honey, it froze on me. ‘Color.exe has crashed.’ I don’t know what that means.”
You take a look at her entry. She entered: 2.
“I thought it asked how many favorite colors I had?”
But how could you…but what does it even mean to have more than one favori…ok, fine. No big deal. You add a sliver of code to stop people from typing numbers into the box.
Great read, thanks for sharing. This took me down an hour long rabbit hole of airplane safety procedures which is not what you would have expected going in.
We had one in makecode that I had to look into after my kid left for school. (He was pretty frustrated.) Turned out that it wasn't applying changes we made in the code and the window needed to be reloaded.
My ten year old is doing both scratch and makecode. The graphics in makecode are not as flexible as scratch, but it's fun to be able to make a game and run it on a physical device (pybadge).
I remember when I was young, I made a scratch game that was just "Guess the secret letter". Basically "if l pressed, you win, else you lose".
Except my 10 year old brain did not understand what else meant. So I created, over the course of hours, a different if statement for every key on the keyboard that all ended with "you lose". Was a shock to me when my parents, after seeing my code for the first time, told me what else means. What a waste!
One of the fun things about having a kid is realising how fundamentally-learned everything is, and how much we adults end up taking for granted. I catch myself so many times explaining things to my daughter, and then realising that the terms and concepts I'm using in the description also need describing. (She's 22).
I had a similar experience as a kid when making a game in BASIC. The player could choose their difficulty level, with higher difficulty levels having less obstacles for the player to hide behind. My code to calculate the number of obstacles looked like 'if diff=10 then obs=1; if diff=9 then obs=2; if diff=8 then obs=3; etc.' My dad looked at it, deleted all ten lines, replaced them with 'obs = 11 - diff', and my jaw hit the floor.
I’ve been tempted to teach my daughter programming with scratch. At what age did you introduce your daughter to Scratch and programming? Where there any helpful/fun guides you or she discovered along the way?
She uses it at school, but no one taught her how to use it. She has followed tutorials for making games on Roblox Studio in the past. However, kids just hit the ground running with Scratch way better than adults.
I introduced to my kids at around 6 and 8. 6 was maybe a little early, but not much (and will vary by kid, of course).
One thing that really added to the fun when they were making games is I got a PS3 controller (which is bluetooth) and connected that to the computer as a keyboard, which Scratch code can then read and use in the games.
The first big (for them) project we did was: https://scratch.mit.edu/projects/219423211/ They had just turned 7 and 9 when we did that and dad helped them out with a fair bit of guidance (and cribbing from other projects), but after this one, they really took to playing around with it on their own and a few times per month, I'll look over and see Adam using scratch around 5 years later.
PS: There is a Scratch Jr if your kids don't seem quite old enough to have the attention span/focus for scratch.
In spite of learning Logo at 6, I didn’t try to introduce programming to my kids, but my 7yo daughter picked up Scratch-based web programming during school where they did Hour of Code. (Pleasantly surprised considering Texas’ slow bleeding of public schools.) It’s a free site filled with focused, guided activities using block programming and probably other languages. One is Dance Party where you sequence dancers and their stage to a music track, and in another you teach Elsa to skate patterns into the ice in a modern twist on Logo.
They do a lot of Minecraft now but are interested in TinkerCAD, which I’ll solidify by printing some of their designs. Not sure any of the beginner CAD apps are really easy, though.
When people use scratch with their kids, what tutorials do they follow? Do they try and figure things out from first principles, or are their popular content creators who make stuff? How do people transition their kids from scratch to Python? From my experience teaching, it seems like it's really hard for kids to make that transition.
Haven’t worked with scratch myself, but I do enjoy HelloComics’ stream where they’re making a pretty fun looking 2d metroidvania style game in Scrtatch. If you’re interested in seeing how it could be used for a large scale project it might be worth a look: https://m.twitch.tv/hellocomics.
Seattle Public Schools participates in code.org’s “hour of code” program, which introduces students to programming in general and to the (delightfully good) free resources and programming environments on both code.org and scratch.mit.edu. My daughter had her first “hour” in first grade and it stuck; she loves toying with scratch and making little games. Both organizations are doing amazing work.
Hour of Code is wonderful. I think my old school was one of the first to try it, in 2013 or 2014, and that's how I discovered my love for computers. It's a really great initiative that has no doubt impacted thousands of people around the world. I hope Hour of Code and Scratch continue to exist for years to come.
Scratch is a great tool for teaching the entry level elements before you move onto a written code. I have been running after school classes for kids using Scratch (under the Raspberry Pi charity arm codeclub.org) and they take to it very quickly.
This is really cool. Out of curiosity - how did you actually set this up for him to use? Was it on tablet or a computer or phone? Any suggestions for a dad of a 3.5 year old?
Also, is he reading / at what level? Trying to get a feel for when I can introduce it to him.
We’re using an iPad. It’s theoretically aimed at older children (5+) but my son was able to pick it up no problem.
I sat down with mine about 6 months ago (he was 3.75 at the time) and we learned what each of the blocks did and how to combine them.
Now he asks to make a program and can do it independently.
He experiments with the backgrounds, sound effects, loops and motion.
My son can read but knowing how to count/recognize numbers is more important in this interface. Everything is graphical. Loops require a number input.
Another toy aimed at older children that younger ones can play with is snap circuits. We introduced the toy at 3. He can copy the project schematic and build the project. He built the AM radio project independently.
I bought a subscription to CodeSpark Academy and my kid has spent literally hundreds of hours on it over the last few years. He’s 9 now but started at 5 or 6. It allows him to do exactly the kind of things you describe- simple animations with kid-provided sound effects, a simple visual building block programming language, etc. I think that the key advantage of these types of systems is that they allow kids to do things that kids like (animated cats, poop noises, whatever) right off the bat. Getting enough python skill to do these kinds of things would take many hours of learning.
I find Scratch so confusing. So many menu options, drop downs , select here click here. Very frustrating experience. I don't think my child (8 years old) learns coding from it.
I'm trying to find away to introduce him to Basic. But he looses interest once he sees just lines. Scratch is flashy and things can be moved and clicked which is what the kids are used now, but I just don't see any educational or fun value added.
Can you start him with JavaScript and basic web development instead? That's how I learned around that age (started around 5 or 6). The immediate feedback of being able to change something in text and immediately see the impact was a big thing that helped me. Likewise, something like helping him mod games he plays might be good.
Scratch always kind of struck me as a non-programmer's idea of how to teach children to code personally. (Or at least programmers that didn't start/weren't active as children).
My 7 year old watched it and it clicked quickly, but we also watched a couple example videos on their official YouTube channel. Maybe give that a try. Once it clicked we were able to make some cool stuff together, and she was able to add features on her own.
honestly, you don't need to use the menus much at all. it's mostly just drag and drop from the block pallette. this thing has been specifically designed to be easy for kids to use, and all the evidence is that it has worked amazingly well.
This hits me deeply. I do not have kids, even not married. But when/if they will appear I will manage to disallow any GUI on the territory of my house for everybody including me (I hope old Nokias will still be a thing at that time for having ability to communicate or it will not work). Then a child will look at the lines as at the most interesting thing in the house and maybe starts going a GNU/Linux hacker way as early as some greatest mathematicians have started their math careers.
I respect such thing as Scratch and any of his competitors, but let's be honest, gentlemen - games is a misusing of computer and the lines is what matters.
I'd imagine learning at least a little Python alongside Scratch would be more optimal than Scratch alone. It's like bilingual education, it has great benefits although individuals may gravitate towards a preferred option. Perhaps it's a bit like comparing Minecraft to Factorio:
Looking around, it also seems possible to set up your own Scratch server, which is comparable to setting up a Minecraft server, then you could use Python to pound away via the Scratch API (which is otherwise disallowed by the Scratch team on the public Scratch servers, reasonably enough). That might be a good project for older kids (teenagers).
Also not OP, but I literally just learned about Hedy [1] today. No experience except from clicking through it for 20 minutes, but it looks quite interesting, taking somebody from a language with a very simple syntax (and limited functionality) to full blown Python, one level at a time, by making the language gradually more complicated (and more powerful).
I also quickly went through the basic tasks in 17 levels of Hedy in about 20 mins. (I just know a little programming.) Hedy is text-based and introduces ideas such as: print, entering variables, if, else, repeat, ... I really liked the gradual approach, which keeps you going forward onto the next level.
There are additional tasks at each level (see tabs at top) which I didn't try. It seems that these tasks are best done from left to right in order to get the basic idea of what is required.
The way it automatically detects variable within strings seems to magical. OTOH AIUI Hedy has been developed alongside research on what works for kids.
IIRC one of Hedy’s unique features is that it gradually increases in complexity as you “level up” including introducing what we’d call “breaking changes”. At level 4, they start allowing and requiring you to quote string literals: https://www.hedycode.com/hedy/4#default
I'm excited for my son to try it out once he's gotten comfortable with scratch.
At the moment, he's more interested in the visual design part of scratch than the programming, so I probably need to find some cool existing animations to inspire him.
i found it very confusing that the introduction at each level links to the next level but does not tell you to try the exercises. i didn't even realize that the tabs were exercises per level as i consider tabs a higher level hierarchy compared to the previous/next buttons. (i expect those to work within a tab, and not switch to a different row of tabs)
and also, why introduce an echo command in level 1 only to drop it in level 2? they could have waited and introduced ask in level 2 or 3 even.
i love the quiz questions though, they even make me, as an experienced programmer, think
the thing I've found teaching is that the place scratch really shines is teaching kids who are a bit too young to "get" Python. I think it's related to their language/visual intuition but a seven year old will be able to pick up quite complex things in Scratch visually without being able to grasp fairly basic things in Python. Give them a couple of years in the oven with or without Scratch and they'll be much more confident and ready in picking up Python, but scratch can teach them a lot in the mean time.
Snap language by SAP (snap.berkeley.edu) would be a better stepping stone rather than directly going to industrial languages. It's got first-class functions, first-class lists, object-oriented programming, APL-style vector operations which are very handy for media processing, machine learning etc, continuations, ability to make HTTP calls etc - while keeping the same playful environment as scratch.
There's even a variation for 3D geometries: beetleblocks.com
Scratch is immensely popular but with lack of reporter blocks and lack of first-class lists, it encourages many bad programming habits (global state, no datas tructures like stack/queue/tree/graph etc. The one advantage it has over SnapLang is that it has better performance for building intensive games etc.
etoys for squeak, which is somewhat similar to scratch (and supposedly influenced its development) has the ability to switch between blocks and the smalltalk code that the blocks generate. so you can basically look under the hood (and also change the smalltalk code)
I mentioned this already in an earlier post but I've been working towards addressing this by building a tool that bridges the gap between Scratch and Unity. Talking with Scratch Team members in the past, Unity has been cited as a good exit strategy. Unlike many other languages you aren't being dropped into a text-only environment. I think the main downside is the initial presentation of Unity can be a little daunting.
The tool I'm working on adds a new entry to the main Unity menu bar - "Scratch". Clicking on this allows you to enter the project ID of a Scratch project. Once done, the tool pulls the assets (graphics, sounds, etc) directly from the Scratch website as well as pulling the code and converting it to native C#. The idea behind this is that a student who is intermediate to high level at Scratch can import their favourite Scratch project over to Unity. They can look at the C# code to see the comparison, inspect and modify any of the assets, see the Unity components added to each Unity Game Object, etc. Basically it puts them in a position where they have a project that they have written in Scratch that they can no play in Unity. They can breakpoint the code and single step through it. Essentially it is designed to take away much of the initial impact of having to start from an empty canvas in Unity.
This is currently a WIP but I'm aiming to have a beta version ready within months. I made an early pre-beta video a while back to demonstrate it in action. You can view the video at https://youtu.be/nuUF9BcJT8g
For sure. Though designed for kids, Scratch is a lot of fun for adults as well. I encourage everyone to spend a little time playing with it. I think you'll be impressed.
My kids got started with Scratch 1.4 on a Raspberry Pi. That's as far as we've gone with it. Scratch 2 was a lost cause from the start, and Scratch 3 leans way too hard into the "community" aspect of it. It's really too bad.
Scratch also has a plugins for BBC Micro:bit and Lego Boost. They work well although the old Boost hardware is lacking storage so only works in Bluetooth tethered mode. The solutions have two parts: 1. a side application to facilitate the Bluetooth connection from the web browser to the device; 2. additional block types to control the servos etc.
Looks kinda similar to early Flash, which was my first real programming experience. Actionscript had a similar visual programming tool back then and you could also switch to "text mode" if you wanted to see what those visual blocks meant as a code. And it came with an amazing offline help manual. Flash/Macromedia was start of my career basically
I mentioned this in a reply to a comment below but I think it is worth repeating at top level: there is a great app called Pytch which is a bridge between Scratch and Python (and runs in a web browser).
I always recommend it to anyone teaching young kids to program.
I'm a little weirded out by all the reaching in this thread to try to shoehorn Python in where it doesn't fit well.
Scratch is an accessible, browser-based programming environment. The browser already includes first-class support for a text-based programming language. It's not Python.
I was obsessed with scratch as a child. It was my way in to computer programming, and I've taught in schools using it. It's an incredible tool and I'll hype it up any chance I get! It really is a miracle!
396 comments
[ 1.6 ms ] story [ 394 ms ] threadThere was a group of us during ICT classes who would try and make the best games with scratch. Ended up learning the basics of momentum and control schemes by messing around with it.
But the cool thing is that for any game or story on Scratch, the kid can click into the project to see how it was made, and even access the code and assets. They can copy, fork, alter, build.
The technology is different obviously, but it feels like the early days of the Web, when you could “view source” and “save as” to easily explore and learn how any web page was put together.
Definitely an important feature for learning. Seeing something cool and then immediately being able to find out how it was done is much more motivating than reading and memorizing docs ahead of time.
It's similar in some respects the early days of the web when "View source" was enough to figure out how something worked. It's rather sad that feature has mostly been lost.
https://pll.harvard.edu/course/cs50-introduction-computer-sc...
[0] https://el.media.mit.edu/logo-foundation/what_is_logo/histor...
Lynx (2D): https://lynxcoding.club turtleSpaces (3D): https://turtlespaces.org/weblogo
Logo is still taught by many schools, all around the world!
I surprised her back when I did user-testing haha. She discovered the fun world of bugs and user's doing things they shouldn't!
Wait till she gets tough PR reviews.
This block is ugly, and our team does not like looking at it :P
https://www.youtube.com/watch?v=_gXlauRB1EQ
Scratch and Roblox conspiracy to create an army of child developers? :O
Scratch is open source software created by a nonprofit foundation to promote education and creativity.
Roblox exploits children for profit and I quite literally believe they are violating child labor laws.
Couldn't agree more the more I learn about them.
If Robux could only be converted into Amazon gift cards, I would still argue that was a labor violation, but I could at least understand why the case was murky.
Can Uber hire 16-year-olds to drive for them without a work permit as long as they're paid in special UbiCoins which are converted into dollars later?
Please shield her from doing UAT with unreasonable business stakeholders as long as you can
Oh... that path takes you to strange places.
Mr. Fart’s Favorite Colors - https://medium.com/@blakeross/mr-fart-s-favorite-colors-3177... (7 years ago - https://news.ycombinator.com/item?id=11231631 )
It starts when we’re 8 and coding our very first program. “What’s your favorite color?” it asks, sweetly, twirling a lock of Visual Basic around its finger. You type in your answer, the screen changes color accordingly, and boom — time to show off to family.
Then Aunt Jody calls.
“Honey, it froze on me. ‘Color.exe has crashed.’ I don’t know what that means.” You take a look at her entry. She entered: 2.
“I thought it asked how many favorite colors I had?”
But how could you…but what does it even mean to have more than one favori…ok, fine. No big deal. You add a sliver of code to stop people from typing numbers into the box.
My ten year old is doing both scratch and makecode. The graphics in makecode are not as flexible as scratch, but it's fun to be able to make a game and run it on a physical device (pybadge).
Except my 10 year old brain did not understand what else meant. So I created, over the course of hours, a different if statement for every key on the keyboard that all ended with "you lose". Was a shock to me when my parents, after seeing my code for the first time, told me what else means. What a waste!
One thing that really added to the fun when they were making games is I got a PS3 controller (which is bluetooth) and connected that to the computer as a keyboard, which Scratch code can then read and use in the games.
The first big (for them) project we did was: https://scratch.mit.edu/projects/219423211/ They had just turned 7 and 9 when we did that and dad helped them out with a fair bit of guidance (and cribbing from other projects), but after this one, they really took to playing around with it on their own and a few times per month, I'll look over and see Adam using scratch around 5 years later.
PS: There is a Scratch Jr if your kids don't seem quite old enough to have the attention span/focus for scratch.
They do a lot of Minecraft now but are interested in TinkerCAD, which I’ll solidify by printing some of their designs. Not sure any of the beginner CAD apps are really easy, though.
https://i.redd.it/5t9mpdhzzniz.png
* https://www.torontopubliclibrary.ca/search.jsp?Ntt=Scratch+C...
Finally, out of 3 kids one is interested! Now what do I do?! Python, I'm assuming, but following what curriculum?
What was this program?
He made a story where cats jump up and down 25 times and then walk away. He recorded sound effects for the cats that repeated as the cats jump.
It’s simple but offers so much more of a creative outlet than games/educational apps aimed at his age group.
Also, is he reading / at what level? Trying to get a feel for when I can introduce it to him.
I sat down with mine about 6 months ago (he was 3.75 at the time) and we learned what each of the blocks did and how to combine them.
Now he asks to make a program and can do it independently.
He experiments with the backgrounds, sound effects, loops and motion.
My son can read but knowing how to count/recognize numbers is more important in this interface. Everything is graphical. Loops require a number input.
Another toy aimed at older children that younger ones can play with is snap circuits. We introduced the toy at 3. He can copy the project schematic and build the project. He built the AM radio project independently.
Scratch always kind of struck me as a non-programmer's idea of how to teach children to code personally. (Or at least programmers that didn't start/weren't active as children).
This hits me deeply. I do not have kids, even not married. But when/if they will appear I will manage to disallow any GUI on the territory of my house for everybody including me (I hope old Nokias will still be a thing at that time for having ability to communicate or it will not work). Then a child will look at the lines as at the most interesting thing in the house and maybe starts going a GNU/Linux hacker way as early as some greatest mathematicians have started their math careers.
I respect such thing as Scratch and any of his competitors, but let's be honest, gentlemen - games is a misusing of computer and the lines is what matters.
https://www.idtech.com/blog/scratch-vs-python
Looking around, it also seems possible to set up your own Scratch server, which is comparable to setting up a Minecraft server, then you could use Python to pound away via the Scratch API (which is otherwise disallowed by the Scratch team on the public Scratch servers, reasonably enough). That might be a good project for older kids (teenagers).
They start off with drag and drop coding and then Python. The Python is actually pretty fun, you write code to make animals move around and get stars.
[1] https://www.hedycode.com/
There are additional tasks at each level (see tabs at top) which I didn't try. It seems that these tasks are best done from left to right in order to get the basic idea of what is required.
https://www.hedycode.com/hedy/2#default
The way it automatically detects variable within strings seems to magical. OTOH AIUI Hedy has been developed alongside research on what works for kids.
I'm excited for my son to try it out once he's gotten comfortable with scratch.
At the moment, he's more interested in the visual design part of scratch than the programming, so I probably need to find some cool existing animations to inspire him.
and also, why introduce an echo command in level 1 only to drop it in level 2? they could have waited and introduced ask in level 2 or 3 even.
i love the quiz questions though, they even make me, as an experienced programmer, think
Features like this enable serious study of computer science possible with Snap: https://emu-online.de/ComputerScienceWithSnap_2.pdf
There's even a variation for 3D geometries: beetleblocks.com
Scratch is immensely popular but with lack of reporter blocks and lack of first-class lists, it encourages many bad programming habits (global state, no datas tructures like stack/queue/tree/graph etc. The one advantage it has over SnapLang is that it has better performance for building intensive games etc.
https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_...
It's also more likely to run a few years from now, and it works on tablets, grandpa's ailing windows box, etc.
The tool I'm working on adds a new entry to the main Unity menu bar - "Scratch". Clicking on this allows you to enter the project ID of a Scratch project. Once done, the tool pulls the assets (graphics, sounds, etc) directly from the Scratch website as well as pulling the code and converting it to native C#. The idea behind this is that a student who is intermediate to high level at Scratch can import their favourite Scratch project over to Unity. They can look at the C# code to see the comparison, inspect and modify any of the assets, see the Unity components added to each Unity Game Object, etc. Basically it puts them in a position where they have a project that they have written in Scratch that they can no play in Unity. They can breakpoint the code and single step through it. Essentially it is designed to take away much of the initial impact of having to start from an empty canvas in Unity.
This is currently a WIP but I'm aiming to have a beta version ready within months. I made an early pre-beta video a while back to demonstrate it in action. You can view the video at https://youtu.be/nuUF9BcJT8g
seems there are some third party packages, but they don't look maintained.
https://scratch.mit.edu/microbit
https://scratch.mit.edu/boost https://scratch.mit.edu/boost
[0] https://en.wikipedia.org/wiki/Logo_(programming_language)
Lynx: https://lynxcoding.club
turtleSpaces: https://turtlespaces.org/weblogo
I always recommend it to anyone teaching young kids to program.
You can find it here: https://www.pytch.org/app/
Scratch is an accessible, browser-based programming environment. The browser already includes first-class support for a text-based programming language. It's not Python.