Scratch sucks; teach kids BASIC

· Essay

Nota bene: If you’d just like to skip to my awesome (I think) lesson plans for teaching kids programming, click or tap here.

When I began teaching kids programming many moons ago, my colleague, who had been teaching for a few years longer than me at that point, gave me some resources to teach Scratch. Scratch is an environment that takes all of the annoying words and typing out of programming and makes it as simple as fitting together puzzle pieces. It also sucks. Like, real bad.

Ooh, shiny…

Technology has bludgeoned our attention spans to smithereens with an old-timey club. Kids are already lacking in the virtues of sitting down, shutting up, and paying attention, so lessons need to hit the Goldilocks zone of interesting enough to engage, but not interesting enough to flip your shit.

Let’s put on our thinking caps and imagine how a kid who’s never even heard the words if-else might react to the following.

It looks like Windows and a rainbow had a baby and the baby crapped its pants and vomited.

It looks like Windows and a rainbow had a baby and the baby crapped its pants and vomited.

Scratch has (quite impressively missed) the Goldilocks memo, it seems. From the get-go, you have the following things to keep track of:

Good luck!

Uh, which way is up?

Each of those 14 trillion colours and shapes is a pathway forward, and therein lies the problem with Scratch.

Scratch makes things appear intuitive but the content fundamentally isn’t.

Scratch gives kids just enough hinting that they can do a bunch of different things, but it doesn’t equip them with the tools to do it. They can animate, they can draw, they can program a game or they can program a mathematical problem solver, but as soon as they try to step into the deep end they fall in completely and flounder.

Actual footage from my early classes.

Actual footage from my early classes.

This is a classic case of knowing what you don’t know. That’s really frustrating to deal with as a teacher because you’ll have kids with a thousand different interests all vying for their particular niche. You can plan a lesson for games, but some will want to animate. What’s more: they know they can animate, they can get started on animating and ignore your content, but they can’t actually see it through without your help. The end result is kids that will get bored and fed up that their desires aren’t being met.

See, an optimal learning environment is actually one where kids don’t know what they don’t know, because then they won’t go gallavanting off in search of mystical treasure. When they have absolutely no idea what the possibilities are, and you drip-feed them judicially, they become a lot more engaged with you and your content, because you’re they’re only way through the wilderness. Their only desires will be the ones you let them know are possible, which means that you can fulfill their desires completely before there are too many to handle.

To put it succinctly, the only way to cure choice paralysis is to eliminate the choice.

It’s not just you…

The choice paralysis with Scratch also impacts you, the teacher. It’s hard to have a good trajectory mapped out with so many possibilities. Scratch just doesn’t have a good skill progression: do you learn to animate first, so that future content is engaging with cool sprites and visuals? Do you learn to program first? What programming concepts do you teach first: the ones that will let a kid make a game or the ones that will let them make a small interactive movie?

Again, the cure for our choice paralysis here is to eliminate the choice.

We have to keep it simple, stupid. We have to make things really…

BASIC

You can applaud that segue any time you want, by the way.

After finding that my students were either rote-learning or no-learning with umpteen different Scratch lessons I attempted, I went back in time by 42 years. On my decade escapade, I found a relic bearing untold pedagogical powers. I speak of the mythical Applesoft BASIC language. More specifically, this handy-dandy online emulator written in Javascript.

The only time you could tinker with Apple and not void your warranty.

The only time you could tinker with Apple and not void your warranty.

Uh, why?

Because BASIC bears striking similarities to the only algorithmic work most kids have ever done: step-by-step instructions for something. In fact, that’s exactly how I start my first lesson in my new lesson series: the age-old exercise of pretending to be an extremely pedantic robot whom the kids instruct to write something on the whiteboard.

On top of that, BASIC has a really rigorous yet simple structure to its syntax: line number (analogous to which step you’re on in your instructions), command (what you’re gonna do), parameters (description or other helpful information for your command).

It also avoids all of the problems with Scratch by being slightly too unintuitive to work out entirely on your own. That means the kids aren’t able to wander off and decide to do their own thing until I’ve taught them enough to be able to fly free without issue.

It’s still fun!

The most important thing is that Applesoft has all the cool graphic capabilities you’d want to keep things interesting. The Javascript version even has examples of awesome games to show off as a goal for your students.

Of course, you don’t just have to rely on BASIC being fun for a good lesson. In fact, because the syntax of BASIC is so easy to learn, I actually spend most of my lessons teaching concepts with class and group activities. Then, we just transfer the skills and concepts we’ve learned into code on a computer.

Alright, give me some lessons!

You know I’d never leave you hanging, dear reader. Just so you can see what I’m doing, have a look at these lesson plans. I’ll probably upload more or even have a section of the site devoted to these eventually, so stay tuned for more.

As always, they’re licensed with a CC-BY-SA licence, so you can remix and do whatever you want with them, just slap my name or a link to the original work somewhere on your thang.

  1. Intro to algorithms
  2. Intro to variables
  3. Conditionals
  4. Loops
  5. Challenge/breather week

One more thing…

If you were in school or university any time after 2010, you probably had a laptop in class. You probably also wasted a significant amount of time on that laptop, because there are a lot of games and other cool things to waste your time with on the Internet. Fortunately, schools can now stop that with web filters. Problem is, you’ve gotta unblock Scratch if you want to teach it. But unblocking Scratch means unblocking all of Scratch, which includes other people’s projects, which includes games like Geometry Dash.

Couple that just-a-click-away gaming with the fact that Scratch is hard, and you get students that end up unfocused quite quickly. What’s more, they’ll insist they’re learning by pulling another project apart and looking at its puzzle blocks. Sometimes, that’s actually the case, which means when you tell kids not to fool around like that, you’re stopping them from learning in a way that suits them. But if you let them do it, some kids will abuse the privilege. You can’t even do a middle ground and only ban the practice if there’s too much gaming and not enough coding, because that means monitoring every kid like a hawk.

Have I convinced you yet?