Syllabus: Scratch programming for kids

I noticed that these days, a lot of parents are being pressured by edtech industry to buy paid courses on "programming for kids" which are all simply using Scratch with bad instructions. Worse, many of them are using industrial languages like Javascript or Python which are completely unsuitable for the purpose of pedagogy. So, I have put together this syllabus/sequence of high-quality learning resources (apps/free courses/articles/videos) that I followed for my own daughter with spectacular success.

We have a peer group of parents and children learning Scratch programming using this syllabus. If you'd like to join, come to our Slack group.

Why learn Scratch programming?

Computational thinking skills may have a lot of practical value. It helps kids understand how computers work, and how to make new things with them. But if you think programming is all about computers, you're wrong. The core idea of programming is that a tiny set of simple instructions can be combined to produce immensely complex structures. We see this in cooking, knitting, chess, mathematics and much more. Your DNA, for example, is a series of instructions or a "program".

But more importantly, programming is the only skill that lets you create "interactive" art. Other creators have "readers", "audience", "spectators" etc, but only programmers have "users". If you haven't felt the joy of programming, you're really missing out.

This joy is what should be the main motivation for teaching programming to kids. Not career success. We don't know what careers will be in vogue 15 years from now, but the joy of creation is an eternal human blessing.

Scratch is a visual programming language, built at MIT, that is used by children all over the globe. This visual language is in the shape of blocks (like Lego), and it allows its users to create online projects, games, apps, and many other things. The blocks eliminate the major source of frustration which comes from syntax errors. Scratch has a very active online community which makes this experience very engaging for kids, and they also learn collaboration and teamwork - besides figuring out how programs work.

Scratch, which is completely free, is what's being used by many edtech platforms. You don't need to pay a lot of money for paid courses because I have collected the best quality resources here for you and put them in a sequence that is not rushed.

In my opinion, it would be a mistake to start too soon with industrial languages like Python, Javascript because the child would be intimidated with a lot of details that only distract. Motivation is the #1 resource with the shortest supply. Do whatever you can to preserve it. I'd actually explore computer games like Age of Empires which provoke questions in their minds: "I wonder how they wrote code for this game!".

Preparedness:

Can the child count things correctly? It's NOT easy. Suppose your boss wants you to work from 8am to 11am, and mop floors 8 to 11. Simple - it's one floor per hour, right?

Nope! There are 4 floors to mop (8, 9, 10 and 11) but only 3 hours to work (8-9, 9-10, and 10-11).

Whoa -- we count floors and hours differently? You bet. And somehow, if the boss said "Mop floors 8 to 11 on April 8th to 11th" everything would be ok.

To understand this, read this article under Counting

Does the child have some exposure to 2D coordinate systems? It's not a prerequisite, but will have to be discussed during the practice stage. When you reach that stage, use resources from our co-ordinate plane topic.

Is any one of the parents experienced with computational thinking? If not, they too should go through this Scratch course. Following along with the child is also fine.

Do you have a computing device at home (a desktop / laptop / tablet)?

Parents should read this and follow the Scratch team on Twitter

Motivation and priming:

A lot of difficulty in programming is how it requires you to be very precise with language and instructions. Bringing this sensitivity is important. You can watch the "Exact Instructions Challenge" videos.

It is also important to create the REASON/MOTIVATION to learn Scratch such as to create your own games. So, first you should explore games made on Scratch website. See what is possible with Scratch. Remember, kids want to DO interesting things, and not LEARN something.

Experience:

Cooking is not very different from algorithms. You can start in the kitchen. Parent and child can enact any of the "Exact Instructions Challenges" on their own. You might want to record a video, but no need to publish it anywhere.

After this, I recommend playing at least the first two levels of the programming puzzle game Lightbot. It's a free app which gives a highly-constrained and playful environment for algorithmic thinking that feels like playing a game instead of "learning". Remember, kids want to be able to "do" interesting stuff, not "learn" something.

Avoid Scratch Junior. It's better to stop after Lightbot and wait for them to be ready for main Scratch.

Instruction and Practice:

Scratch is available both as a website and as an app that works offline.

First try the interactive online tutorial.

More tutorials are available here.

Now we are ready for a "course". The best one is this free course on edX which will explain all the concepts in detail. Complete it as far as you can. Remember to try things out. Coding, like swimming, can only be learnt by doing.

You can join other parents going through this syllabus in our Slack group. :-)

Getting help:

Instead of helping you once, we will teach you how to find help yourself on the Internet:

Performance:

  • Basic: The student should be able to Create a game with her own idea and publish it on scratch website.
  • Advanced: Complete this series of Scratch challenges.

Learn from the experts

  • Let the kid play games on Scratch. They should know what "apps" are, before they get interested in how apps get made. Occasionally, they will get curious and click on the "See Inside" button to bypass a difficult game level. At that point, they are hacking in its true spirit. Count yourself as a successful parent at this point! 😄

  • Watch Scratch tutorials on YouTube, such as how to create their own platformer game in Scratch. Be patient at this point though. Let them make simpler games, stories etc before reaching this slightly difficult level.

  • Learn how to create custom blocks. This is a rough simulation of how functions work in industrial programming languages.

Teach:

Your child should now teach Scratch to a friend or sibling. Teaching is one of the best ways to consolidate your learning.

What next after Scratch?

Frankly, there is no need to rush. Scratch alone can expose them to a wide variety of programming techniques, but if you do want to go forward, try these topics:

  • Snap! This adds two key features to Scratch: Lists as a first-class object (so you can introduce data-structures like tree, stack, queue etc) and higher-order functions. But it doesn't have a great UI or an active community like Scratch does.

  • Processing is a textual language that still makes it easy to generate concrete, visual things like animations or games. It is important to work on concrete things because it shortens the feedback loop which is crucial for formation of concepts.

  • Computational Thinking

Help us spread the word.

We are building a community of lifelong learners. If you have landed here, you probably have an immense love for learning like us. We would love to have you join our Slack group.

  Added by: eshnil