As a student in high school I struggled with learning how loops worked, once I understood the basics I still struggled with implementing complex loops such as the for loop. Once I correctly understood these loops I could build complex things quicker and create more efficient code.
These blocks snap together magnetically and allow the user to physically program. Each block also has an LED to show what code is currently being run in the loop and how the loop advances, the LEDS also help to explain the concept of blocking and non blocking code. More blocks can be added such as conditional blocks.
The blocks have pogo pins that allow them to communicate nessecary information to each other, the configuration of these is standard to prevent the connection of incompatible blocks and the permanently destruction of them. This ofcourse does take away some of the trial and error that is at the core of tinkering.