Scratch 3.0
scratch.mit.edu
scratch.mit.edu
My experience is that it is literally 10 times more fun for the kids to learn to code Python with http://www.codecombat.com . The classes gets filled with excitement when I put on the 10 hour version of "Diablo Town Music" and tell them to log into Codecombat. Very rewarding actually :). I register free accounts and bring these to my classes on a printed sheet, that works great. As such I don't need to pay for the classroom edition. I have actually let Cidecbat know about this pricing flaw, but no new models have been introduced that fit my use case has been made available. This is Codecombat does not have a pricing tier that fits my volunteering classes with random participants well.
Generally learning python is mostly text-based. CodeCombat looks graphical -- how are the graphics done? What needs to be installed? (codecombat.com just stopped loading)
As a (former) child who learned to program, what you're saying is true but irrelevant, because text is fun to work with.
I don't know the platform you mention but it looks like the advanced (because Python) version of games you find on code.org. So I expect a linear progress, where you tackle task after task. This can be fun and also creative but in a limited fashion. You should not withhold Scratch from the kids so they can experience the freedom of building their very own things. Be critical and ask yourself why the kids don't have so much fun and why they get lost.
Maybe you can start with easier exercises, try out other tasks and challenges you never used and let the kids be creative already in the beginning: Teach one or two new blocks, give some rough ideas and let them do whatever they want. No blueprint or solution sheet required in this case. Coding kids have so many ideas - they will make it fun by themselves.
I think there are many ways to do it. I just wanted to point out the difference between Scratch and game based learning platforms. I also teach kids in my spare time and I think we are doing something very important for every single child. So thank you!
When programming the microbit and I like that you can switch between javascript and blocks to see the cause and effect of making changes though.
But if you have kids who want to step up their game from Scratch, check out PICO-8 (submitted it earlier today, check my history). It's genuinely amazing, and my oldest absolutely loves using it. He's made some awesome 2d games so far over winter break and he's using legitimate programming concepts and techniques like they're nothing, it's really amazing to watch.
Tight constraints tend to breed innovation, however.
It’s an educational JavaScript library that follows Scratch concepts and patterns. It is specifically designed to bridge that huge gap between draggable blocks and typed code. Disclosure: I’m the author, AMA.
[1] https://lexaloffle.com/bbs/?tid=32743 [2] https://i.lookingglassfactory.com/
I've been using it to teach programming to my 7 yo, and it has been an absolute joy. A few weeks ago we developed PONG together (he wasn't aware that PONG already existed, so it was beautiful to see him figuring out the mechanics of the game, piece by piece).
Is there any significant difference between TIC-80 and PICO-8? both looks awesome to me
https://www.youtube.com/watch?v=-Wq6SQTVM9M
This is one of many amazing videos from Cynthia Solomon's treasure trove of youtube uploads.
https://www.youtube.com/user/cynthiaso/videos
If you act now, you can be the 32nd person to watch this video of Seymour Papert demonstrate the Logo Turtle! ;)
https://www.youtube.com/watch?v=lDyym_9-E-g
Or be the 39th person to watch this video of Seymour Papert explaining how giraffes sleep:
It's somewhere in here, I think (but alas I'm not up to listening again through half an hour of the old lady voice): https://youtube.com/watch?v=1PhArSujR_A
I feel like marrying Lisp's meta-programmable DSLs to an easy visual environment is the ultimate cosmic dream of 'domain-centered' programming and customization for non-coders―but it also seems to me that Lisp is rather text-based, trading a readymade set of operations picked in the interface for infinite extendability through text. So I'm not sure if a visual Lisp is any convenient to use.
Also, for me the immediate downside of the Lisp environment in question is that it's only available for iPad.
By Apple's decree and app store policy, any programming language on the iPad that isn't purely based on the JavaScript interpreter in the web browser isn't allowed to download and run executable code, much to the frustration of Alan Kay, who is weary of people comparing the iPad to the Dynabook without acknowledging that Apple left out and prohibited his most important idea on purpose: user programmability.
If Carmack's visual Lisp is implemented as an iOS app with locally running native code, and not purely in JavaScript running in the web browser, then he has to build it himself in XCode on his own Mac for his own use with his own Apple developer certificates, and he isn't allowed to distribute it on the app store.
If you can implement your language purely in JavaScript, like Snap! or the web version of Scratch 3.0, then it'll run everywhere, and isn't an iPad app, just a web app, so it's not bound by the restrictions of Apple's app store. That's the way to go if you can.
Apparently from version 3.0 Scratch is proprietary and doesn't run offline on free operating systems[0]. That's just sad. There are some good ideas in Scratch, but I think Snap![1] is the better one to use: It's free, and you can create your own (recursive) blocks[2].
[0]: https://scratch.mit.edu/download
The license appears to be: BSD 3-Clause "New" or "Revised" License
They do also have a desktop version (PC, Mac) for those without Internet access. But the strength of Scratch is the online sharing and community.
Compare that to internationalization, which they support out of the box with 40 languages, and which countless projects ignore.
What features should they have sacrificed for the port? Sound and music? Lego mindstorms integration?
I don't think it's sad that the offline version doesn't run on Linux. It sounds to me like they know their target market and are prioritizing their engineering effort quite well.
That made me assume that it was proprietary, but I'm very happy to be proven wrong about this. Furthermore it looks like unlike 2.0, Scratch no longer depends on the proprietary Adobe Air component, so if that is the case, it's a big improvement!
It would be less confusing if they'd replace "Linux is currently not supported" with a link to their repository on Github. I might contact them about that.
Can't wait to try it out!
Does anyone know whether Scratch 3 supports recursion like Snap! does?
Last time I looked, I didn't manage to find it anywhere...
Thanks for the Snap reference! I wasn't aware of it and agree that it appears very appealing.
Lately I've been wondering if there is a better way that doesn't match 1-to-1 with coding constructs - something visual, but something that isn't just "a for-loop represented as a physical block". Not sure what that would be though!
Alice ( https://www.alice.org/ ) is a step more advanced than Scratch, and works well for my middle-school-aged kiddo, who can work through exercises in CodeCombat ( https://codecombat.com/ ), but has trouble with javascript||python in less structured environments.
My initial environment for learning however, had been a TI-83 calculator, and had StackOverflow existed back then (or had the calculator come with a "quick start coding examples" book or something) it would have been 200% ideal. As is I learned most of the core concepts via trial and error, because I was very motivated to make games for my friends and program solutions to homework problems. For keeping me interested at that age the "Real world applicability" aspect cannot be understated.
To share a fun failure mode however, and emphasize the need for accompanying documentation (and this is what scratch does somewhat well in being rigid, at the tautological downside of being rigid) When I first learned about for loops, I didn't actually realize how one used them typically. I thought they were a "wait for N seconds" sleep-style function, and would actually use it in this fashion with laughably high loop iterations and strange formulations in the boolean field.
I was also completely unhappy that schools tested learning and perfection at the same time. If I solve a physics problem using the correct formula but make some silly error along the way and get a wrong answer that really sucks since there's not usually enough time to check work. So... I wrote programs to solve any and all equations we'd learned so I could really quickly check my work for correctness. We had to write out all the steps to solve the problem anyway so it never felt like cheating to me, just proper validation :)
I'm not sure how it would work, but it would be very nice if Scratch emphasized creating functions and building with more advanced programming concepts. Last time I played with it, functions and "make your own block" were hard to access and not necessary for the target audience to make basic games.
Although it's gotten smaller, I think it's Scratch's responsibility to close the gap between it and a "real" programming language.
I wish there was a better way to program on mobile, because typing just doesn't feel good. Maybe a visual way to program could bridge that gap.
I also feel that kids would love to be able to create their own install-able apps with something like Scratch. Maybe could be done with something like PWAs?
The new version of Scratch does work on mobile, but it needs to be optimized.
It's missing a table component really for UI programming, but can support visually programming apps on mobile devices :)
I'm curious to hear your feedback (if you do try it), because you've asked the sort of question that prompted its creation.
[1] www.blockstudio.app
I took a look around and saw some nice improvements to areas where Scratch always seemed crufty! Plus it loaded fine in every browser I tried!
That's a great update and I can't wait to see what the extensions are like
Scratch is like the distilled version of it optimized for kids. I would have loved it as a kid and I see how natural children can work with it. Mitchel Resnick and his team did a great job with Scratch and it's amazing to finally see it working in HTML5 - after being a Flash based application.
Teaching coding to kids is important and as a developer it's easy to say so. Some day I made the decision to think about the why to better explain people why I do the teaching. The end product was a 25min talk I gave at the JSConf EU 2018 in Berlin. Maybe that's of interest for parents reading here about Scratch and of course fellow developers interested in teaching coding to kids.
https://youtu.be/t0m5rrKKMOA (About Coding Kids and Screaming Carrots — JSConf EU 2018)
Here the slides and all information I mentioned in the talk: https://github.com/georgiee/coding-for-kids
My summary why a kid should learn coding:
> It's about teaching kids to be producer instead of a consumer
> so they can build their own games, tell their own stories
> and create their own music.https://www.robomindacademy.com/
It's a text based language, but you program a graphical robot to do various tasks. I've found that it's a great combination of fun and actual coding that helps kids transition from something like scratch to more advanced languages and concepts. I'd say it's good for kids around 12 years old.
Lots of idea sharing, because you can click to see the "code" inside anyone's project.
Scratch 3 is a major re-write, to eliminate Adobe Flash. It also has extensions (the example given is to integrate with Google translate and Lego Mindstorms).
This makes me happy. There's hope for humanity yet.
just for peoples interest, their github is https://github.com/LLK/
The new 3.0 GUI is done with react.
Snap is on github: https://github.com/jmoenig/Snap
It also is based around js, and can import scratch 2.0 sketches (not sure how well that works in practice) - I wonder if there's any collaboration with MIT scratch moving off of flash to js - or if they did everything from, well, scratch ?
And for younger kids Scratch Jr. is great https://www.scratchjr.org
I've found previous version of Scratch to be frustratingly limited unfortunately.
I don't mind, and expect, kids software to be limited but Scratch makes it really hard to do certain things. It's a pity because it holds the number one place in market positioning for free software for educating kids on how to program.
I didn't find this easy at all and it seems like something that shouldn't be hard.
Also it is/was based on Adobe Flash and none of my systems or browsers have Flash.
Your example project should be relatively simple in Scratch. Certainly many users have done similar things. Perhaps you're trying to do it in ways that work in common programming languages while it requires using different idioms in Scratch?
Also found communicating between scratch objects via the asynchronous message passing to be seemingly too slow and it would have been nice to be able to call methods on another sprite (although I assume they are trying to limit the potential for uninteruptible infinite loops and the like by having each sprite execute separately).
Most problems I’ve seen them run into are basic algorithmic issues. “I want the ball to change direction when it reaches the wall” we’ll “perhaps we can let the ball test if it is at the wall? Here’s a block that does tests”
- Mutual sprite collision (think a projectile hitting another sprite, and wanting it to both disappear and do damage to the thing that got hit) can easily have race conditions unless you take special care to avoid them - Scrolling games are hard to do for a number of reasons (backgrounds don't natively scroll, sprites have fairly hard size limits and can't be fully moved off the edge of the stage) - As others have mentioned, the inability to share code between sprites outside of clones is a bummer - The heuristic for waiting for the next frame in a loop works well for simple stuff, but gets in the way for more complicated things. You can work around this by defining your own block and enabling the "run without screen refresh" option, but if you accidentally create an infinite loop in that block, the entire UI becomes unresponsive (at least in Scratch 2, perhaps they've fixed that in Scratch 3)
What I found there was, basically, "This is version 3 of Scratch", i.e. completely uninformative to anyone wondering what in blinkered hell Scratch is, who it's for, what it's for, or why I should care that there are now three of it. "Scratch" is a traditional epithet of Satan. So, guessing a Satan animation for kids?
I guess they will have a chance to do better if they last to 4.0.
I've tried writing a small program with each on my phone and quickly grew frustrated. It just isn't efficient for me. I much prefer the familiar ground of using Python on Termux using Hacker's Keyboard, and, even then, only to tackle trivial stuff that a calculator can't quite handle.
https://scratch.mit.edu/projects/780538/
LOL I want to hangout with that kid!
https://scratch.mit.edu/projects/276660763/
I hope that that is just due to a misunderstanding by the users (trying to load a 2.0 sketch in 3.0 or something), and not a sign of badly handling the upgrade?
Whether the big problem is that scratch 2 is arguably better or it that it breaks scratch 2 projects, it would have been nice if they continued to fully support scratch 2, rather than just the "offline editor". I understand if they didn't have the resources to support it though.
so yes, version 3 in javascript is most certainly on a better technical foundation than v2.
personally, i wish they would have stuck with the original implementation in smalltalk, but javascript is at least a logical choice for today.
both from a site called "cubeupload"