Teaching Coding and Digital Technologies Using Scratch

Owen Brasier
Grok Academy
Published in
9 min readAug 7, 2023

This blog was originally written by Nicola O’Brien for the Australian Computing Academy, and was published on Sept 1, 2020.

Scratch is widely used in schools as a tool for students to learn to code and to create projects: games, animations and quizzes are popular. Scratch is available both in the browser (at scratch.mit.edu) and as a download. As at July 2021, there are over 74,000,000 users registered on Scratch, and in May 2021 there were 800,000 monthly active users.

In this article, which accompanies a recent webinar, we look at how Scratch can be used to teach coding in a classroom setting, and in particular to teach key content descriptors in the Australian Curriculum: Digital Technologies. We’ll explore the features of Scratch, why Scratch is the way it is, and how this can be both helpful and unhelpful for teachers.

What is Scratch

Exploring the Scratch website, you will quickly discover that it is a place to both create projects, and look at other projects. Projects are made by connecting instructions together (like a digital version of lego). Projects are animated, featuring characters (known as sprites), music, and graphics. The projects are interactive (playable by using keyboard inputs and clicks), and can be shared and used to create new projects (a process called remixing).

An example of a Scratch project featuring a rotating colour changing parrot.
A Scratch Project

It’s interesting to investigate how students and teachers use Scratch. When we asked teachers how they used Scratch in our webinar, we gathered the responses in the image below. While our teachers primarily use Scratch as a programming language, it’s worth noting that it’s also commonly used as a gaming platform (a place to explore for games to play, rather than to create content) and an animation tool.

An image showing how teachers use Scratch: most use it as a programming language.
How teachers use Scratch

We added the option of a social network to make the point that once students create an account on the Scratch website they have the ability to share their own content, and comment, favourite or love others’ content. This opens up a discussion for parents, teachers and students (especially younger ones) about how to behave online, what to do if they receive unpleasant feedback on their own projects, and how to keep personal information private. It also ties in with the expectations in the Australian Curriculum ICT General Capabilities, creating an authentic opportunity for students to learn how to navigate online environments in a safe manner.

The big ideas behind Scratch

How can a website be a programming language, an animation tool, a gaming platform and a social media network all at the same time? Understanding the philosophy behind Scratch answers these questions. Scratch is the creation of the Lifelong Kindergarten group at MIT Media Lab. Scratch encourages project based learning, and exploration.

In his book “The Lifelong Kindergarten”, Mitchell Resnick argues that for children to thrive in today’s fast-changing world, people of all ages must learn to think and act creatively. Resnick is part of the team at MIT, and developed Scratch to provide young people with opportunities to work on projects, based on their passions, in collaboration with peers, in a playful spirit. These four Ps — projects, passions, peers and play are baked into Scratch.

The philosophy of Scratch doesn’t direct users to create projects in a particular way or to explore programming ideas in any order. There is no adjacent methodology around planning or scoping projects, or creating algorithms. In many ways it encourages a backwards design approach — gather coding blocks, play with them and see where it takes you. This is very different to most programming languages where coding is the final step, after careful problem definition and algorithm crafting.

A square peg in a round hole?

The Digital Technologies curriculum guides teachers in the type of programming concepts which should be taught. These are set out below.

A summary of the key content descriptors from the Australian Curriculum: Digital Technologies
The Australian Curriculum: Digital Technologies

Implement simple digital solutions as visual programs with algorithms involving branching (decisions) and user input (ACTDIP011)

Implement digital solutions as simple visual programs involving branching, iteration (repetition), and user input (ACTDIP020)

Implement and modify programs with user interfaces involving branching, iteration and functions in a general-purpose programming language (ACTDIP030)

Is Scratch a good tool to use to teach these concepts? Are there approaches which can be used in conjunction with Scratch to make the teaching of the above concepts easier?

Scratch does some things very well

Scratch provides instant feedback for students. If a student is problem solving to see how many steps the sprite below needs to move to get from the start position to the bubble, a student can repeatedly edit the ‘move ( ) steps’ block, run the code, and adjust until the solution is found.

Scratch is also a wonderful way for students to be creative and express themselves. With the pre-made sprites, drawing tools and varied instructions, it is very motivating for students to create a project which tells a story or covers a topic which is important to them.

Mitch Resnick speaks of the need for ‘low floors, wide walls and high ceilings’ in educational technology. Scratch provides this — the low floor being a very simple starting point. The wide walls are the infinite possibilities to create personal projects on any topic and incorporating different instructions in different ways. The high ceilings refer to the complexity of projects possible within Scratch — with functions, data structures and recursion, complex projects are a reality.

But there are challenges

