Click here if you wish to read this and the AI guide in a language other than English.
The eCraft2Learn project developed a set of extensions to the Snap! programming language to enable children (and non-expert programmers) to build AI programs. The blocks are available as projects with examples of using the blocks as well as libraries to download and then import into Snap!. It is possible to run Snap! with many of the AI blocks without an Internet connection.
Important updates are documented here.
You can import any of the libraries below into your projects. If you click on the "project" link you'll open a project that illustrates usage of the library.
This guide currently consists of seven chapters describing the new Snap! blocks, possible projects, sample programs, background information, and the larger context about AI and machine learning:
Adding speaking to your programs | Speech synthesis requires only speakers or earphones |
Adding listening to your programs | Speech recognition requires a microphone (built-in or connected to a USB port) |
Adding image recognition to your programs | Requires a camera (built-in or connected to a USB port) and registering to get API keys |
Adding pre-trained machine learning models to your programs | Many examples rely upon a camera. It is very slow unless your device has a GPU. |
Working with words and sentences | No special hardware requirements for word embeddings. API keys needed for the rest. |
Making machine learning neural nets | It is very slow unless your device has a GPU. |
Finding the nearest neighbors | It is very slow unless your device has a GPU. |
The paper AI Programming by Children by Ken Kahn and Niall Winters describes this work and was published in the Proceedings of the Constructionism 2018 Conference. AI Programming by Children using Snap! Block Programming in a Developing Country by Ken Kahn, Rani Megasari, Erna Piantari and Enjun Junaeti was published at the EC-TEL 2018 conference and describes workshops with high school students in Indonesia using these AI blocks. An early version of the AI extension to Snap! is described in the paper Child-friendly Programming Interfaces to AI Cloud Services also by Ken Kahn and Niall Winters.
Constructionism and AI: A history and possible futures by Ken Kahn and Niall Winters describes our view of the history and future of the role of AI in constructionist learning. Deep Learning Programming by All by Ken Kahn, Yu Lu, Jingjing Zhang, Niall Winters, and Gao Ming describes our efforts in enabling students to build, train, and use deep learning models (as described in Making machine learning neural nets). Both papers were published in the Proceedings of the 2020 Constructionism Conference.
Programming word embeddings in Snap! by Ken Kahn, Yu Lu, Jingjing Zhang, Niall Winters, and Ming Gao was presented at SnapCon 2019, was translated to German in for the Log in teachers magazine, and a short version appeared in the English teachers magazine Hello World. This describes the material available in the guide Working with words and language.
Learning by enhancing half-baked AI projects by Ken Kahn and Niall Winters describes many of the projects listed on this page.
AI Snap! blocks for speech input and output, computer vision, word embeddings, and neural net creation, training, and use by Naveen Naveen, Ramana Prasad, and Ken Kahn. This is the full version of the short paper in the proceedings of the Twelfth AAAI Symposium on Educational Advances in Artificial Intelligence 2022.
This work has been presented at several conferences and universities. The slides can be found here. There are also slides from a talk about word embeddings and mathematics education.
The following demonstration programs use the AI Snap! blocks. They run best in the Chrome or Edge browser.
We have collected some projects by students who have used these AI blocks.
The Snap! AI blocks load this JavaScript file on Github and then calls the functions defined therein.
Send email to Ken Kahn (toontalk@gmail.com) if you encounter problems or have questions.
A GPU is highly recommended for chapter 4 image recognition, chapter 6 machine learning, and some demos. Nearly all modern computers have a GPU. Without one or with a very primitive one programs using machine learning may run very slowly. For example, the image machine learning commands run very slowly on Raspberry Pis. One version of the audio training primitives, however, do run well on Raspberry Pis.
You can import any of these libraries into your existing or new projects. The AI blocks can then be found in the Snap! palette under , , or any of the following custom categories