snap! build your own blocks 4snap.berkeley.edu/snapsource/snap.pdf · snap! build your own blocks...

8
Snap! Build Your Own Blocks 4.0 http://snap.berkeley.edu/ http://snap.berkeley.edu/run http://snap.berkeley.edu/SnapManual.pdf https://snap.berkeley.edu/BYOB.pdf Github: https://github.com/jmoenig/Snap--Build-Your-Own-Blocks Development Lead: Jens Mönig, Communications Design Group (CDG), SAP-Labs, Human Advancement Research Community (HARC), Y Combinator Research Collaborators: Brian Harvey, UC Berkeley, students and volunteers at UC Berkeley and elsewhere Current Status: v4.0 release Next Milestone: 4.1 alpha, OOP and Macros, 2017-2018 Abstract Snap is the programming language used in UC Berkeley’s introductory CS course named “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 the new AP CS-Principles course created by the College Board. The NSF has awarded longstanding grants to bring Snap and BJC to every high school in New York City, the largest school district in the U.S. Snap is Scheme disguised as Scratch, a free and open web browser based visual programming language aiming to support a technically rigorous introductory CS curriculum at the college and high school level. Snap has been translated into 39 languages and is used around the world, both as a teaching environment and in research projects. Snap borrows from Scratch its graphical LEGO blocks grammar and its 2D cartoon themed microworld around a stage with sprite actors, costumes, events, and parallelism, combining it with Scheme’s dynamically typed and lexically scoped variables, first-class lists, lambda (closures), first-class continuations and proper tail recursion, encouraging programmers to create their own control structures (loops, catch/throw, higher-order functions such as map/filter/reduce) tail recursively without having to worry about stack overflows. Snap supports nested sprites and lets programmers turn arbitrary JavaScript code into graphical blocks. Its “codification” mechanism can transcompile graphical scripts into arbitrary textual code, offering a two-way transition between blocks and text. Planned for release 4.1 are adding macros and extending Snap’s object system with Lieberman- style prototypal inheritance. Snap is implemented in JavaScript using HTML5 APIs. It has been renamed from BYOB to Snap since version 4.0. Snap’s development has been supported by two NSF grants. Snap! at UC Berkeley Curriculum (Beauty and Joy of Computing): http://bjc.berkeley.edu/ Context AP CSP Framework: http://bjc.berkeley.edu/website/compare.html Course: cs10.berkeley.edu Snap! Below the Line: http://www.decal.org/3241

Upload: hakhanh

Post on 06-Feb-2018

234 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Snap! Build Your Own Blocks 4snap.berkeley.edu/snapsource/Snap.pdf · Snap! Build Your Own Blocks 4.0 ...  ... Belgium Université

Snap! Build Your Own Blocks 4.0

http://snap.berkeley.edu/http://snap.berkeley.edu/runhttp://snap.berkeley.edu/SnapManual.pdfhttps://snap.berkeley.edu/BYOB.pdf

Github: https://github.com/jmoenig/Snap--Build-Your-Own-Blocks

Development Lead: Jens Mönig, Communications Design Group (CDG), SAP-Labs,Human Advancement Research Community (HARC), Y Combinator Research

Collaborators: Brian Harvey, UC Berkeley, students and volunteers at UC Berkeley and elsewhere

Current Status: v4.0 releaseNext Milestone: 4.1 alpha, OOP and Macros, 2017-2018

Abstract

Snap is the programming language used in UC Berkeley’s introductory CS course named “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 the new AP CS-Principles course created by the College Board. The NSF has awarded longstanding grants to bring Snap and BJC to every high school in New York City, the largest school district in the U.S.

Snap is Scheme disguised as Scratch, a free and open web browser based visual programming language aiming to support a technically rigorous introductory CS curriculum at the college and high school level. Snap has been translated into 39 languages and is used around the world, both as a teaching environment and in research projects.

