Why teach Scratch?

Why teach game programming?

There is increasing need for people, other than professional programmers to have some programming ability, for example adding some code to an Excel spreadsheet or Access database. Knowledge of programming concepts can help people understand how software packages work and make effective use of software even when no actual programming is required.

The educational value of game programming extends beyond providing an easy and interesting introduction to programming. Students learn about ICT, media and communication. Programming requires logical thinking, critical reasoning, problem identification and solving skills and persistence. Game programming develops knowledge of systems concepts e.g. coordinating timing and interactions between “sprites”, sensing and feedback.


Constructivism is the widely accepted theory that learning occurs when individuals reflect on their experiences and construct a personal understanding. Knowledge cannot simply be transmitted by a teacher or absorbed by a student. Learning is a continual process of integrating new information with existing knowledge and reconstructing individual understandings.

Papert built on Constructivist ideas of learning by hands-on experience to develop the Constructionist theory that the most effective learning experience is constructing a meaningful product. Sharing the product is also important as it forces the learner to think deeply about the subject and how to best convey the information. Papert worked on developing the Logo programs and with the Lego Company to develop Lego robotics. Scratch is one of the many programming tools subsequently developed to support Constructionist learning.

Why choose Scratch?

Scratch is fun!

This project was done during the school holidays and had to be enjoyable. I also believe that there are many benefits to learning in a fun environment. Children are motivated and see learning as a satisfying enjoyable experience. Students engage with learning better when they are intrinsically motivated. Completing Scratch projects requires persistence but because students are working on projects that interest them, they are motivated to overcome challenges and frustrations.

Scratch is easy

The Scratch language and the development environment are designed to be intuitive and easily learned by children without previous programming experience. Frustration involved in getting started is minimal because writing a first animation is easy but the more advanced features offer scope for experienced users to write complex games and animations.

Scratch is based on sprites which can be moved and manipulated. Code fragments are represented by coloured blocks that are organized into 8 groups: movement, looks, sound, pen, control, sensing, numbers, and variables. The blocks are dragged into the scripts area to make scripts for each sprite. Syntax errors are avoided because the blocks are shaped to click together with appropriate blocks. When testing, variables can be displayed to assist in debugging and understanding how the scripts are working. Variables and blocks can be changed while the program is running.

Scratch is creative

Scratch encourages creativity, both thinking of ideas for projects and finding ways to overcome difficulties in implementing them. Many different types of projects can be done. Music can be added to Scratch or even written within Scratch. Photos and graphics can be imported and edited.

Scratch encourages sharing

Completed projects, including code, can be uploaded to the Scratch website where they can be viewed by anyone. Scratch users can download the code and modify or extend it to make their own project or to learn new techniques. There also forums and opportunities to add comments, etc.

Scratch is free and readily available.

Scratch can be downloaded for free. It has minimal system requirements and downloading and installation is quick and easy. There are many tutorials and other resources available online. This means that students, who learn Scratch in school or other lessons, can continue to work with Scratch and teach themselves at home.

What skills does Scratch teach?

The report Learning for the 21st Century produced by the Partnership for the 21st Century identifies nine types of learning skills divided into three key areas: Information and Communication Skills, Thinking and Problem Solving Skills and Interpersonal & Self-Directional Skills.

The document Learning with Scratch, 21st Century Learning Skills written by the creators of Scratch highlights the ways Scratch supports the development of these 21st Century learning skills.

See also these summaries from the official Scratch website: Learning with Scratch Creating with Scratch Programming with Scratch
Rethinking Learning in the Digital Age Technological FluencyLearning by Designing (PDF) Research papers about Scratch

What programming concepts does Scratch teach?

Scratch supports these concepts: sequence, iteration (looping), conditional statements, variables, threads (parallel execution), synchronisation, real-time interaction, boolean logic, random numbers, event handling and user interface design.

Scratch currently does not support data structures (arrays, etc.), procedures and functions, recursion, inheritance, defining classes of objects, exception handling, parameter passing and return values, text input and file input/output.
see Programming concepts supported by Scratch