From UBC Wiki

Authored by Colin Kam - March 2013.
Revised by YooYoung Lee - March 2014

File:Scratch Cat.png
Mascot: Scratch Cat
Slogan: Imagine, Program, Share

Scratch is a 2-D learning environment that allows young learners and novice programmers to create graphical computer programs without the need to learn written syntax required in many programming languages. The program is designed by Mitchel Resnick and developed by the Lifelong Kindergarten group of the MIT Media Lab. Rather than scripting codes by typing and memorizing commands, codes in Scratch are created in a graphical environment by dragging and dropping blocks of commands into a scripting area. This programming language appeals to educators because it allows learners without complete mastery of written language to create digital stories, animations and games through playful and creative experimentation. Completed projects can also be shared with peers through the Scratch website.[1][2]



When personal computers were first introduced in the early 1980s, there was trend to teach programming to all learners. Schools taught millions of students to write simple programs in LOGO or BASIC. Papert (1980) presented LOGO as a cornerstone for rethinking approaches to education and learning.[3] Some learners and teachers were energized and transformed by these ideas but most schools soon shifted to other uses of computers. In the past 20 years, few children learn to program as most people view computer programming as a technical activity, appropriate only for a small segment of the population.[4] Resnick et al. (2009) identified three factors that discouraged learners from studying programming:

  • Early programming languages were too difficult to use. Many children had difficulty mastering the syntax of programming.
  • Programming was often introduced with activities (generating lists of prime numbers, or making simple line drawings) that were not connected to young people’s interests or experiences.
  • Programming was often introduced in contexts where no one had the expertise needed to provide guidance when things went wrong – or encourage deeper explorations when things went right.

Papert argued that programming languages should be easy to get started with and have opportunities for increasingly complex projects over time. However, in addition to this, Scratch developers also believe that languages need to supporting many different types of projects, so that people with different interests and learning styles can all become engaged. In recent years, newer programming languages--such as Flash/ActionScript, Alice, and Microworlds--have been used to introduce programming to young learners. Inspired by these programming languages, Scratch established three core principles to its design: it needed to be more tinkerable, more meaningful, and more social than its predecessors.

Software Release

First Version

The first version of Scratch was developed in 2006 by the Lifelong Kindergarten group, led by Mitchel Resnick, at the MIT Media Lab. Resnick is also known for his involvement in award-winning LEGO Mindstorms and StarLogo software, as well as the $100 laptop project.[5] The goal of the Scratch project is to engage young learners and novice programmers into the world of programming while they informally learn procedural programming and object-oriented programming concepts. Resnick visioned Scratch to be a tactile and visual programming language that allows children to explore by dragging and dropping blocks of conditions, parameters, and consequences onto sprites and backgrounds. These command blocks could easily be tested visually by clicking on them and could be sequenced by snapping multiple blocks together. Because projects may be shared online, young learners can edit and remix existing projects to create newer versions.

Current Version

Version 2.0 of offline Scratch is currently available as a desktop for Windows, Mac OS X and Linux.[6] The source code of Scratch 1.x is made available under GPLv2 license and Scratch Source Code License.[7] The previous version of Scratch, version 1.4, is still available for download.

The new Scratch 2.0 (as May 9, 2013) is available online as a web 2.0 application. It runs on any web browser that supports Adobe Flash 9 or higher, including Android devices. iOS devices such as the iPhone and iPad are currently not supported.

User Interface

The Scratch graphical user interface (GUI) is divided into four main panes:

File:Scratch Interface.png
Scratch Interface (GUI)
1. Blocks Palette
2. Script Area
3. Sprite Area
4. Stage
  1. Blocks Palette (left): This area provides a list of commands that includes blocks of conditions, parameters, and consequences. The palettes are organized into eight color-coded groups of blocks.
    • movement (dark blue)
    • looks (purple)
    • sound (pink)
    • pen (dark green)
    • control (orange)
    • sensing (blue)
    • operators (light green)
    • variables (dark orange)
  2. Script Area (center): Commands from the blocks palette may be dragged and dropped to this area so that multiple sequences of commands may be executed for each sprite (character or object) and stage (background). This area also allows the programmer to add or modify costumes (for animation) and sounds. Each sprite and stage has its own script area, costumes, and sounds depending on the sprite or stage selected.
  3. Sprite Area (bottom right): This area allows the programmer to select a different sprite or stage, in addition to creating new sprites and importing existing sprites.
  4. Stage: This area is where the scripts for the sprites and stages are visually executed.

Scratch Audience

In March 2014, 4,907,169, projects shared and 2,838,962 users registered. Age groups are between 4 years old and 80 years old. The following map shows how Scratch users spread out through out the world[8]

Scratch Core Design Principles

