What is Scratch?
Scratch is a programming language originally developed to teach young people how to program, by the Lifelong Kindergarten Group at the Massachusetts Institute of Technology (MIT) Media Lab, since 2003. Scratch allows users to program their “own interactive stories, games, and animations” (Scratch website). Programming in Scratch involves visually arranging color-coded blocks, much like puzzle-pieces, that represent common programming constructs. This allows students to focus on actual programming concepts rather than on syntax, thus reducing the learning curve in learning how to program. Scratch is free of charge and can run on Windows, Linux and Mac OSX platforms. It can be downloaded from the Scratch website: http://scratch.mit.edu, or one can use a newly launched browser-based version of the software, directly through the Scratch website. In this paper we will take a look at how Scratch works, who uses Scratch and why it is a viable tool for teaching computer programming, and other skills, not only for young children, but also, to any newcomer to the subject at any age.
Figure 1: Scratch Website
Features of Scratch
Although other computer languages exist for the purpose of teaching children to program, such as Alice and Squeak Etoys, Scratch is more intuitive, more user friendly, and more multimedia rich. Here are some of Scratch’s features:
1. Building-block programming: Scratch is “tinkerable”. It makes it easy, even for children, to create complex computer programs just by dragging, dropping and arranging graphical blocks, much like LEGO pieces. (Maloney et al, 2004) Children can play with the blocks arranging them in different combinations to see what result they get, all in a playful, relaxed way. Scratch is very interactive and users can get immediate feedback in real time to see how their “code” works, just by clicking on a stack of blocks. (Resnick, 2009)
- Simple and crash-proof: Scratch “programming blocks” are designed to snap together only when the syntax is right. This eliminates the need to recall complex specific language syntax and thus “lowers the bar” to learning programming. It also eliminates the frustration of getting “compile errors” experienced in using other traditional languages., To make things easier for the young programmer, loop structures like “repeat” are C-shaped which indicates to the user that blocks (statements) to be repeated have to go inside. Also, different data types have different shapes, to eliminate data type mismatches.
- Media manipulation: Scratch is big on developing multimedia application. It contains a library of “code-blocks” which are specifically designed to handle animation, graphics, music, and video right out of the box. This in itself is an asset to help users create personally meaningful projects. Scratch users can easily add music clips, import their own photos, record their own voices, even design their own graphics, and incorporate any or all of that into their projects.
- Diversity of projects: Scratch makes it possible to create different types of projects such as stories, games, animations, cards, slide shows, scientific simulations, cartoons, or anything one can imagine. So no matter what one’s interests are, he / she can still create a project with Scratch about whatever is of interest to him / her.
- Sharing and collaboration: Scratch online community provides an opportunity for Scratch users to share their projects, collaborate and comment on each other’s work.
Sharing is a built-in feature within the Scratch user interface. It is easy for users to share / upload their projects at any time by clicking on the “Share” button. Once a project is shared, other Scratch users can run the project within their browser, choose to see the code, or even download the project itself so that they can “remix” it or edit it as they please. The idea of sharing helps nurture the spirit of collaboration among users. It also fosters a sense of pride of one’s accomplishment, by seeing their work on the site, and even reused or remixed by other users. The site encourages that users download, revise or “remix” other user’s projects. Top Remixed projects are featured in a special section on the Scratch website, with a link back to the original project, in order to let the original creator feel proud that his project was adapted and thus gets credit for it. (Resnick, 2009)
Being able to browse different categories of projects on the Scratch website serves as a source of inspiration and motivation so users can get new ideas and feedback from other users on their own projects.
Notice in7 Figure 2 below how shared projects are grouped by categories such as “Animations,” “Games,” “Music,” etc. or a user can search by Tags as well.
Figure 2: Scratch Explore Projects page
Who uses Scratch?
Scratch was originally designed for children ages 8 to 16, and according to the scratch website statistics, the greatest number of users are indeed between the ages of 8 and 16, with a peak at age 13 (see Chart 1), but it is also used by adults up to age 80. Scratch have been translated into over 40 languages, and it is used in more than 150 countries. As of November, 2013, the Scratch online community had 2,237, 986 registered members, and over 4,227,052 projects have been shared on the Scratch website, where more than one project gets uploaded every minute. (Scratch website statistics, 2013). See Chart 1 below:
The use of Scratch in education
Scratch is currently being used in K-12 schools and in leading universities across the world.
David J. Malan, a Harvard professor, uses Scratch in his undergraduate computer Science course.
Scratch offers a better first experience than most programming languages like C and Java, Malan says, which require students to learn arcane syntax to do even the most basic functions. Scratch “frees up the student from the distractions of syntax to focus on concepts and goals,” he adds. (Malan, 2007)
Another Scratch website – ScratchEd (see Figure 3 below) has been created for the educational community, to enable educators to share their ideas and experiences, so they can incorporate Scratch in innovative ways in their curriculums.
Karen Brennan, developed a Scratch guide for educators based on four years of Scratch educator workshops and research. The guide “provides an introduction to creative computing with Scratch, using a design-based learning approach.” It is geared towards having students create, design and interact with computers rather than just use them.
The guide lists activities to explore computational concepts, practices, and perspectives. (Brennan, 2011)
Here is a sample curriculum for using Scratch to creatively explore different topics, while learning computational concepts:
|Introduction||Students are introduced to creative computing and Scratch, through sample projects and hands-on experiences.|
|Art||Students create projects that include music, dance, drawing and design.Students learn loops, iteration, sequence and other concepts.|
|Stories||Create projects that include characters, scenes and narrative.Learn parallelism and events,|
|Games||Develop games and learn about goals and rules.Learn conditionals, operators, testing, and debugging.|
|Final Project||Develop individual projects, and presentations.|
Table 1: Sample Scratch Curriculum
Mitchel Resnick, one of the creators of Scratch and director of a research group at MIT’s Media Lab, hopes that Scratch will bring a “childlike sense of discovery” to the teaching of computer science. “We found that some of the best learning experiences happen in kindergarten,” Mr. Resnick says. “And we found out why — it’s because kids in kindergarten spend a lot of time designing and creating things — whether it’s making a tower out of wooden blocks or making a picture with finger paints and crayons — and they learn a lot in the process.
“Unfortunately, that approach to learning — learning by designing and creating, and playfully making things — generally goes away when you graduate from kindergarten,” he says. Scratch, in other words, is essentially a grown-up set of blocks. (Resnick, 2009)
Dr. Young-Jin Lee, Assistant Professor of Educational Technology at the University of Kansas, believes that Scratch can “provide an excellent platform for education researchers and practitioners to develop creative, enjoyable, interdisciplinary curriculum materials.” (Lee, 2011)
Scratch has also been used to enhance the development of Information Technology fluency of young children in economically disadvantaged communities. (Peppier & Kafai, 2007)
As we have seen, Scratch is not just to teach kids computer programming per se, it is about developing the children’s abilities to think logically and systematically; to create, design and build meaningful projects using technology.
How does it work? Use the Scratch IDE
Programming in Scratch involves dragging and dropping graphical “programming blocks” to a script” area, (See Figure 4 below)
Figure 4: The Scratch IDE Version 1.4
There is a visual block menu to choose from:
Figure 5: Menu of different Scratch Blocks Categories
The blocks are colored according to their category, for example “Motion” blocks are colored blue, “Control” blocks are colored orange, etc. (See Figures 6 and 7 below):
Figure 6: Blue “Motion” Block List
Figure 7: Orange “Control” Block List
“Hello World” program Example
Here is how “Hello World” is built in Scratch”
Computing Concepts Examples in Scratch
Conditions: a condition is a statement that must be true in order for something to happen. Here is an example of an “if”, and an “if, else” statements in Scratch:
Figure 10: Conditional Statements
Notice that conditional “if” statements take a hexagon-shaped block, meaning a Boolean
Is required, since Booleans are represented by hexagon shapes.
Loops: A loop can cause multiple (or endless) executions of statements In Scratch, loops are C shaped blocks that are labeled “forever”, “repeat” or “repeat until”
Figure 11: Loops
Variables: In Scratch, variables are represented with blocks which are shaped like capsules, and are uniquely labeled by the user
Figure 12: Variables
Boolean Expressions: In Scratch Boolean Expressions are shaped like elongated hexagons.
It is either true that the mouse button is down or it is false
It is either true that some number is less than another number or it is false
What’s missing from Scratch?
Scratch does not support all programming constructs and concepts. (Malan, 2011)
For example the following are missing from Scratch:
- Inheritance and polymorphism, which allow relationships to exist among classes.
- Return values, which allow one sequence of blocks to “return information” to another.
- Methods, which allow you pass control from one sequence of blocks to another.
But I think this is a good thing in that it eliminates some of the complexities of computer programming found in other languages. Scratch is meant as an introductory language for beginners, and can be a stepping-stone towards more advanced high level languages such as C++ and Java.
The Future of Scratch
Scratch is growing rapidly as a language and as a community. The people behind scratch are constantly working to make scratch even “more tinkerable, meaningful, and social”
Scratch developers are working to create a mobile version of scratch that can run on multiple mobile platforms including iPhones and Android devices.
Other plans include developing a Scratch Sensor Board, which can sense and react to physical events. (Resnick, 2009)
Scratch is an innovative educational product, which offers is a simple, intuitive and fun environment, for the young and old alike, where the basic principles of programming can be practiced without the complication of syntax. Scratch is a step in the right direction to make programming available to a wider audience.
Scratch can also be used by educators to develop creative, interdisciplinary educational material, “making school subjects that were considered boring and difficult more meaningful and engaging.” (Lee, 2011)
I do encourage educators as well as parents to try Scratch on their own and think of ways to use it creatively to enhance their teaching paradigms.
Brennan, Karen. CREATIVE COMPUTING a design-based introduction to computational thinking. ScratchEd Team. September 23, 2011
Lamb, Annette, and Larry Johnson. “Scratch: Computer Programming for 21st Century Learners.” Teacher Librarian 38.4 (2011): 64,68,75. ProQuest. Web. 29 Nov. 2013.
Lee, Young-Jin. “Scratch: Multimedia Programming Environment for Young Gifted Learners.” Gifted Child Today 34.2 (2011): 26-31. ProQuest. Web. 29 Nov. 2013.
Malan, D. J., & Leitner, H. H. (2007, March). Scratch for budding computer scientists. Paper presented at ACM Special Interest Group on Computer Science Education annual conference, Covington, KY.
Maloney, J., Burd, L., Kafài, Y, Rusk, N., Silverman, B., &Resnick, M. (2004, January). Scratch: A sneak preview. Paper presented at the second International Conference on Creating, Connecting, and Collaborating Through Computing, Kyoto, Japan.
Peppier, K A., &Kafai, Y B. (2007). From SuperGoo to Scratch: Exploring creative digital media production in informal learning. Learning, Media and Technology, 32, 149-166.
Resnick, Mitchel, et al. “Scratch: Programming for all.” Association for Computing Machinery. Communications of the ACM 52.11 (2009): 60. ProQuest. Web. 29 Nov. 2013.
Scratch website. http://scratch.mit.edu/about/
ScratchED website. http://scratched.media.mit.edu/