Snap! is a blocks-based graphical programming language and online community, similar to, but more advanced than Scratch.
Features found in Snap! that are not present in Scratch include expressions using nested functions, consisting of one or more anonymous functions, each represented by a block with one or more empty slot parameters, available for a higher-order function. Snap! also includes lists that are first class, first class sprites, offering prototype-oriented, instance-based classless programming, as well as nestable sprites. Snap! programs may also be coded to mainstream languages, such as C, JavaScript, and Python. Snap! is implemented in JavaScript through an HTML5 Canvas API, allowing it to run on most of the major web browsers.
Used primarily for educational purposes, the Snap! editor and the programs created with it are web applications that run in a browser, without requiring installation.
The Snap! screen is organized in three resizable columns with five regions: the block group selector, the blocks palette, the main area, and the stage area, with the sprite selector showing sprite thumbnails beneath it.
Much like Scratch, graphical results of the scripts running in the scripts area are shown in the interactive and resizable stage area. Blocks can be dragged from the blocks palette into the scripts area, where they are associated with a selected sprite.
Blocks are sorted into eight groups: motion, looks, sound, pen, control, sensing, operators, and variables.
Scripts, costumes, or sounds associated with a selected sprite are shown in the main area, depending on the tab selected by the user.
Created in 2011 by Jens Mönig, with assistance from Brian Harvey from the University of California at Berkeley, the language system was originally desktop-based and known as BYOB. The source code for the earlier desktop version is available under a license that allows its modification for non-commercial uses, and may be downloaded from the UC Berkely website and elsewhere.
The source code for Snap! is available under the Affero General Public License, and available from GitHub or within Snap! itself.
Snap! and its derivatives are the focus of resources listed in this category. User groups, forums, tutorials, and guides are also appropriate.
 
 
Recommended Resources
BJC is an introductory computer science curriculum developed at the University of California at Berkeley, intended for non-CS majors at the high school junior through undergraduate freshman level that uses the Snap! programming language. The BJC curriculum is highlighted, along with the AP Computer Science principles, professional development programs, a profile of Snap! and links to Snap! and other resources.
https://bjc.berkeley.edu/
Created at the University of California, Berkeley, where an online version and community is hosted, Snap! is a blocks-based, visual programming language inspired by Scratch. The program is distributed here as free software, which may be modified and/or distributed under the terms of the GNU Affero General Public License. Its packages, in whole or in part, may be cloned or downloaded from the site. Contributors are acknowledged.
https://github.com/jmoenig/Snap
Originally known as BYOB, Snap! is a drag-and-drop programming language, visual rather than textual. Inspired by Scratch, Snap! extends that language with several new features, appealing to novice and advanced students and programmers. Available for the Linux platform, the Linux site reviews the programming language and system, including a list of its strongest features, screenshots, and links to other Snap! resources online.
https://www.linuxlinks.com/Snap/
openSAP: Get Coding with Snap!
Since 3013, openSAP has been offering open online courses on various topics related to technology. Courses are flexible, unrestricted, motivational, free, and students can interact with experts and peers. Its course on the Snap! programming language was developed under the Creative Commons Attribution-ShareAlike International License. Certificate requirements, course characteristics, content, and requirements are noted.
https://open.sap.com/courses/snap1
Previously known as BYOB, Snap! is a graphic, drag-and-drop programming language, created at the University of California at Berkeley, that reimplements and extends Scratch, which allows users to program through the building of blocks. Some of the latest projects built with Snap! are featured, along with the technical requirements, source code, and a reference manual. Also available is a user forum, an offline version, extensions, and other tools that can be used with the programming system.
https://snap.berkeley.edu/
Using Firmata firmware and supporting nearly all Arduino boards, Snap4Arduino is a blocks-based, dynamic, live, concurrent, parallel programming system that is a modification of the Snap! visual programming language. Available in desktop-based versions, as well as an online version that can connect to Arduino boards through a Chrome/Chromium plugin, as well as a command-line version for embedded GNU Linux platforms, all of the components are registered under free software licenses.
http://snap4arduino.rocks/
Snap is a fully open-source, optionally-typed, object-oriented programming language for the Java platform, licensed under the Apache License 2.0. Its learning curve is said to be small for anyone with experience in Java, JavaScript, TypeScript, Scala, or other scripting languages. An introduction to the language is put forth, including its basic types, operators, conditions, loops, exceptions, functions, and types. The Snap Studio and Snap Interpreter may be downloaded from the site.
http://www.snapscript.org/