Snap borrows from Scratch its graphical LEGO blocks grammar and its 2D cartoon themed microworld around a stage with sprite actors, costumes, events, and parallelism, combining it with Scheme’s dynamically typed and lexically scoped variables, first-class lists, lambda (closures), first-class continuations and proper tail recursion, encouraging programmers to create their own control structures (loops, catch/throw, higher-order functions such as map/filter/reduce) tail recursively without having to worry about stack overflows. Snap supports nested sprites and lets programmers turn arbitrary JavaScript code into graphical blocks. Its “codification” mechanism can transcompile graphical scripts into arbitrary textual code, offering a two-way transition between blocks and text.

Planned for release 4.1 are adding macros and extending Snap’s object system with Lieberman-style prototypal inheritance.

Snap is implemented in JavaScript using HTML5 APIs. It has been renamed from BYOB to Snap since version 4.0. Snap’s development has been supported by two NSF grants.

Snap! at UC Berkeley

Curriculum (Beauty and Joy of Computing): http://bjc.berkeley.edu/Context AP CSP Framework: http://bjc.berkeley.edu/website/compare.htmlCourse: cs10.berkeley.eduSnap! Below the Line: http://www.decal.org/3241

Page 2: Snap! Build Your Own Blocks 4snap.berkeley.edu/snapsource/Snap.pdf · Snap! Build Your Own Blocks 4.0 ...  ... Belgium Université

edX MOOC

https://www.edx.org/course/high-school-affiliatesuc-berkeleyx/high-school-affiliates-uc-berkeleyx-bjc-3716#.VBBuRGRdVIchttps://www.edx.org/course?search_query=BJC

NSF supported BJC4NYC Initiative

http://bjc.berkeley.edu/website/bjc4nyc.htmlhttp://www.nsf.gov/awardsearch/showAward?AWD_ID=1441075&HistoricalAwards=false

http://sepnyc.org/apcs-2/http://sepnyc.org/apcs-2/curriculum/

Snap! Usage Examples

U.S.

Vanderbilt University NetsBlox (Akos Ledeczi, Brian Broll)http://netsblox.org/https://github.com/NetsBlox/NetsBloxhttp://netsblox.org/NetsBloxWhitePaper.pdfhttp://www.vanderbilt.edu/strategicplan/action/TIPS_2015_proposal_summaries1.pdf

Rensselaer Polytechnic Institute CSnap (Ron Eglash)https://community.csdt.rpi.edu/https://github.com/CSnap/CSnaphttp://www.cs.rpi.edu/~imais/c-snap/3d-summary.pdfhttp://www.cs.rpi.edu/~imais/c-snap/snap.html

JMU Bags - Build Your Own Relations (Chris Mayfield)http://bags.cs.jmu.edu/https://w3.cs.jmu.edu/mayfiecs/pubs/bags_sigcse14.pdf

ASU DBSnap (Yasin Silva)http://www.public.asu.edu/~ynsilva/dbsnap/http://www.public.asu.edu/~ynsilva/dbsnap/files/DBSnapSIGCSE2015.pdf

VirginiaTech - DataSnap (Eli Tilevich, Jonathon Hellman)http://think.cs.vt.edu/snap/https://github.com/jonatho7/SnapBYOBServer

Pratt “BeetleBlocks”, 3D Printing (Duks Koschitz, Eric Rosenbaum)http://beetleblocks.com/https://commons.pratt.edu/des-comp-spring-2015/https://commons.pratt.edu/des-comp-spring-2015/wp-content/uploads/sites/44/2015/10/BB-Primer.pdfhttps://github.com/ericrosenbaum/BeetleBlocks

Page 3: Snap! Build Your Own Blocks 4snap.berkeley.edu/snapsource/Snap.pdf · Snap! Build Your Own Blocks 4.0 ...  ... Belgium Université

University of Alabama - “CS4Alabama.org” (Jeff Gray)30 page “Snappy Birds” activity by Jake Trower and Benji Hill https://docs.google.com/file/d/0B8BmrAjhdrA4Q0JBUzY2M21Pdkk/editcomplete materials: https://drive.google.com/folderview?id=0B8BmrAjhdrA4ckxQOWQtV1h0Nnc&usp=sharing