Three core design principles for Scratch aim to make it more tinkerable, more meaningful, and more social than other programming environment.[4]

  • Make programming more tinkerable
Scratch programming blocks are designed for playing like Lego blocks. Children can snap the programming blocks together to create projects. Young students start programming by tinkering with the Scratch blocks and figuring out what happens when the blocks are snapped in different order. That is how children learn to build programs in creative, interactive and playful ways.[4][9]
  • Make programming more meaningful
People learn best, and enjoy the activities the most, when projects are personally meaningful to them. Therefore, Scratch provides diversified projects (stories, games, animations and simulations) and personalized programming experience by letting people add personalized content and promoting active participation in the design process.[4]
  • Make programming environment more sociable
The Scratch environment encourages people to share their work in public and collaborate projects. The scratch website became a lively online community whose members talk about the value of sharing ideas and code samples, remixing content from shared projects, and work collaboratively in social context. [4]

Scratch As Educational Tools

Scratch is designed with learning and education in mind. By creating and sharing projects in Scratch, young learners develop important design and problem-solving skills by learning how to think creatively, reason systematically, and work collaboratively.[10] The Lifelong Kindergarten group initially designed the Scratch platform and the online community to extend the kindergarten learning approach (Imagine -> Create -> Play -> Share -> Reflect->Imagine) for young learners. However, the same approach can be utilized to teach learning groups at any age. Resnik(2012) argued that the kindergarten learning approach can be applied to any learning environment to increase motivation and creativity.[11] Educators have used Scratch in their classrooms for digital storytelling, animation, game design, simulation and computing from the elementary to the post-secondary levels. The Center of Talented Youths at John Hopkins University offers an online Scratch course for Grades 6-12 students interested in programming.[12]

Design Principles in Educational Perspective

Scratch is devised to promote learning-by-designing approach inspired by constructivismconstructivism and constructionismconstructionism, and 21st century learning skills.

File:Learning by Design.png
Learning by Design

Learning by Design

Research has shown that people learn best not when they participate passively - receiving information or simply interacting with content - but when they participate actively – exploring, experimenting, and expressing themselves and designing, creating and inventing with materials.[13] The ultimate educational goal of Scratch is not simply learning-by-doing; it is learning-by-designing.[14] The learning-by-designing approach is inspired by constructivism and constructionism.[14] Scratch design projects:

  • Allow learners to control their learning process and take responsibility for their learning.
  • Encourage creative problem-solving
  • Promote interdisciplinary study process – gathering ideas from math, art, technology and so on
  • Provide opportunities for reflection and collaboration, and
  • Encourage learners to search for new ideas.

Designing 21st Century Learning Skills

File:21st century learning.png
21st Century Learning Skills

