Scratch (programming language)

from Wikipedia, the free encyclopedia
Scratch
logo
Basic data
Paradigms : object-oriented

event- oriented imperative

Publishing year: 2007
Designer: Mitchel Resnick
Developer: Mitchel Resnick , MIT Scratch Team, and other developers
Current  version 3.0   (January 2, 2019)
Typing : dynamic
Important implementations : Scratch 1.x in Squeak

Scratch 2.x in Flash Scratch 3.0 in JavaScript

Influenced by: Logo , Smalltalk-80 , Squeak , Etoys , HyperCard , AgentSheets, StarLogo, Tweak, Snap! (BYOB)
Affected: Snap! (BYOB) , App Inventor
Operating system :
License : 3-clause BSD license
scratch.mit.edu

Scratch is an education-oriented visual programming language for children and young people, first published in 2007, including its development environment and the closely linked online community platform.

Goal setting

Its aim is to familiarize newcomers - especially children and young people - with the basic concepts of programming . Under the motto imagine, program, share ("think out, develop, share"), the creative and explorative creation of your own games and multimedia applications, combined with mutual exchange, is used as a motivation. The results can be played, discussed and further developed in an international online community with the scratch player free of charge and without advertising . There are also a few examples that create ideas for beginners and bring the principle of programming closer.

Origin of name

The name Scratch derives from the DJ - Scratch technology from. What they have in common with musical scratching is the easy reusability of set pieces: In Scratch, all interactive objects, graphics and sounds can easily be transferred from one to another Scratch project and recombined there (see: Remixing culture ). As a result, beginners very quickly get a sense of achievement that motivates them to deal with the subject in greater depth.

Development and implementation

Mitchel Resnick

First published in 2007, Scratch is being developed by a small research team, the Lifelong Kindergarten Group, at the MIT Media Lab under the direction of US professor of learning research Mitchel Resnick , and is largely funded by the National Science Foundation and voluntary donations.

As a student of Seymour Papert , Resnick uses digital technologies to develop learning and experimentation environments that promote the creative potential of children and young people , based on constructionist learning theories.

The first implementation of the Scratch development environment was based on Squeak (Scratch 1.0 in 2007 to Scratch 1.4 in 2009), the Scratch web player initially on Java , and since 2011 optionally also on Flash . The version Scratch 2.0 was released on May 9, 2013 and was based entirely on Flash.

The current Scratch 3.0 is based on JavaScript. There is support for touch operation for Mobile Chrome and Safari.

Development environment, internet platform, scratch player

Scratch up to version 1.4

Scratch 1.4 on Linux

The development environment can be downloaded free of charge from the Internet. Since it was created with the platform-independent Smalltalk development system Squeak , there are versions for Windows , macOS and potentially for other operating systems . The programs created with Scratch can be uploaded directly from the development environment to a personal user area on the Scratch website. There the programs can be used, commented on and downloaded by other members of the Scratch community for learning and further development. One is used to perform directly in the web browser Java - interpreter , called the scratch player.

Scratch from version 2.0

Scratch 2.0 editor

The development environment can be run directly on the Scratch website and, like the new Scratch Player, is created entirely in Flash . Download and installation are therefore no longer necessary. An offline version for download for Mac OS, Windows and some Linux versions (32 bit) is also available. Since Scratch web players are based on Java or Flash , which are not supported on Apple's mobile devices (iPhone / iPad / iPod), Scratch projects and the Scratch 2.0 development environment cannot be executed there. A separate scratch player app for these devices was already listed in the app store so that all scratch projects could be carried out there, but it was banned by Apple after a few months. An alternative is the scratch modification BYOB 4.0 / Snap! whose web player and development environment are based on HTML5 canvas and JavaScript, but which are currently only in beta and not yet fully compatible with Scratch.

Scratch from version 3.0

Programming with the scratch modification Snap! (BYOB) on the Apple iPad from Apple works without Java and Flash.

Since January 2019, the HTML5 and JavaScript-based version 3.0 of Scratch has been available. This version not only offers a few new blocks and functions, but can also be used for the first time on mobile devices such as the iPad in the standard browser.

Scratch Player for Squeak, Java, Flash and HTML5

As described above, there are Scratch Players for Squeak (offline), Java and Flash (online).

Dissemination and use