NCSU - iSnap (Thomas Price, Tiffany Barnes)http://arena.csc.ncsu.edu/public/snap/https://github.com/thomaswp/iSnaphttp://www4.ncsu.edu/~twprice/website/files/ICER%20DC%202015.pdf

Microsoft’s TEALS program uses BYOB/Snaphttps://www.tealsk12.org/about/http://library.tealsk12.org/schools/2016/TEALS%20Implementation%20Guide%202016-2017.pdfhttp://tealsk12.org/bin/docs/schools/2014/4_TEALS_Partner_Guide_2014.pdf

Northwestern University - comparing blocks-based to text-based programming with Snap!, e.g.Research by Davind Weintrop and Uri Willensky, e.g.https://www.sesp.northwestern.edu/docs/cv/19222005655f03e6794c3a.pdfhttp://ccl.northwestern.edu/2014/Weintrop%20and%20Wilensky%20-%202015%20-%20To%20Block%20or%20Not%20to%20Block,%20That%20is%20the%20Question%20St.pdfhttp://ccl.northwestern.edu/2014/SitCSAbsinRB-final.pdf

Birdbrain Technologies LLCBirdbrain robot server for “Finch” and “Hummingbird” robots:http://www.finchrobot.com/software/snapversion of Snap! that connects wirelessly from an iOS device to a “Hummingbird” robot:https://itunes.apple.com/us/app/snap-for-hummingbird/id1017312615?mt=8http://www.hummingbirdkit.com/learning/using-snap-hummingbird-app

Lamar University - Snap! Computing Workshop With Stipend For K-12 Teachershttp://hpcl.cs.lamar.edu/cikt/workshops/WorkshopSummer2014.php

University of Wyoming - Beauty and Joy of Computing in Wyominghttp://www.uwyo.edu/wsup/_files/docs/transitions/mathematics/2016/ap_computing_complete.pdfhttp://bj-wy.blogspot.com/

UCI ICS 10 course (David Kay)http://www.ics.uci.edu/~kay/courses/10/

IIT CS10 course (Matthew Bauer)http://www.cs.iit.edu/~cs110/

OleMiss CSCI 102 (Tobin Maginnis)pix.cs.olemiss.edu/csci103

UMass Lowell “Snap Laptop Orchestra” (Jesse Heines)https://teaching.cs.uml.edu/~heines/TUES/SLO.jsp

Coderschool (private after school program in Palo Alto and San Mateo)http://www.thecoderschool.com

Page 4: Snap! Build Your Own Blocks 4snap.berkeley.edu/snapsource/Snap.pdf · Snap! Build Your Own Blocks 4.0 ...  ... Belgium Université

Economic Growth DC Foundation, supported by Accenture, uses Snap! for theirCode4Life curriculumhttp://egdcfoundation.org/work/assets/Code4Life-Module-1-Curriculum-Version-2-0.pdf

Brothaman Tech Incubator (private after school program in the greater Portland area)http://brothamantech.com/2015/02/10/had-a-great-time-with-these-young-brothas-on-saturday/

Quadrant4: EmpowerED Solutions - RoboKind “Jett” HumanoidRobots4Stem Curriculum:Introduction to Social Robotics with Snap!https://empowered.solutions/robots4stem/http://qfor.com/wp-content/uploads/2016/02/QFOR-Robokind.pdf

Robotix Learning Solutions “PHIRO” Robotembraces Snap (Snap4Arduino): http://www.robotixedu.com/phiro.aspx

Flexion Inc., Scott FradkinA Block Based Live Coding Music Environment for KidsProceedings of the 2nd Web Audio Conference (WAC-2016), Atlanta, 2016https://smartech.gatech.edu/handle/1853/54660http://www.fradkin.com/snap-music.htmlhttps://github.com/sfradkin/Snap--Build-Your-Own-Blocks

