Snap! Block Programming for Kids …And Parents
Total Page:16
File Type:pdf, Size:1020Kb
Snap! Block programming for kids …and parents Grzegorz Posyniak SAP Inside Track Walldorf: January, 13th 2018 – #sitwdf #sitkids Playing an instrument or coding? Why? • It is not about: • making kids “computer literate” • making kids into hard-working little app developers • raising the next generation of Silicon Valley entrepreneurs • It is about: • training and experience in problem solving • training and experience in breaking big project down to the minute tasks that, when put together, are what make it work • natural reality check: interpreters and compilers are unforgiving Block-based programming languages • visualizing the structure of control blocks • flow of algorithms • colorful • fun • easy to use • give an immediate feedback ideal motivation booster Snap! http://snap.berkeley.edu/ • ready-to-use block-based programming environment • web browser based, pure HTML Canvas and JavaScript • uses modern and open JavaScript application servers • free (libre), open-source • free cloud service (from MioSoft) SAP Cloud Platform • used as teaching tool and research platform around the world • translated in 38 languages • visually stunning • expandable • easy to use You can also download the latest source code with git clone https://github.com/jmoenig/Snap--Build-Your-Own-Blocks.git „Snap is Scheme disguised as Scratch” Brian Harvey Scratch “low floor” • LEGO - like blocks grammar • 2D cartoon themed microworld (stage, sprites, media) • events, parallelism • interactive, continuous feedback, “liveness” Scheme “no ceiling” • dynamically typed, lexically scoped variables • first class lists (incl. lists of lists) • lambda (incl. full closures) • first class continuations • proper tail recursion (TCO) „Snap is Scheme disguised as Scratch” Brian Harvey Scavenged from LOGO, Smalltalk, SELF “wider walls” • sprites are first class and can be nested • tables • accessing web APIs (robots!) • extensible with JavaScript • “codification” transpiles blocks to any text language • deploy projects as native apps Link to demo projects • Vee - List of Blocks, Procedures as Data, Recursion • Functions & Custom Control Structures • using MAP for Grahic Effects University Informatics with Snap! http://bjc.berkeley.edu/ The Beauty and Joy of Computing (BJC) AP® CS Principles - UC Berkeley • created for UC Berkeley’s new CS10 course named “The Beauty and Joy of Computing” (BJC) • development has been supported by the NSF, MioSoft, SAP and YC • curriculum developed at Cal and EDC • BJC using Snap is a pilot course for the new AP CS Principles framework and has been officially endorsed by the U.S. College Board • edX MOOC (Berkeley BJC) • BJC 4 NYC brings Snap! to every high school in New York City The Beauty and Joy of Computing (BJC) for schools http://bjc.edc.org/ In this course, you will create programs using the Snap programming language, you will learn some of the most powerful ideas of computer science, you will be creative, and you will discuss the social implications of computing, thinking deeply about how you can be personally active in promoting the benefits and reducing the possible harms Unit 1: Introduction to Programming Unit 2: Abstraction Unit 3: Data Processing and Lists Unit 4: How the Internet Works (AP Explore Task) Unit 5: Algorithms and Simulations (AP Create Task) Unit 6: How Computers Work Units 1-6 cover all of the AP CSP curriculum framework. You are ready for the test. Unit 7: Fractals and Recursion Unit 8: Recursive Functions Units 7 and 8 focus on recursion, a beautiful and powerful CS idea that goes beyond the AP CSP Framework and test. These units are perfect to enjoy after that test. Snap! HuGo (Big pixels with Philips Hue Go) • Similar to http://arbalet-project.org/ Other Blocks-Based Educational Tools On the Web: Downloadable: On mobile: • Scratch • AgentSheets • Scratch Jr • Code.org • Alice • Pocket Code • App Inventor • Looking Glass • Tynker • Pencil Code • Kodu • Hopscotch • StarLogo Nova • Blockly games • GameBlox How to learn programming easily? • We need programing languages with UI which welcome new users, not a technical tool for experienced developers • Recognition, not recall (focus on learnability) • Chunking code to lower cognitive load • Visible grammar rules and types • Program chunks directly manipulable • No tool installing necessary for coding environment • Clear words and high-level abstractions describing simple concepts • Visible runtime state and behavior • Easy to find and apply examples Programming is the original human-computer interaction, and it remains an unsolved usability challenge. Links “Beauty and Joy of Computing” • for Universities: http://bjc.berkeley.edu/ • for High-schools: http://bjc.edc.org/ • “Introduction to Computer Science Principles” (Microsoft TEALS): https://www.gitbook.com/book/teals-introcs/introduction-to-computer-science-principles/details • Actual course: https://www.edx.org/course?search_query=The+Beauty+and+Joy+of+Computing • All courses (Youtube): http://bjc.edc.org/Jan2017/bjc-r/cur/teaching-guide/resources/video-list-scratch.html • Snap! Overview: http://snap.berkeley.edu/snapsource/Snap.pdf • Snap! Samples http://snap.berkeley.edu/snapsource/SnapExamples.pdf • Snap! Reference Manual: http://snap.berkeley.edu/SnapManual.pdf • Snap! Details: • Frist-Class Sprites: http://snap.berkeley.edu/snapsource/FirstClassSpritesInSnap.pdf • Tables: http://snap.berkeley.edu/snapsource/TablesInSnap.pdf • Linked Lists: http://snap.berkeley.edu/snapsource/LinkedListsInSnap.pdf • Blocks: http://snap.berkeley.edu/snapsource/BlockEnhancementsInSnap.pdf Mostly known GitHub Forks • Snap4Arduino http://snap4arduino.rocks/ • Turtlestitch http://www.turtlestitch.org/ • 3D BeetleBlocks http://beetleblocks.com/ .