Since 2007 the scratch idea has spread u. a. due to the network effect. This created a growing community of novice programmers, schoolchildren, students, educators and hobbyists who motivate and support each other. This resulted in local groups, events, courses, translations, examples, teaching materials and much more to help novice programmers develop their creativity and knowledge. This was promoted by the intuitive operation and easy translatability of both the Scratch development environment and the Scratch website. In addition, there is successful communication and media work by the MIT Scratch team (including the worldwide Scratch Day , the ScratchEd trainer platform , the Scratch Wiki and many scientific publications, interviews and contributions in the major US media).

Internationality and translatability of Scratch

The internationality of this user community is promoted by the easily accessible multilingual capability of all Scratch platforms, with which the online community translates the development environment, the web platform and also the programming command modules into all languages, which Scratch u. a. is also available completely in German. Scratch is also used in countries with languages ​​that are not based on Latin letters and can be written from right to left, because existing Scratch projects can also be switched to such languages ​​at the push of a button. Local and / or server-based pootle technology is used for translation .

Scratch user numbers

From the beginning in March 2007 to the end of 2012, more than 1,300,000 users - with an age focus between 8 and 16 years - created a scratch online account, of which over 400,000 entered a total of more than 3,000,000 self-developed scratch projects during this time Network and wrote over 1,380,000 posts (in 13 English-language and 17 international scratch community forums). Since Scratch can also be used without a user account and the current Scratch development environment is used in many forms of teaching without the use of the web, the number of Scratch users is probably a multiple of the registered users.

Scratch to educational institutions

Scratch on a whiteboard

Scratch is used around the world in a wide variety of schools and teaching events. Schools in Germany, Switzerland, Austria and Luxembourg are increasingly using Scratch. Scratch or the Scratch-based Snap! (BYOB) is used to introduce programming, for example at the University of Berkeley for non-computer scientists or at the University of Hildesheim for students studying to be a teacher.

Scratch as a hobby

In addition to its use in educational institutions , its dissemination is promoted by many free organizations that are part of collective movements such as the German initiative Everyone can program or the American Code.org . So Scratch is also used outside of schools for hobbies and families. Many young people discover Scratch on their own in search of ways in which they can easily develop a computer game themselves and present it to others. Parents in IT- related professions in particular often use Scratch to give their children a motivating insight into the IT world at a young age. Increasingly, clubs or associations for developing the German speaking MINT -begeisterte teenagers, or for the promotion of STEM -Erziehungs-disadvantaged children from disadvantaged households (z. B. Computer Clubhouse movement in the US), which also use Scratch. In addition to such physical hobby communities, many virtual online groups of hobbyists have formed who jointly implement projects and regularly meet online to exchange ideas about their hobby.

Scratch day

The Scratch Day, which has been held annually since 2009, has made a significant contribution to spreading the scratch idea with many local campaigns, most recently on May 13, 2017 at the Alpen-Adria-Universität in Klagenfurt in German-speaking countries . The first worldwide "Scratch Day" proclaimed by the MIT Scratch team on May 16, 2009 documents this: within a few weeks, well over 100 regional organizations, such as schools or computer clubs, registered one of the local Scratch on the associated website -Day events organized. For the first German Scratch Day 2009, scratch experts from all over Germany came together in Bochum to present Scratch under various aspects to children, parents, teachers and scientists.

Scratch @ MIT conference

Scratch @ MIT is a conference for teachers, professors, researchers, developers, and anyone involved with Scratch or teaching children. At the conference experiences and stories can be exchanged, workshops attended and lectures can be heard. The conference takes place every two years (2008, 2010, 2012, 2014) at the MIT Media Lab in Cambridge, Massachusetts, USA and follows a selected motto. The scratch conference at MIT is equivalent to the newly introduced European scratch conference (2013), which always takes place in the years between the Scratch @ MIT conferences. The Scratch @ MIT conference 2014 took place from July 6th to 9th under the motto "Projects, Peers, Passion, Play".

European scratch conferences

In 2008, 2010 and 2012 interested parties were able to attend the Scratch Conference at the MIT Media Lab in Cambridge, Massachusetts. Members of the European scratcher community felt that scratchers who did not have the opportunity to travel to the US should also have the opportunity to meet other scratchers. Scratch Connecting Worlds 2013 in Barcelona was the first European scratch conference. It took place from July 25th to 27th in the premises provided by Citilab Barcelona. Educators, researchers, developers and other members of the global Scratch community take the opportunity to celebrate and share the creative possibilities of Scratch.