AustraliaANU course “The Art of Computing” using Snap! (Pascal Van Hentenryck)http://vc-courses.anu.edu.au/the-art-of-computinghttps://artofcomputing.cecs.anu.edu.au/https://artofcomputing.cecs.anu.edu.au/post/first-look-at-snap/ Angry Birds AI competition (organized by ANU faculty)http://aibirds.org/snap

Monash University’s BYOB/Snap mods “Scribble” and “Cellular” (Bernd Meyer)http://monash-blockbooks.appspot.com/and also AR Drone version of Snap! (Aidan Lane)https://github.com/aidanlane/snapapps/releaseshttps://aidanlane.github.io/snapapps/ardrone.html

University of Melbourne’s “Edgy” SnapApp (by Steven Bird)https://github.com/snapapps/edgy

Page 5: Snap! Build Your Own Blocks 4snap.berkeley.edu/snapsource/Snap.pdf · Snap! Build Your Own Blocks 4.0 ...  ... Belgium Université

ChinaBYOB/Snap book by Yu Fang Junhttp://www.amazon.com/Youth-Science-Creation-creative-programming/dp/7302374740http://222.92.49.53:8081/opac/book/901584151?globalSearchWay=publisherhttp://www.abebooks.co.uk/9787302374749/Youth-Science-Creation-Books-BYOB-7302374740/plphttp://tg.szbookmall.com/product_detail-1601049.aspx

BYOB/Snap course videos (also by Yu Fang Jun)http://study.163.com/course/introduction.htm?courseId=529001

MaoCode platform, clones Snap and Beetleblocksmaocode.com

JapanSony Computer Science Laboratories, Inc.Kadecot home appliances network extension for Snap!https://github.com/tomoki/KadecotExtensionForSnap-inPython

KoreaROKIT Brickhttp://rokitarduino.org/snap4arduino/

Pi_Snap RaspberryPi extension from rasplay.comhttp://www.rasplay.org/?p=23946https://github.com/rasplay/PiSnaphttp://downloads.rasplay.org/pisnap/latest.pdfhttp://downloads.rasplay.org/pisnap/latest.img.zip

BrickBoard - uses Snap4Arduinoiamamaker.kr

Malaysiahttp://www.mykidscoding.com/uses BYOB and Snap!

TurkeyAbdulla Gul UniversityCMP 101 the art of computinguses Snap!

Saudi Arabia“Create Computing Using SNAP” Workshop for teachers, Jan. 17.-21, 2016sponsored by Google (CS4HS initiative)http://www.psu.edu.sa/pscw/EN/Announcement/CIS/CS4HS.ASPX

Page 6: Snap! Build Your Own Blocks 4snap.berkeley.edu/snapsource/Snap.pdf · Snap! Build Your Own Blocks 4.0 ...  ... Belgium Université

BrazilINCoD, Brazilian Institute for Digital Convergenceuse Snap! and Scratch for physical computing workshops and for interdisciplinary game design in history classes (Wangenheim et al.)http://www.computacaonaescola.ufsc.br/?page_id=2088http://www.computacaonaescola.ufsc.br/wp-content/uploads/2015/09/INCoD-RT_GQS_04_2015E-OficinasPaisFilhosCF_v10.pdf

Great BritainRisingStars publishing (Great Britain)Learn to Code 3, (2015). ISBN 978-1-78339-343-5features 4 chapters of Snap! activities

Translated to Danish in 2016 by Lindhardt og Ringhof Forlag A/Shttp://www.alinea.dk/butik?c=Item&category=6014&item=34485http://xn--lrkode-pua.alinea.dk/https://www.youtube.com/watch?v=onodyyV3HZA

ItalyUniv. Cagliari, BloP (Stefano Federici)http://www.blocklanguages.org

GermanyUni Göttingen “Informatik mit BYOB” (Eckart Modrow)https://www.uni-goettingen.de/de/informatik-mit-byob/423680.html

