Developed by the Media Lab of the Massachusetts Institute of Technology (MIT), the goal was to make programming easier and more fun to learn, particularly for children.
A computer program is a set of instructions that tells a computer what to do. These instructions are written through the use of a programming language. Most program languages are text-based. Computer commands are written in what might appear to be a cryptic form of index, some languages being more or less intuitive than others.
Scratch is a visual programming language. With Scratch, users do not have to type any complicated commands. Rather, they connect graphical blocks together to create programs.
Scratch is far more than a plaything for children, however. The benefits of learning programming and the concepts of computer science in the elementary and middle school grades have aptly demonstrated. Scratch teaches computational thinking to children, as well as young adults.
By learning to program in a manner that becomes intuitive and fun for them, children become creative learners, able to explore new ideas through the use of a powerful tool. Not only are they able to create games and other programs and applications that can be run on a computer, tablet device, or smartphone but, in the process, they learn to analyze their own thinking, given that this is the only way to program a computer. Through these activities, they learn to break complicated problems down into smaller problems that can be solved. This new way of thinking is computational thinking.
Scratch is entertaining and fairly easy to learn, yet it is a powerful programming language, one that contains all of the aspects of basic programming in a friendly, graphical interface.
There are three main sections to the Scratch interface, a staging area, blocks palette, and a coding area.
The stage area is where the results are shown, which may be turtle graphics, sprites, or animations, either in normal or reduced size, with a full-screen option available. The stage area uses x and y coordinates, with 0,0 being stage center.
The block palette is an area of the GUI located between the stage area, sprite pane, and scripting area. The blocks are located to the right of the categories.
By selecting the Code tab in the upper area of the Scratch program, the block palette is opened. It includes every block that has been built into Scratch.
Also known as the scripts area, the code area is on the left side of the project editor. This is where scripts are assembled.
Scratch uses event-driven programming, using multiple active objects known as sprites. Sprites are graphical objects that can be drawn as vector or bitmap objects in an editor that is part of Scratch, or they can be imported from external sources.
Created in 2002, each version of the language has introduced significant changes. The language and IDE have become very popular in the United Kingdom and the United States through Code Club, which is a voluntary initiative for children nine to thirteen, established through schools and other public venues. Volunteer programmers and others help to run Code Club sessions, passing their skills on to young students, who create computer games, animations, websites, and other applications. Code Clubs also teach HTML, CSS, and Python, as well as some other languages.
Scratch is taught in hundreds of schools and colleges, and is used in the first week of Harvard University's introductory computer science course.
On the official Scratch website, members share their projects and receive feedback. Member projects can be uploaded directly from the development environment, and any member can download full source codes. The site also sponsors Scratch Design Studio competitions from time to time.
Although the Scratch Design Studio site only runs the current version, offline editors are available for earlier versions, and can be used to create and run games locally.
Teachers using the language have their own online community, known as ScratchEd, which is supported by the Harvard Graduate School of Education.
In 2014, ScratchJr was released for the iPad, and a version for Android devices was available by 2016. Although ScratchJr was co-led by Mitch Resnick, the primary designer of Scratch, it is a complete rewrite intended for children as young as five.
A more advanced visual programming language inspired by Scratch is Snap!. Originally known as BYOB, Snap! is covered in its own category here.
The focus of this category is on the Scratch programming language and IDE, and topics relating to ScratchJr may be listed here as well. Scratch user groups, tutorials, guides, and any tools designed to facilitate Scratch programming are appropriate for this category.
 
 
Recommended Resources
Benz Magazine is a bi-monthly magazine published six times a year, featuring topics related to computer science and software programming for kids, parents, teachers, and adults who want to have fun with technology. Published in the September 2014 issue, Tim Slavin reviews the Scratch programming language and community, including a discussion on what makes it special, how it is used and links to several other online resources.
https://www.kidscodecs.com/scratch-language/
Irish Software Engineering Research Centre: Scratch
The Irish Software Engineering Research Centre (Lero) has developed Scratch lesson plans to teach software development to students as part of its education and outreach program to encourage students to learn about computing and software development. Its courses that are open for enrollment are featured, along with course requirements and resources, registration data, and competition schedules and details.
http://www.scratch.ie/
Lynda.com: Scratch Training and Tutorials
Teaching Scratch programming, from beginner basics to advanced techniques, using online video tutorials taught by industry experts, the site includes a two-hour, eighteen-minute video on learning Scratch, by Todd Perkins, as well as a forty-one minute, twenty-seven-second video that defines the enhancements available in Scratch 3.0, comparing it with the previous version, by Deepa Muralidhar.
https://www.lynda.com/Scratch-tutorials/
Based on Scratch and Arduino code, mBlock is a STEAM programming software tool designed to teach programming to kids, supporting block-based and text-based programming languages. With mBlock, children can create games and animations by dragging blocks or through the use of Python code, and can also code robots or boards to do whatever they can imagine. Downloads include mBlock for Mac and mLink for Mac, the latter being a web device driver. An online store offers hardware.
https://www.mblock.cc/en-us/
S4A is a Scratch modification that allows for simple programming of the Arduino open-source hardware platform, providing new blocks for managing sensors and actuators connected to Arduino, as well as a sensors report similar to the PicoBoard one. Like Scratch itself, the goal is to attract people to programming and to provide a high-level interface to Arduino programmers. Its interface is described and shown in screenshots. Technical details and documentation are included.
http://s4a.cat/
Hosted by the Massachusetts Institute of Technology (MIT), where the programming system was developed, Scratch is an online programming language and the environment in which members, known as Scratchers, can program interactive stories, games, animations, and other applications, and share them with other members of the online community. A project of the MIT Media Lab's Lifelong Kindergarten Group, Scratch is provided free of charge.
https://scratch.mit.edu/
Established in 2013, the non-profit organization's mission is to ensure that the development and dissemination of Scratch continue on into the future, so that children from all backgrounds can have access to the learning opportunities and technologies offered by the programming environment. Its history, an overview of what the organization funds and opportunities for others to contribute to the work are featured. A blog and an online store are available.
https://www.scratchfoundation.org/
Created and maintained largely by members of the Scratch community, known as Scratchers, the Wiki offers support information, designed to aid in the programming efforts of others. Scratch news is posted to the site, along with current events, tutorials on scripting, drawing, and animation, and other topics related to the programming system, such as information about blocks, project types, and programming tools.
https://en.scratch-wiki.info/
ScratchJr is an introductory programming language for children age five through seven, encouraging them to create their own interactive stories and games. Inspired by Scratch, ScratchJr is available as a free application for iPad and Android tablet devices, maintained as a collaboration between the DevTech Research Group at Tufts University, the Lifelong Kindergarten Group at MIT, and the Playful Invention Company. Press information and videos are included.
https://www.scratchjr.org/
ScratchX is a beta site, featuring experimental extensions of the Scratch programming language and system, on which users can create Scratch projects that connect with external hardware, such as electronic devices and robotics, and online resources that include web data and web services. Anyone can access and play with the beta extensions, and connect with hardware like Arduino and Raspberry Pi, while developers can use ScratchX to create and test new extensions.
https://scratchx.org/
Udemy is an online provider of courses on a variety of technical subjects, including programming, offered for individual improvement and business training. Successful completion of the course includes a certificate of completion and full lifetime access to program materials. Its Scratch programming course teaches students to program thirteen different video games, animations, and art projects, and to use the Scratch editor.
https://www.udemy.com/course/scratch-programming/