With STEM education being more prevalent these days, I was curious about a number of toys on the market geared towards teaching kids how to code. With all the options out there, which toy is the best investment? In the interest of scientific inquiry, I picked up four popular toys that support both simple block-based coding as well as advanced coding languages and gave them a try.
Programming the Robots
For each robot, I used their block-based programming language to program the evaluation course instructions. For the uninitiated, block-based programming isa process where you drag block-like icons on a screen to create a chain of commands that represents a simple program. This method was widely popularizedin education circles by MIT's Scratch. By simplifying coding this way, peoplecan become acquainted with the core concepts of programming without having to worry about the nuances of specific programming languages. Once someone is familiar with the basics of programming, it's easier to understand more complex programming issues such as language syntax and scoping.
To program Dash, I used the accompanying iPad app called Blockly. The Blockly apphas a several commands on the sidebar. To add a command to your program, simply click on the type of command you want to use, select the command you want and drag it over to the program area. The commands snap together to make a long vertical chain of commands, which are then executed when you click the startbutton. Blockly also supports using a few simple variables in the code if you want to keep track of things like the number of times Dash encountered an obstacle.
One thing I really liked about Blockly was that many of the options were presentedin terms of real-world values. So, for example, when you programmed Dash tomove forward, you could select the distance in centimeters.
Allin all, the Blockly app was simple and easy to use. Connecting to the robot was as simple as holding down the robot icon until a green progress bar was full,indicating that the connection had been established. The only real issue I hadwith Blockly was that the app crashed on me a few times while trying to program Dash. This was not a serious deal breaker as my program was intact when Ire opened the app.
To program Sphero, I used the SPRK app on my iPad. Just like Dash, there aregroups of commands at the bottom and you simply drag the command you want touse in the program and snap it into place. Once your program is ready, click the run button and Sphero will start executing the commands. The SPRK app allows you to modify preset variables such as speed and heading and well ascreate your own custom variables .
The SPRK app uses a different programming paradigm than the other robots. Instead of reacting to a single event, like having an obstacle in front, there is oneblock of code that is executed for every time a given event happens. This made programming Sphero a little abstract at times and could be hard for someone new to programming to understand.
I didn't particularly like the SPRK app that much. I found the large amount ofunusable space on the right annoying considering that I could not rotate theapp to use the space. I also found that the SPRK app did not give simple feedback if there was something wrong with a program. For example, I got this some what cryptic error when trying to flash the lights when a collision occurs:
That being said, one thing I really did like about the SPRK app was that at any timeyou could click on a code icon in the upper left corner and see how your block-based code translated into their Oval coding language. Being able to look at the under lying code could be really useful when transitioning to writing code in the corresponding programming language. I was also pleased with how simple it was to connect the robot to the SPRK app. The app would automatically establish the connection after the initial Bluetooth setup.
I programmed the EV3 using the corresponding Mindstorms software on a Maccomputer. With this software, blocks are laid out horizontally and can bebroken into separate lines to help with readability. I connected my EV3 to mycomputer via a Bluetooth connection, which not only allowed me to program therobot remotely, but also allowed me to see the real-time sensor values in thelower right corner. Executing a program was as simple as clicking the downloadand run buttons in the lower right corner.
One thing that is initially frustrating about the Mindstorms software is that, muchlike LEGO manuals, they don't really use words anywhere. At times it's notintuitive on how certain blocks should be used. Additionally, since the TRACK3 Rrobot used tank treads, there was no simple "move forward" command, but rather I had to specify the power and direction of each tank tread. Movement istime-based, so there's no simple way of translating a time into an actualreal-world distance.
Even though the Mindstorms software feels a bit abstract at times, it is stillpretty powerful. The software supports custom variables and also allows you to build custom blocks using the My Block Builder feature of the software. You can also add comments to your program to help you keep track of what you are doing.Additionally, the software allows you to add your own sounds and images to beused by the robot. One interesting feature of the EV3 is that the programmable brick has its own program editor so that you can modify the program on therobot without having to use the computer. As far as connecting the EV3, I found the Bluetooth connection to be a bit hard to establish at times. To fix this, Ihad to reconnect the EV3 to the computer via a USB cable just to reestablish the lost Bluetooth connection.
The mBlock version of Scratch also has an Arduino mode, which allows you to see how your mBlock program translates to Arduino code. In order to use this mode, you cannot have any non-robot sprite commands in your program (so no dancingpandas). Much like Sphero, this helps you to visualize how the blocks translateto Arduino code. Unfortunately, the generated Arduino code can be a bitcryptic, especially for someone who may not be used to staring at written Arduino code.
I thought that the mBlock software was really well designed and powerful. Those who have used Scratch before will find the software very easy to use. The window views are configurable so can you hide or resize different windows ofthe software. Like the Mindstorms software, mBlock allows you to create your own blocks or create custom variables for storing data. The mBlock app didcrash on me a few times but I was easily able to reload my work from a savedfile.