Uni Göttingen SQLsnap! (Eckart Modrow)http://snapextensions.uni-goettingen.de/

LMU München “Programmieren mit Snap” (Michael Brenner)https://ddi.ifi.lmu.de/tdi/2013/upload/workshop-programmieren-mit-snap

Uni Potsdam “ScratchDrone” - uses BYOB and Snap! (Ulrike Lucke)http://apache.cs.uni-potsdam.de/de/profs/ifi/mm/projekte/scratchdrone-1http://subs.emis.de/LNI/Proceedings/Proceedings233/109.pdfhttps://eleed.campussource.de/archive/11/4158

Institut für Qualitätsentwicklung an Schulen Schleswig-Holstein“Fachcurriculum Kunst und Informatik”http://faecher.lernnetz.de/faecherportal/index.php?DownloadID=4534

Uni Potsdam, Hasso Plattner Institute (Tim Felgentreff)morphicjs-pen - uses Morphic.js, Snap’s GUI frameworkhttps://github.com/timfel/morphicjs-penhttps://www.youtube.com/watch?v=S10YgRFfWmk HdM StuttgartCourse 331212 Einführung in das Programmierenhttps://www.hdm-stuttgart.de/studieninteressierte/master/vorlesung_detail?vorlid=5214144uses Snap! (among other environments)

Page 7: Snap! Build Your Own Blocks 4snap.berkeley.edu/snapsource/Snap.pdf · Snap! Build Your Own Blocks 4.0 ...  ... Belgium Université

Fachhochschule PotsdamCourse “Einführung in die Webentwicklung”uses Snap! as Introblog: http://snap.mgrf.de/webdeck/sebastian/index.html

Universität ErlangenAnalyzing the Twitter Data Stream Using the Snap! Learning EnvironmentAlexander Grillenberger and Ralf Romeikehttp://link.springer.com/chapter/10.1007%2F978-3-319-25396-1_14#page-1

Fischertechnik Robotics APIhttps://github.com/rkunze/ft-robo-snap

SpainCitilab Barcelona’s Whitecat board and IDEhttp://whitecatboard.org/

Citilab Barcelona’s Snap4Arduinohttp://s4a.cat/snap/

Citilab Barcelona’s Snapi Project, a Snap! mod aimed at working with APIs and OpenDatahttp://snapi.citilab.eu/https://github.com/bromagosa/Snapi

Citilab Barcelona’s Snapp project, packages Snap projects as native appshttp://snapp.citilab.eu/

FranceINRIA France controls their PoppyCreature robot with Snap!http://nbviewer.ipython.org/github/poppy-project/pypot/blob/master/samples/notebooks/Controlling%20a%20Poppy%20Creature%20using%20SNAP.ipynb

INRIA France also maintains the Snappy project, combining blocks with text codehttp://inriamecsci.github.io/snappy/https://github.com/InriaMecsci/snappy https://pixees.fr/snappy-relier-programmation-graphique-et-textuelle/

TRALALERE interfaces their GleamCode device with a special modification of Snap!http://www.code-decode.net/actualites/atelier-code-pendant-code-weekhttp://www.code-decode.net/gleamcode/

AustriaStitchcode - visionary embroidery (Andrea Mayr-Stalder)uses Snap! to stitch generative art onto textileshttp://www.stitchcode.com/http://www.turtlestitch.org/turtlestitch/

Page 8: Snap! Build Your Own Blocks 4snap.berkeley.edu/snapsource/Snap.pdf · Snap! Build Your Own Blocks 4.0 ...  ... Belgium Université

BelgiumUniversité Catholique de Louvain - RSnap (Master’s Thesis)http://www.info.ucl.ac.be/~pschaus/assets/master_thesis/2014_claessens_collart.pdfhttps://github.com/snap-school

RussiaRussian Snap! Users Grouphttps://vk.com/snap_programm

Russian Morse Code Tutorial for Snap!http://habrahabr.ru/company/makeitlab/blog/242323/