According to Scratch developers, Scratch promotes the nine types of 21st century learning skills identified by the partnership for 21st Century Skills ([15]; these skills include: information and technology skills, learning and innovation skills, and life and career skills.

Information and Media Literacy Skills

Students acquire digital literacy - select, create, and manage multiple forms of media, including text, images, animation, and audio recordings – by creating Scratch projects.[16] As students gain experience creating media, they become more perceptive and critical in analyzing the media they see in the world around them. [15]

Learning and Innovation Skills
  • Communication skills - Scratch engages young people in choose, manipulate, and integrate a variety of media in order to express themselves creatively and persuasively.[15] Scratch allows students to experiment with new forms of self-expression through programming.
  • Critical Thinking and Systems Thinking - as students learn to program in Scratch, they become engaged in critical reasoning and systems analysis. The ability to program objects (sprites) interactively provides students with first-hand experience with interdependence, inputs and outputs, and other fundamental systems concepts. [4]
  • Creativity and Intellectual Curiosity - Scratch encourages creative thinking, an increasingly important skill in today’s rapidly changing world. The platform challenges young people to seek innovative solutions to novel problems and prepares them to come up with new solutions as new challenges arise. [15]
  • Collaborative and Interpersonal Skills - The Scratch programming code is more readable and shareable than that of other programming languages because Scratch programs are built with graphical blocks. The visual objects and modular code blocks supports collaboration and enable students to work to exchange objects and code.[15]
  • Problem Identification, Formulation & Solution - Creating a Scratch project requires generating an idea, then figuring out how to break the problem into steps and implementing them using Scratch programming blocks. Scratch is designed to be “tinkerable”: students can dynamically change pieces of code and immediately see the results. Throughout the design process, students engage in experimenting and iterative problem-solving.[15]
Life and Career Skills
  • Self-Direction - Taking an idea and figuring out how to program it in Scratch requires persistence and practice. When people work on project ideas they find personally meaningful, their ideas provide internal motivation for overcoming challenges and frustrations encountered in the design and problem-solving process.[17]
  • Accountability and Adaptability - When students create Scratch projects, they have to consider the audience and need to think about how other people will react with and respond to their projects. Since Scratch projects are easy to change and revise, students can modify their projects based on community feedback.[15]
  • Social Responsibility - Because Scratch programs are shareable, students can use Scratch to initiate discussions of important issues with other members of their immediate learning environment, as well as with the wider international Scratch community.[15]

Educational Research

Resnick et al. (2009) suggested that digital fluency should include "designing, creating, and remixing" rather than only "browsing, chatting, and interacting."[4] These are higher-order skills that digital natives need. Scratch provides the tools and the media for young learners to master and express these 21st-century skills.

Other research also indicate that programming in Scratch can reduce learning anxiety in programming courses[18], increase female engagement in computing[19], and encourage creative problem-solving skills[20]. Advocates suggest that individuals who use Scratch at a young age develop a solid foundation of knowledge that can help prepare them for the use of higher level programming languages.[21]

ScratchJr Research Project in K-2

The ScratchJr project targets the development and research of innovative technologies applied to digital creation and computer programming, and curricular materials to support integrated STEM (science, technology, engineering, and mathematics) learning in early childhood education (K-2).[22] Currently, the project is in phase 3. Preliminary findings show that grade level differences in learning ScratchJr existed in the quantity of programming concepts and blocks learned over the same time period and in the complexity of concepts that were accessible. For example, first and second graders tended to learn how to navigate the interface quicker than the kindergarteners. That allowed first and second graders to focus more on programming. The research concludes that the public deployment of ScratchJr combined with appropriate curriculum and online community will provide young children with a potent new educational tool for digital media creation. Teachers and parents can use such a deployment as an implementation guide for the platform in diverse areas of early childhood education.

Scratch in K-12

In one study, Maloney et al. (2008) observed programming experiences of urban learners ages 8-18 at an after-school center over an 18-month period.[17] Learners worked on various projects including animation and video games of different genres. Learners agreed that Scratch was easy to learn yet versatile enough to create different projects; they also noted that the graphical interface allowed them to test commands and see results right away. By hypothesizing and testing, these learners constructed new knowledge through a game-based learning approach. The study showed that these learners were engaged in the learning of key programming concepts, even in the absence of instructors and experienced mentors.

Scratch in Higher Education: Harvard

Scratch is used in Harvard's introductory computer science classes to introduce object-oriented programming concepts[23]. Even though Scratch was designed for younger learners, Malan and Leitner (2007) found remarkable potential in this programming environment for higher education. This learning environment "allows students not only to master programmatic constructs before syntax but also to focus on problems of logic before syntax." After transitioning from Scratch to Java, most students (76%) felt that Scratch was a positive influence, particularly those without prior background. Those students who felt that Scratch was not an influence (16%) had prior programming experience.

Applications in Education

The applications of Scratch can extend beyond programming classes.

Math and Science

Scratch can be used for demonstration of mathematical proofs, computation of mathematical formulas, and simulation for scientific concepts. Scratch can also be used to describe observable physical behaviors. For example, students can be challenged to recreate projectile motion of a trajectory. In such case, Scratch supports Cognitive-Construction learning theory by actively constructing knowledge through observing, hypothesizing, testing, reflecting, and retesting.

Examples & Resources

Click on the link to be redirected to the Scratch project and resource.

Language Arts and Humanities

Scratch can be used in language arts and humanities as a tool for digital storytelling. Even though there are simpler digital tools such as Pixton and ToonDoo, Scratch offers more features and more versatility as it can have animation, voice-overs, and interactivity as well. For example, students can tell a digital "Choose your own adventure" story using Scratch. Because the project can be shared on the Scratch website, stories can be modified and remixed by another Scratch member. Through social collaboration, more choices and more depth can be added to the original gamebook story.

Examples & Resources

Click on the link to be redirected to the Scratch project and resource.

Special Education

Scratch can be used in special education as learning tools for students with learning or behavioural disabilities. The imaginary Worlds Camps (IWC) reported[24] that "many students with learning or behavioural disabilities would find the creative and graphical aspects of Scratch to be deeply absorbing. There have been almost no behavioural problems at IWC over the years, as students find both of these programs to be very engaging."

Examples & Resources

Click on the link to be redirected to the Scratch project and resource.

Resource for Educators

  • ScratchEd: an online community where Scratch educators share stories, exchange resources, ask questions, and network.
  • Learn Scratch: video tutorials and lesson plans for Gr. 4-12
  • Scratch Wiki: wiki and tutorials
  • Scratch 2.0: web-based Scratch (requires Flash)
  • Scratch Lesson Plans: offered by the Irish Software Engineering Research Centre

See Also

External Links

Youth computing projects originated in the MIT Lifelong Kindergarten Group:

Other Educational Programming Tools

Stop Motion Links

Scratch in an Educational Environment by Trish Roffey ETEC 510 65A

Scratch Programming in Schools Natalie Roberts ETEC 510 65D Scratch in an Educational Environment by Kelly Nichols ETEC 510 65A


  1. Scratch programming language (2012). Wikipedia. Retrieved on March 1, 2013, from
  2. About Scratch (2012). Scratch. MIT Learning Lab. Retrieved from Scratch Scratch.
  3. Papert, S. (1980). Mindstorms: Children, computers, and powerful ideas. New York, NY, USA: Basic Books, Inc.
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., ... & Kafai, Y. (2009). Scratch: programming for all. Communications of the ACM, 52(11): 60-67. doi: 10.1145/1592761.1592779. Cite error: Invalid <ref> tag; name "Programming-for-All" defined multiple times with different content Cite error: Invalid <ref> tag; name "Programming-for-All" defined multiple times with different content Cite error: Invalid <ref> tag; name "Programming-for-All" defined multiple times with different content Cite error: Invalid <ref> tag; name "Programming-for-All" defined multiple times with different content Cite error: Invalid <ref> tag; name "Programming-for-All" defined multiple times with different content Cite error: Invalid <ref> tag; name "Programming-for-All" defined multiple times with different content
  5. Mitchel Resnick (2012). Wikipedia. Retrieved on March 1, 2013, from
  6. Scratch 2.0 Download. Scratch(2013). MIT Learning Lab. Retrieved from:
  7. Scratch Source Code (2013). Scratch. MIT Learning Lab. Retrieved from:
  8. Community statistics at a glance. MIT Learning Lab. Retrieved on March 3rd, 2014, from
  9. Resnick, M. (2006). “Computer as Paintbrush: Technology, Play, and the Creative Society.” Play= Learning: How play motivates and enhances children's cognitive and social-emotionalgrowth. Oxford University Press.
  10. Scratch for Educators (2012). MIT Learning Lab. Retrieved from
  11. lwf (2012, February 12). Mitch Resnick - Learning from Scratch. Retrieved March 5th 2014, from
  12. JHU (2002). Scratch programming. John Hopkins University. Retrieved from
  13. Resnick, M. (2002). Rethinking Learning in the Digital Age. In G. Kirkman (Ed.), The Global Information Technology Report: Readiness for the Networked World (pp. 32-37). Oxford: Oxford University Press. Retrieved from:
  14. 14.0 14.1 Resnick, M. (n.d), MIT Media Lab, Learning By Design Retrieved Mar.1st, 2014 from:
  15. 15.0 15.1 15.2 15.3 15.4 15.5 15.6 15.7 Rusk,N.,Resnick, M.,& Maloney,J.(n.d.). Learning with scratch:21st century learning skills. Retrieved Mar. 1st, 2014 from:
  16. Resnick, M. (2007). Sowing the Seeds for a more creative society. Learning and Leading with Technology, International Society for Technology in Education (ISTE), December/January 2007-08 (pp. 18-22). Retrieved from
  17. 17.0 17.1 Maloney, J. H., Peppler, K., Kafai, Y., Resnick, M., & Rusk, N. (2008). Programming by choice: urban youth learning programming with Scratch. ACM SIGCSE Bulletin, 40(1): 367-371. doi: 10.1145/1352322.1352260.
  18. Abas, Z. W., & Luca, J. Using Scratch as game-based learning tool to reduce learning anxiety in programming course. Proceedings of Global Learn 2010, 1845-1852. Retrieved from
  19. Kelleher, C. & Pausch, R. (2006). Lessons learned from designing a programming system to support middle school girls creating animated stories. Visual Languages and Human-Centric Computing, 165-172. Retrieved from
  20. Kabatova, M. & Mikolajova, K. Fostering creativity through programming - Scratch workshop. Informatics for Schools: Situation. Retrieved from
  21. Computer Programming (2012). Dan's ICT Blog. Retrieved from
  22. Flannery, L.P., Kazakoff, E.R., Bontá, P., Silverman, B., Bers, M.U., and Resnick, M. (2013). Designing ScratchJr: Support for early childhood learning through computer programming. In Proceedings of the 12th International Conference on Interaction Design and Children (IDC '13). ACM, New York, NY, USA, 1-10. Retrieved from:
  23. Malan, D.J. & Leitner, H.H. (2007). Scratch for budding computer scientists. ACM SIGCSE Bulletin, 39(1): 223-227. doi: 10.1145/1227504.1227388.
  24. Joel C. Adams. 2010. Scratching middle schoolers' creative itch. In Proceedings of the 41st ACM technical symposium on Computer science education (SIGCSE '10). ACM, New York, NY, USA, 356-360. DOI=10.1145/1734263.1734385