After some months working on this new project, the time has come to launch it and start a new adventure in the task of bringing the basics of Machine Learning and Artificial Intelligence to the school world.
lml_snap! is a modification of the powerful block-based programming environment Snap! that incorporates new blocks for programming computer applications capable of recognizing texts, images and numerical sets using Machine Learning techniques. In other words, the same thing that can be done with LearningML but with two important changes:
- The Scratch platform is replaced by Snap!
- Machine Learning model editor is removed
The first change was to be expected. The name of the project is what it suggests. However, the second one may seem a bit strange: how are we going to build Machine Learning models if we don’t have the tool designed for it? Well, by programming!
Here we go!
And the idea of this new project is to approach the world of Machine Learning completely from programming. Can we create training datasets with lml_snap! Yes, programming it. Can we build ML models with different ML algorithms with lml_snap! Yes, programming it. Can we use the generated model to make a computer application that uses it? Obviously yes, by programming with Snap! instead of Scratch.
That is, ALL phases of supervised Machine Learning:
- Training, where the sample data that constitutes the dataset is recompiled,
- Learning, where an ML algorithm builds the model from the previous dataset,
- Evaluation, where it is verified if the built model responds as we wish, and
- Application, where the ML model is incorporated into a computer application,
They are made from the lml_snap! programming editor itself by programming with the Machine Learning blocks. Thus, you can even build your own ML model editor.
The collection of example data, i.e. the construction of the dataset, can be done since Snap! offers all the features of modern programming languages. For example, it allows you to define procedures that return values, i.e. functions (Scratch does not) and both lists and procedures are treated as just another data, so they can be assigned to variables and even be passed as arguments to other functions. That is, lists and procedures are “first class citizens”. In addition, we can load structured files in CSV or JSON format and assign their contents to variables containing lists. And of course, we can create lists containing any type of data, including another list.
A little bit more about SNAP!
Snap! is a programming language that surpasses Scratch in many aspects. That is why it is more suitable for students from the 2nd cycle of secondary school and even first university courses. Proof of this is that the popular project The Beauty and Joy of Computing (BJC) uses Snap! as a programming language. This project is an introductory computer science curriculum developed at the University of California, Berkeley and the Education Development Center, Inc. and intended for non-computer specialist students at the high school level through the first year of undergraduate .
Therefore, lml_snap! It is designed to give another twist to learning Machine Learning techniques and is aimed at students who already have a sufficiently developed cognitive level and some interest in the field of science in general and computer science in particular.
How to access?
You can access the lml_snap! via the link:
- https://snap.learningml.org
You will enter a Snap! instance of the learningml.org project that incorporates a section called “learningml”. There you will find the ML blocks with which to build and use ML models for the recognition of texts, images and numerical sets. On the other hand, in the section “guided activities with lml_snap!”, I will be adding some activities to show you how to use these blocks to program AI applications. For now, you can already follow this, the lml_snap version of the LearningML prehistory quiz game.
I hope this new project will be at least as useful as learningML is being and that it will help teachers and students of scientific-technical areas to introduce in a simple and fun way the basics of Machine Learning.