Following a long hiatus, the GeekMom Bit by Bit series is back again to take a look at another great tool for teaching programming to kids: RoboMind. The objective in RoboMind is to create programs that allow a robot to perform certain tasks. This educational software offers a no-prerequisite-required introduction to programming, but it’s also flexible enough to offer a challenge for the older, more experienced students.
The side-by-side view of the code in a text editor panel and the testing robot environment in a graphical user interface (GUI) panel provides a feel for what programming is like in the real world—the good old text editor way—while still offering an eye-catching GUI which can help entice the attention of a young audience.
RoboMind uses its own programming language. The language itself is pretty simple. Its list of available robot actions (move, paint, see, etc.) and programming structures (loops, conditions, procedures, etc.) is fairly limited. However, the level of difficulty comes from the complexity of the tasks you aim to make the robot do. For example, if the goal of your program is to make the robot paint a square, that can be achieved very quickly once you’re familiar with how to program robot actions like move and paint. On the other hand, if you take for example some of the challenges available on the RoboMind website, like having the robot recursively draw a spiral or having the robot search the map for certain objects, the level of difficulty jumps exponentially. The latter examples not only teach how to use RoboMind‘s programming syntax, but also how to think like a programmer to solve problems in computationally or time effective ways.
Though I used the word “limited” to describe the list of available robot actions and programming structures, I was happy to see that comments and procedures were included. A comment is a line of text you can add in your code to describe what it is doing for future reference, usually starting with some sort of escape character so that the text is ignored at compile time and runtime rather than to be executed as code. Adding comments to your code is a good habit to pick up from the start, yet comments are not included in many programming teaching tools for kids. So props to RoboMind for that.
Procedures—segments of code that perform a smaller subtask, the same way an employee may do a small section of work that is part of a larger goal unknown to all but upper management—are also often excluded from these programming teaching tools. It can make sense to exclude procedures in tools aimed for smaller children, as they can be quite tricky to grasp. However, knowing when and how to segment your code into procedures is a vital skill for a programmer, so I’m glad to see them in this tool aimed for a slightly older crowd.
I couldn’t find in the documentation if procedures could take in different data types as parameters, or return values. While some robot actions, like frontIsClear, returns a Boolean (true/false value) that the user can use in a condition, I wasn’t able to create a procedure myself that did the same thing. Only integers can go in as parameters. I guess that’s why parameter data types and return values were not covered in the documentation. Nevertheless, being able to use procedures at all is a good start.
In its GUI panel, the robot operates on a map. Creating maps, while simple, is tedious work. It’s entirely text based. A map consists of tiles, where one character represents one tile. For example, “C” stands for a top left corner tile, “H” a top tile, “G” a left tile, etc. A map with a single rectangular wall would look like this:
I would have loved to see some sort of graphical map builder tool that let you click-and-drag tiles onto a maps, and have RoboMind create the text file in the background. Nevertheless, the opportunity to mix-and-match scripts and maps opens the opportunity to create interesting assignments. If the student is assigned to write a script for the robot to travel a maze, the teacher can test the student’s program with an entirely different map than the one the student used to test his or her code. Therefore, the student is encouraged to use proper logic to code a solution that will solve the problem in all scenarios—as good code ought to do—rather than just hard-coding a solution that only works in one scenario.
If getting started feels overwhelming, RoboMind does offer a few tools to help. First of all, there’s a “Remote control” tool that gives you a graphical user interface to control the robot. The control actions are limited to left turn, right turn, move forward, move backward, paint white, paint black, stop painting, pick up, and put down. It will automatically create a script that matches the sequence of control actions you clicked, which you can then copy and paste into your own script.
Another helpful tool is the “Insert” menu, which gives you a list of all possible robot actions and programming structures. Choosing one item on the list will add it directly into your script at the current cursor location.
Finally, RoboMind also comes with documentation and sample scripts, which is pretty standard to any software download.
Despite being first launched in 2005, RoboMind doesn’t look or feel outdated. New releases have appeared over the years, and the new RoboMind Academy—a spin-off offering RoboMind-centric online programming classes—did a beta launch just last month. If you are looking for educational software that will introduce your child or student to text editor-based programming rather than a GUI-centric programming environment like Kodu or Scratch, RoboMind can be a great place to start.
Moreover, if your child is begging for an ever-so-expensive Lego Mindstorms robot, starting them off with RoboMind can be a good assessment tool to determine if your child is really interested in robot programming before spending the big bucks. The time invested in learning RoboMind prior to Lego Mindstorms is far from wasted, there’s even an export feature that lets you port your RoboMind scripts to the Lego Mindstorms NXT 2.0.
The objective in RoboMind is to create programs that allow a robot to perform certain tasks.
RoboMind is designed to serve as an introduction to programming, without prerequisites. Difficulty level can be adjusted by the complexity of the exercises, meaning it can be appropriate from elementary school to high school.
Ease of installation (on a scale from 1-easy to 5-hard): 1
It is as easy as clicking a couple of buttons.
Code readability (indentation, comments, naming convention):
The tool does allow code indentation, and in fact will automatically apply indentation as you type. However, because the RoboMind language uses curly brackets rather than indentation to define the beginning and end of a procedure, condition, or loop, correct indentation is not required for the program to run correctly.
Comments are allowed. They are used in sample scripts and documentation, thus encouraging the user to do the same. Hurrah!
The use of variables is limited. As far as I can tell, the user cannot explicitly create variables except as parameters of a procedure. Data types are not introduced; only integers can be passed into robot actions and procedures. Conditions are Boolean based and can use operators (not, and, or), but evaluations (e.g., if value = 1) are not possible. The naming of the procedures and procedure parameters are up to the user, but good naming convention are not covered in the documentation.
Methodology (designing, writing, testing, debugging, maintaining):
The side-by-side view of the coding environment and test environment allows the users to code and test as they go. There’s a play button available to run the whole script. There is also a next button to run commands one line at a time, which allows for efficient debugging. If an error occurs during runtime, a message will appear to indicate what the problem is.
Software quality (reliability, security, robustness, usability, portability, maintainability, efficiency, performance):
The use of comments allows a gateway to talk about code maintainability. The mix-and-match possibilities of testing the same script against different maps can cover code robustness, reliability, and usability. The use of procedure, though limited, can help introduce maintainability, efficiency, and performance.
Control flow (conditions, loops, exceptions):
The only conditional flow available is “if-then-else,” and the only loop flow available is “repeat.” “Break” and “end” are also available to exit a repeat or end the program, respectively. Conditions are limited to Boolean values without variables, but does include operators. Exceptions handling is not available.
RoboMind runs on Windows, Linux, and Mac OSX. They are also currently working on an online version that would be tablet-compatible. Programs made in RoboMind can be exported to Lego Mindstorms NXT 2.0.
RoboMind is free for personal use, however a purchased license is necessary for educational or commercial institutions.
There’s no separate resources aimed specifically for kids. See list of resources for parents and teachers below.
For parents and teachers:
RoboMind recently launched RoboMind Academy, which offers online programming courses. It is still in beta stage.
List of challenges to assign yourself or your child/student.
Overall score (on a scale from 1-bad to 5-good): 3
I love the look and feel of the side-by-side view, the text editor-based coding environment, and the use of comments and procedures. The robot testing environment isn’t super flashy, but it does the job and it doesn’t look dated. However, I am really disappointed about how limited the flexibility of the procedures, variables, and conditions are. Nevertheless, it’s a decent stepping stone into the world of text editor-based programming environments for those who feel they’ve outgrown the click-and-drag GUI-based programming teaching tools.
You might also be interested in reading these other GeekMom posts: