Also:<p><a href="https://news.ycombinator.com/item?id=17594403" rel="nofollow">https://news.ycombinator.com/item?id=17594403</a><p>One of the coolest ways to learn programming I've ever seen is the Snap! visual programming language, which is written in JavaScript and runs in the browser.
<a href="https://snap.berkeley.edu" rel="nofollow">https://snap.berkeley.edu</a><p>It's the culmination of years of work by Brian Harvey and Jens Mönig and other Smalltalk and education experts. It benefits from their experience and expert understanding about constructionist education, Smalltalk, Scratch, E-Toys, Lisp, Logo, Star Logo, and many other excellent systems.<p>Snap! takes the best ideas, then freshly and coherently synthesizes them into a visual programming language that kids can use, but is also satisfying to professional programmers, with all the power of Scheme (lexical closures, special forms, macros, continuations, user defined functions and control structures), but deeply integrating and leveraging the web browser and the internet (JavaScript primitives, everything is a first class object, dynamically loaded extensions, etc).<p>Y Combinator demo:<p><a href="https://i.imgur.com/cOq8tvR.png" rel="nofollow">https://i.imgur.com/cOq8tvR.png</a><p><a href="https://snap.berkeley.edu/snapsource/snap.html#present:Username=jens&ProjectName=y%20combinator" rel="nofollow">https://snap.berkeley.edu/snapsource/snap.html#present:Usern...</a><p>Here's an excellent mind-blowing example by Ken Kahn of what's possible: teaching kids AI programming by integrating Snap! with existing JavaScript libraries and cloud services like AI, machine learning, speech synthesis and recognition, Arduino programming, etc:<p>AI extensions of Snap! for the eCraft2Learn project<p><a href="https://ecraft2learn.github.io/ai/" rel="nofollow">https://ecraft2learn.github.io/ai/</a><p>>The eCraft2Learn project is developing a set of extensions to the Snap! programming language to enable children (and non-expert programmers) to build AI programs. You can use all the AI blocks after importing this file into Snap! or Snap4Arduino. Or you can see examples of using these blocks inside this Snap! project.<p><a href="https://github.com/ecraft2learn/ai" rel="nofollow">https://github.com/ecraft2learn/ai</a><p><a href="http://lntrg.education.ox.ac.uk/presentation-of-ai-cloud-services-integrated-with-snap-at-the-connective-ubiquitous-technology-for-embodiments-center-of-the-national-university-of-singapore-and-keio-university-on-16-march-2017-by-k/" rel="nofollow">http://lntrg.education.ox.ac.uk/presentation-of-ai-cloud-ser...</a><p>Use devices with Snap!:<p>Orbotix Sphero guide by Connor Hudson and Dan Garcia:<p><a href="https://docs.google.com/document/d/11wR53OTnofRtTtxZCmxnCUjIlFQjnGewM21A0vmjtFw/edit?usp=sharing" rel="nofollow">https://docs.google.com/document/d/11wR53OTnofRtTtxZCmxnCUjI...</a><p>Lego NXT package by Connor Hudson:<p><a href="https://github.com/technoboy10/snap-nxt" rel="nofollow">https://github.com/technoboy10/snap-nxt</a><p>Nintendo Wiimote package by Connor Hudson:<p><a href="https://github.com/technoboy10/wiisnap" rel="nofollow">https://github.com/technoboy10/wiisnap</a><p>Finch and Hummingbird robots package by Tom Lauwers:<p><a href="https://www.hummingbirdkit.com/learning/snap-programming/" rel="nofollow">https://www.hummingbirdkit.com/learning/snap-programming/</a><p>Parallax S2 robot package by Connor Hudson:<p><a href="https://github.com/blockext/s2" rel="nofollow">https://github.com/blockext/s2</a><p>LEAP Motion by Connor Hudson:<p><a href="https://github.com/technoboy10/snapmotion" rel="nofollow">https://github.com/technoboy10/snapmotion</a><p>Speech synthesis by Connor Hudson:<p><a href="https://github.com/technoboy10/snap2speech" rel="nofollow">https://github.com/technoboy10/snap2speech</a><p>Arduino package by Alan Yorinks:<p><a href="https://github.com/MrYsLab/s2a_fm" rel="nofollow">https://github.com/MrYsLab/s2a_fm</a><p>Arduino package by Bernat Romagosa/Citilab:<p><a href="http://snap4arduino.rocks/" rel="nofollow">http://snap4arduino.rocks/</a><p>Fischertechnik ROBOTICS TXT Controller by Richard Kunze:<p><a href="https://github.com/rkunze/ft-robo-snap" rel="nofollow">https://github.com/rkunze/ft-robo-snap</a><p>Snap! for Raspberry Pi by rasplay.org:<p><a href="http://downloads.rasplay.org/pisnap/" rel="nofollow">http://downloads.rasplay.org/pisnap/</a><p>More Snap! extensions for CS education:<p>snap-apps.org provides Edgy for graphs, Cellular for multi-agent simulation, and more.<p><a href="http://snap-apps.org/" rel="nofollow">http://snap-apps.org/</a><p><a href="http://www.snap-apps.org/edgy.html" rel="nofollow">http://www.snap-apps.org/edgy.html</a><p><a href="http://www.flipt.org/#cellular" rel="nofollow">http://www.flipt.org/#cellular</a><p>Netsblox for multiplayer networking.<p><a href="https://netsblox.org/" rel="nofollow">https://netsblox.org/</a>