snap! build your own blocks 4snap.berkeley.edu/snapsource/snap.pdf · snap! build your own blocks...
TRANSCRIPT
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
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
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
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
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
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)
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/
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/