"Snap is Scheme disguised as Scratch" Snap is the programming language used in UC Berkeley’s introductory CS coursenamed “The Beauty and Joy of Computing” (BJC). As part of the BJC curriculum,Snap is currently being disseminated nationwide across the U.S. to support thenew AP CS-Principles course created by the College Board. The NSF has awardedlongstanding grants to bring Snap and BJC to every high school in New YorkCity, the largest school district in the U.S. Snap is Scheme disguised as Scratch, a free and open web browser based visualprogramming language aiming to support a technically rigorous introductory CScurriculum at the college and high school level. Snap has been translated into39 languages and is used around the world, both as a teaching environment andin research projects. Snap borrows from Scratch its graphical LEGO blocks grammar and its 2D cartoonthemed microworld around a stage with sprite actors, costumes, events, andparallelism, combining it with Scheme’s dynamically typed and lexically scopedvariables, first-class lists, lambda (closures), first-class continuations andproper tail recursion, encouraging programmers to create their own controlstructures (loops, catch/throw, higher-order functions such asmap/filter/reduce) tail recursively without having to worry about stackoverflows. Snap supports nested sprites and lets programmers turn arbitraryJavaScript code into graphical blocks. Its “codification” mechanism cantranscompile graphical scripts into arbitrary textual code, offering a two-waytransition between blocks and text. Snap is implemented in JavaScript using HTML5 APIs. It has been renamed fromBYOB to Snap since version 4.0. Snap’s development has been supported by twoNSF grants. |