The seventh international Scratch conference is entitled Scratch2015AMS - Creative communities and will take place in Amsterdam from August 12th to 15th, 2015.

ScratchEd

ScratchEd is an additional online community for teachers and other educators who work with Scratch. There the members have posted several hundred materials, sources and tips for educational work with Scratch. In addition, users can exchange ideas and make contact with one another via the website. The main language is English but also in many other languages, u. A. German, materials useful for the lesson have already been deposited. The offer includes early 2013 u. a. 193 stories (i.e. reports on events) and a few hundred resources that can be used from kindergarten to college and across all faculties.

Scratch Wiki

The Scratch Wiki is a free, collaboratively written , MediaWiki- based wiki that contains information about the Scratch programming language, its websites, history, and accompanying phenomena. The wiki is supported by the Scratch team, but is mainly written by Scratchers. The Scratch Wiki is a popular source of information on scripts and how-tos that continues to grow as Scratchers use it as their first source of information. The first international sister project is the DACH Scratch Wiki in German, which is also supported by the Scratch team. The English-language Scratch-Wiki was founded on December 6th, 2008 and contains over 1400 articles, the German-language Scratch-Wiki was founded on February 8th, 2012 and contains over 750 articles. Wikis now exist in French , Dutch , Russian , Hungarian , Japanese and Indonesian .

Principles of language scope and operation

In terms of language scope and operation, high priority was placed on intuitive access and on avoiding high complexity or abstraction. Powerful functions such as multimedia elements and multitasking are faced with severe limitations in peripheral usage and language range. All elements that could hinder the intuitive entry were identified and eliminated in empirical studies. Everything that motivates the beginner, facilitates his understanding and encourages exploratory development was emphasized. Playful learning is in the foreground. In this way, even elementary school children can create their first applications and young people can quickly receive highly motivating results. But even seasoned adult programmers have joined the Scratch community. Despite the severe limitations, they respond positively to how quickly and intuitively results can be achieved, and see the limitation as a challenge to their programming skills.

properties

Scratch supports the following programming paradigms or properties that are similar to one:

  • visual - All elements from which a scratch project is essentiallyassembledusing drag and drop are represented by their intuitively understandable graphic representation, such as: B. Programming commands through block pictures, sounds through a recording / playback device image and objects through their costume image.
  • education-oriented - Scratch was not created on the drawing board, but research has been carried out over many years to determine which concepts can be intuitively absorbed by novice programmers. Anything less catchy is avoided until a catchy approach has been found.
  • object-oriented - Scratch corresponds to the programming paradigm of object-orientation with regard to data encapsulation and polymorphic message dispatch, but has neither classes nor inheritance or prototyping . A very simple object orientation is thus understandable for programming beginners: Objects are the characters that have almost only themselves as the only instance, messages are exchanged with the modules "send X to all" or "send X to all and wait" and the Head module "when I receive X".
  • imperative - A single program script made up of scratch programming blocks is imperative. It consists of a sequence of commands that dictate the order in which the computer should do what. The object-oriented aspect of Scratch only occurs when several scripts and / or several objects (characters) interact.
  • Event-oriented - every scratch script that makes up the programming of a scratch project starts as soon as the event defined in its head module occurs. In addition, the program flow can be interrupted with a “Wait until” block until an event occurs.
  • Supports parallelism - An amazing property of Scratch is that the actually complex programming paradigm of parallel programming is introduced almost on the side. In contrast to traditional education-oriented programming languages, this is also used intuitively by beginners in Scratch, so that they may later be surprised that other programming languages ​​initially only work sequentially.
  • dynamic typing - the data type of variables is not declared in Scratch and can change during execution. However, only a few types are available on the surface, namely numbers and character strings, whereby no further distinction is made between INTEGER, DECIMAL, CHAR or STRING. In addition to programmingblocksfor these variables, there is a list in Scratch, which is addressed via separate blocks. The length of lists is not agreed and their elements are again numbers, truth values ​​or strings.

Programming experience with Scratch

Scratch 2.0 development environment example
Scratch 1.4 development environment example

No typing - no syntax errors

