Snap!


Snap! is a reimplementation of BYOB (Build Your Own Blocks), a language
for teaching high school and college computer science inspired by
Scratch, extended with first class procedures, first class lists, and
first class continuations. These extensions allow any control structure
or data structure to be implemented in Snap! itself, by teachers or by
learners. Snap! 4.0 is now in public beta release.

Run it now: http://snap.berkeley.edu/run

Unlike BYOB, which was implemented on top of the Scratch 1.4 source
code, Snap! is an independent development. It runs in a browser window,
without the need for software download. Snap! is written in Javascript,
so it runs in any browser, even on iPads and iPhones. (This implies that
kids can write apps for their mobile devices in the form of a browser
URL desktop shortcut! And, unlike App Inventor, Snap! projects can be
developed on the mobile device itself.)

Snap! was developed by Jens Mönig, with design contributions and
documentation by Brian Harvey.

Major new features in Snap! 4.0:

* Cloud storage for projects, using a back end donated by MioSoft
Corporation, Jens’s employer. At the moment the server provides only
private storage of Snap! projects (and therefore easy transfer between
devices); Scratch-style sharing of projects and media will come later.

* Scratch-2.0-style temporary cloning of sprites.

* Continuations, which enable us to provide control structures such as
CATCH and THROW written in Snap! itself.

* Very dramatic speedup compared to BYOB, plus a WARP block that allows
a single thread to run without interruption.

Major missing features in Snap! 4.0 (in the beta release):

* BYOB-3.1-style OOP cloning of sprites with inheritance.

* The costume paint editor. (Costumes must be created or downloaded with
other software and imported into projects.)

UC Berkeley’s BYOB-based “Beauty and Joy of Computing” computer science
curriculum for high school and non-CS-major college students is being
updated for Snap! and will be ready for fall 2013 courses.