Some aspects of Scratch are tricky — students remembering passwords, students working together on projects, and for teachers, creating and managing classes on the platform. More relevant for this article, there are some pedagogical challenges to think about before using Scratch to teach coding.

Adults and older students learning to code using a text based language, such as, Python learn in a fairly predictable way. After some initial grounding in syntax and useful commands, students learn that code is used to create digital solutions. These solutions are created from instructions given to a computer, which essentially follow the steps of an algorithm, and that algorithm has been developed to solve a carefully specified problem.

In the Australian curriculum, we see a process laid out of problem specification, algorithm development, and then coding.

An approach to creating digital solutions by specifying a problem, creating an algorithm and implementing a solution

Students often approach Scratch in quite a different way. They’ll explore blocks, combine them in interesting ways, and when they’re happy with their project, if you ask what they set out to create, they’ll proudly say ‘THIS!’

Research from University of Canterbury’s Computer Science Education Research Group reviewing projects in the Scratch repository found that many Scratch users show no use of patterns and common programming constructs, even after they have had months of experience writing dozens of projects; only some of the most experienced students are likely to show much progress. Despite the huge number of projects created using Scratch, very few move beyond the bare basics.

Students at primary school are on a journey with their education. At some point it will be necessary, or at a minimum very helpful, to develop a more structured way to approach coding. With younger students, the approach shown below on the left is perfectly ok. However the largest group of users of our Scratch DT Challenges are students in year 7 in Australia (equivalent to US grade 7). At some point those we’d like our students to progress to a way of coding represented by the picture on the right below.

Wrapping pedagogy around Scratch

Sue Sentance and Jane Waite have proposed the PRIMM approach to teaching coding, which is explained very simply and clearly here. This approach provides a structured way for students (and teachers) to approach programming. The initial steps focus on comprehension, rather than writing code. Applying this approach provides students with an understanding of programming concepts. When they come to explore all the blocks available in Scratch, they will be able to understand more about what those blocks do, and the outcomes they can achieve by using them in combination with other blocks. The steps are explained below in more detail.

  • Predict: without running a code snippet, students predict what the code might do. This step encourages students to view the instructions in sequence, and take a line by line approach read through.
  • Run: run the code snippet. Is the predicted behaviour what actually happened? If not, why not? At this stage as students are not typing code themselves, their cognitive load is lowered to allow them to focus on concepts — not syntax or navigating the coding environment.
  • Investigate: take a closer look at individual blocks. What happens if you change parameters? Or change the order of them? Students can trace code, label printed code snippets, or create flowcharts based on code snippets.
  • Modify: students can start to take ownership of a project by modifying existing code, first with small changes and then increasingly adding their own features to a project. This provides a helpful scaffold for the final step of this approach.
  • Make: in the final stage of this approach students apply their knowledge to make a project of their own.
An example of the PRIMM methodology applied in a Scratch project.
The PRIMM methodology applied in a Scratch project.

This approach makes a lot of sense when used with Scratch. Rather than dive into creating a project, students and teachers explore and investigate an existing project, as a group. Open ended questions can guide this exploration. What do you think this project does? What does this block do? What do you think would happen if we changed the order of the blocks? How about if we changed the value of the parameter in this block?

These types of questions allow students to explore key coding concepts, such as if commands, user inputs and repeat blocks. Tracing and testing code are important skills for all budding coders to develop. It encourages them to consider each instruction and what it’s doing. When students move to a text based language, such as Python, they’ll encounter bugs which prevent their project from running. Building skills of reviewing code, understanding what each step does, and fixing things when they don’t work will benefit your students as they continue their coding journey. Indeed, research has shown that students who struggle with coding after completing an introductory coding course are often lacking the code reading skills, which are a pre-cursor to the problem solving skills required to create digital solutions.

We’ve implemented aspects of the PRIMM approach in our online Scratch challenges. We love the freedom and creativity of Scratch, and we also want to provide more scaffolding for teachers when they use Scratch in their classroom. Our challenges get students to explore coding blocks, predict outcomes, follow step by step instructions, answer checkpoint style questions and create projects strongly connected to the Australian Curriculum.

We’ve also produced a range of other Scratch resources for teachers such as an example PRIMM approach and a project which sets out examples of the key coding concepts in our curriculum.

We’d be interested to see how schools around Australia are using Scratch with their students. With over 20,000 enrolments in our own Scratch challenges, we know Scratch has a real following and popularity amongst teachers. Our challenge is to use it effectively in the limited time we have with students to set them up for coding success now and in the future.

You can access all of Grok Academy’s Scratch resources, including the original webinar and online coding challenges at grokacademy.org/a/resources#scratch.

--

--