Scratch is designed in such a way that even young children and adults without computer skills can use Scratch to have motivational programming experiences. Since it is based on an almost purely graphical surface, potential frustration factors such as a lot of typing, complicated language syntax and related errors are excluded.

Intuitive learning

The creation of scratch projects should be easier to understand when watching and trying them out than with written instructions, since in addition to text metaphors (such as stage, character, costume, building block), many intuitively understandable form and color schemes are used that are easily used by beginners without having to consciously think about it. Since the function of many elements becomes intuitively clear, their exact designations do not play an essential role in understanding, especially since these designations - due to the freely exchangeable language files - are arbitrary.

The scratch project

The Scratch development environment always processes a scratch project that consists of several multimedia elements (image files, sound files) and programs. A Scratch project is saved or read in as a single file that contains all multimedia elements, programs and start values ​​(in Scratch 1.4). In addition, the project can be published (to share) on the Scratch website with a click, or it can be downloaded from there to the development environment. As of Scratch 2.0, local installation is no longer necessary, the development environment is also online.

Pawns and stage

In a scratch project, any number of characters (objects / sprites ) act on a stage (background / stage). The characters are similar to the turtle in the programming language Logo , but have considerably more skills and properties. The characters and the stage can put on changing costumes (graphics) and play noises, drum sounds or notes. The characters can move, turn, change their size on the stage, show or hide - influenced by various graphic effects - leave traces of paint and stamp marks, speak and think (speech / thought bubbles).

Values ​​and variables

The characters have values ​​(X, Y, alignment, size, volume, speed, pen settings, ...) and additional local variables and lists that can be created and displayed on the stage if required. In addition to these local variables, global variables and lists can also be created that apply to all of the characters and the stage. The values ​​and variable assignments at the time a program is saved or published are part of the same and define the start state.

Programming and playback mode

In the play mode of the development environment and in the Internet player, you can only see the stage of the finished scratch project. In the programming mode of the development environment, the project can also be played without restriction, but changes can be made at any time and the stage only occupies part of the scratch window, which is then divided into four areas:

The stage (top left, before version 2 top right), the character selection (left bottom, before version 2 bottom right) and the building block box divided into eight colored compartments (right, before version 2 left), are three constant areas while the fourth programs / costumes / sounds area changes based on the character selection. This middle area always shows the programs, costumes, sounds and values ​​of the selected character or the stage that can also be selected. In the programs / costumes / sounds area, tabs can be used to scroll between the elements of the selected character or the stage.

Scripts from building blocks (blocks)

The programming modules in the color of the currently selected module compartment are dragged into the "Programs" tab and assembled there to form programs that are then freely adjacent to each other on the surface. Blocks that are not needed can remain without function or can be cleared away by pulling them out.

Many modules have control elements or openings into which other modules, list selections, numbers, letters or colors (selectable with a pipette) are inserted. The shape of these control elements indicates their use or indicates which modules fit together. Only what fits can be "clicked in", only existing elements can be selected in the lists. This automatically avoids many errors. The colors of the modules correspond to the "color fans" of the module box, which symbolize their area of ​​application.

Color categories of the scratch blocks

The blocks used for programming are divided into different, differently colored categories in Scratch for better clarity:

Area colour Programming blocks (examples)
Move blue go, turn, show direction, go to, slide in seconds, set X / Y ...
Appearance purple put on costume, say "", think "", change effect, change size ...
sound violet play sound, play drums, play pause, play note, set instrument, set volume, set tempo ...
Events Dark yellow when start, when key, when object is clicked
control brown wait, repeat, send when I receive, repeat if "", if "" otherwise, wait until, repeat until, stop program, stop everything
Feel Light Blue Mouse X, mouse Y, mouse button pressed, "" is touched, color is touched, stopwatch, distance from, value from object, volume, value from sensor ...
Operators Light green +, -, *, /, random number from to, <, =,>, and, or, not, mod, rounded, function of ...
variables Orange red put on, change, show, hide, add to ...
My blocks pink own blocks can be implemented here

In addition, extensions for programming with music, crayons and external devices such as the PicoBoard or Lego WeDo can be integrated.

Buttons and menus

In addition to the window areas of the Scratch development environment described above, there are also some buttons, menus and context menus (right mouse button) and associated selection boxes and editors for loading, saving, copying, creating and influencing game characters, media and projects. The most important are the green start flag and the red stop sign, with which all programs of a project are started and stopped.

