Introducing lml_snap!

After a few months working on this new project, the time has come to launch it and begin a new adventure in the task of bringing the fundamentals of Machine Learning (ML) and Artificial Intelligence (AI) closer to the school world.

lml_snap! is a modification of the powerful block-based programming environment Snap! that incorporates new blocks to program computer applications capable of recognizing texts, images and numerical sets through Machine Learning techniques. That is, the same thing that can be done with LearningML but with two important changes:

The first change was to be expected. The name of the project is what it suggests. However the second one may seem a bit weird. How are we going to build Machine Learning models if we don’t have the tool designed for it? … Well, programming!

And it is that the idea of this new project is to approach the world of Machine Learning completely from programming. Can we create training data sets 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, programming with Snap! instead of with 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,

are done from the programming editor lml_snap! programming with the Machine Learning blocks. So, you can even build your own ML model editor.

The sample data collection, that is, the construction of the dataset, can be done as Snap! offers all the features of modern programming languages. For example, it allows defining procedures that return values, that is, functions (not Scratch) and both lists and procedures are treated as just another piece of data, so they can be assigned to variables and even passed as arguments to other functions. That is, the lists and procedures are “first class citizens.” We can also load structured files in CSV or JSON format and assign their content to variables that contain lists. And of course, we can create lists that contain any type of data, including another list.

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.

You can access the lml_snap! via the link:


You will enter an instance of Snap! own 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 “guided activities” section, I will be adding some activities to show you how to use these blocks to program applications with AI.

I hope this new project is at least as useful as learningML is being and that it helps teachers and students in scientific-technical areas to introduce the fundamentals of Machine Learning in a simple and fun way.