snap! block programming for kids …and parents
TRANSCRIPT
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 withgit 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 ProgrammingUnit 2: AbstractionUnit 3: Data Processing and ListsUnit 4: How the Internet Works (AP Explore Task)Unit 5: Algorithms and Simulations (AP Create Task)Unit 6: How Computers WorkUnits 1-6 cover all of the AP CSP curriculum framework. You are ready for the test.
Unit 7: Fractals and RecursionUnit 8: Recursive FunctionsUnits 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:• Scratch• Code.org• App Inventor• Pencil Code• StarLogo Nova• Blockly games• GameBlox
Downloadable:• AgentSheets• Alice• Looking Glass• Kodu
On mobile:• Scratch Jr• Pocket Code• Tynker• Hopscotch
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/