Head modules, multitasking and event control

Programs always begin with one of the four head modules from the yellow control compartment, which indicates the event that starts them (click the start flag, click on your character, press a certain key or receive a certain message). By sending a message to everyone , one program can start other programs waiting for that particular message. Multitasking and event control are thus self-evident concepts that the programming beginner can grasp on the side.

Runtime, programming time, debugging

Runtime and programming time flow into one another: while a project is running with its programs, programming can continue, or if it is not running, programs can be started by clicking on them and thus tried out, which encourages the exploratory, playful approach. Running programs are highlighted with a white border and execution errors (for example division by 0) with a red border. In the single step mode, the executed blocks are also highlighted in light yellow.

Drag and drop

Programs, graphics and sounds can be transferred to other characters by dragging them and characters and programs can be copied using a button or context menu. For example, a complex simulation can only be created by creating a single game figure that is copied several times, and when it is executed the copies interact deterministically but nonetheless unpredictably.

Remixing culture

An essential (eponymous, see above) aspect of Scratch is that users can be inspired by existing media material, learn from it, combine it, change and supplement it in order to create their own works from it. These are then made available to others. The development environment already includes a large pool of sample projects, characters, graphics and sounds, which provides extensive starting material for initial beginners' experiences. This is extended by self-made or recorded image and sound files, as well as the multimedia elements or entire game figures and programs that can be taken from scratch projects that have already been published by others. The reuse of the game characters in other projects is encouraged by the fact that they can be exported from projects as a file complete with all their costumes, sounds and programs and imported into others, which often leads to executable combination projects without major adjustments. Downloading external projects, then changing and expanding them and uploading them as a separate project is referred to as remixing in Scratch and is a popular and positively rated approach. Remixing is therefore not seen as plagiarism or theft of ideas, but rather as a community experience and an honor for the person whose material is used. Remixing is supported by the fact that a project carries its origin with it and the path of the remix can be traced back to the original author on the Scratch website. A special visualization page on the Scratch website creates remixing chains and trees that can include hundreds of projects.

Further developments of Scratch

In addition to the official further development by the Scratch team, the last jump of which was the complete re-implementation with Scratch 3.0 as a Javascript application, there are a number of Scratch modifications. The unofficial extensions were created by members of the community (mostly based on the open Squeak Smalltalk source code of Scratch 1.4).

They include both teaching-oriented and purely application-oriented innovations of extremely different quality and seriousness. Some official scratch developments can also be traced back to influences from modifications . For example, the so-called lists (one-dimensional fields ) were adopted by Chirp / BYOB, which has since developed from a modification to an independent programming language with a technology base that is independent of Scratch.

S4A

Scratch for Arduino (S4A) is a scratch modification that provides a programming environment in scratch design for the Arduino microcontroller .

Panther

Panther is a popular modification of the Scratch development environment. Panther works with blocks, has two additional categories, and can convert projects into executable EXE files. The Panther website allows projects to be uploaded.

Scratch Jr.

With ScratchJr, an introductory visual programming language was released on July 20, 2014 with the aim of programming younger children from 5 years of age using a system based on Scratch to easily and playfully program their own interactive stories and games. The children can put together graphical program blocks and thus move figures. In an editor you can create and adapt your own figures or add voices and noises that can be integrated into the program blocks. This app was developed by Tufts University in collaboration with the MIT Media Lab and grants from the National Science Foundation . ScratchJr is available as a free app for Android, Apple iOS and Chromebook.

Snap! (BYOB)

Snap! , known under the name BYOB up to version 3.1.1 (English abbreviation of Build Your Own Blocks ), is an educational visual programming language based on Scratch and inspired by Scheme and thus Lisp , including its Development environment for advanced students and for adult education.

Microsoft MakeCode

Microsoft MakeCode is a graphical interface for the Microsoft Programming Experience Toolkit (PXT), with which development environments for education-oriented single-board computers (e.g. BBC micro: bit , Calliope mini ) can be created. These development environments look like Scratch, but run as a JavaScript application in the browser. In addition to the blocks, you can also program it yourself with JavaScript.

mBlock

Makeblock's mBlock is based on Scratch and allows robots ( mBot , mBot Ranger) to be easily programmed graphically.

NEPO

NEPO is a visual programming language based on Scratch, which uses the freely available Blockly library.

See also

literature

German
English

Web links

Commons : Scratch (programming language)  - collection of images, videos and audio files
Wikiversity: Scratch  course materials

Individual evidence

  1. Scratch Acknowledgments and Contributors , accessed October 21, 2015.
  2. Scratch 3.0 is here! . (accessed on January 2, 2019).
  3. Scratch: The Scratch phenomenon in the DACH Scratch Wiki, accessed January 30, 2017
  4. Via the scratch page of the official website ( memento of April 2, 2013 in the Internet Archive ). Retrieved January 30, 2017.
  5. ^ NSF's grant A Networked, Media-Rich Programming Environment to Enhance Informal Learning and Technological Fluency at Community Technology Centers , National Science Foundation , Sep 2003.
  6. Scratch 1.0 in the DACH Scratch Wiki. Retrieved January 30, 2017.
  7. Scratch 1.4 in the DACH Scratch Wiki. Retrieved January 30, 2017.
  8. a b Java Player in the Scratch Wiki, accessed January 30, 2017
  9. a b Flash Player in the Scratch Wiki. Retrieved January 30, 2017.
  10. Scratch 2.0 in the DACH Scratch Wiki. Retrieved January 30, 2017.
  11. Heise article on the publication Scratch 3.0
  12. Blog article by the development team (MIT Media Lab) on the release of Scratch 3.0
  13. 2.0 offline editor for Scratch , accessed March 27, 2015
  14. Scratch iPhone Player on mobilewikiserver.com (English, PDF). Accessed November 13, 2012.
  15. Snap! in the DACH-Scratch-Wiki, accessed on January 30, 2017
  16. Scratch 3.0 - The German-language Scratch Wiki. Retrieved January 26, 2020 .
  17. ^ Translation on the website of the DACH-Scratch-Wiki.Retrieved on January 30, 2017.
  18. Statistics map on the Scratch website ( Memento from May 26, 2013 in the Internet Archive ). Accessed January 15, 2013.
  19. Scratch Statistics ( Memento of May 27, 2013 in the Internet Archive ) (English) Retrieved June 9, 2012.
  20. ^ Website of the course "UC Berkeley EECS CS10: The Beauty and Joy of Computing Summer 2012" (English). Accessed January 30, 2017.
  21. ^ Forester 2011
  22. Scratch on KiKa: Programming as a Hobby in the DACH Scratch Wiki, accessed on January 30, 2017
  23. Scratch-Day on the DACH-Scratch-Wiki page.Retrieved on January 30, 2017.
  24. Scratch Day 2009 in Bochum on the DACH-Scratch-Wiki page . Retrieved on January 30, 2017.
  25. website of Scratch @ MIT_Konferenz , Accessed on 20 August 2012 found.
  26. Scratch @ MIT conference in the DACH-Scratch-Wiki, accessed on January 30, 2017.
  27. Scratch @ MIT 2014 in the DACH-Scratch-Wiki, accessed on January 30, 2017.
  28. Scratch Connecting Worlds 2013 in Barcelona in the DACH-Scratch-Wiki, accessed on February 22, 2012.
  29. ^ Scratch2015AMS - Creative communities
  30. ScratchEd on the DACH-Scratch-Wiki, accessed on January 22, 2013.
  31. Via the Scratch Wiki on the DACH Scratch Wiki, accessed on February 11, 2013.
  32. All blocks = overview list in the DACH Scratch Wiki, accessed on February 27, 2013
  33. Remix in the DACH-Scratch-Wiki, accessed on January 18, 2013
  34. List of modifications in the DACH Scratch Wiki, accessed on October 6, 2013
  35. List of Scratch Modifications  ( page no longer available , search in web archives ) - (English Scratch Wiki)@1@ 2Template: Toter Link / scratch.mit.edu
  36. Modifications in the DACH Scratch Wiki, accessed on October 6, 2013
  37. ^ Further developments by Scratch in the report from Scratch Day 2009, DACH Scratch Wiki, accessed on October 6, 2013
  38. S4A - Scratch for Arduino - (scratch roof)
  39. Panther - (scratch roof)
  40. Panther - based on Scratch - (official Panther website)
  41. ScratchJr - website
  42. ScratchJr - (Scratch Roof)
  43. Snap! (Build Your Own Blocks) - ( Berkeley University's Official Snap! Site )