In the real world, programming autonomous robots is about designing and implementing how one can describe to a robot its role in a given situation (Hughes, C., Hughes, T., 2016).
This is exactly what students practice with KUBO, and there are no limits to the situations or scenarios that can be imagined and the tasks that KUBO can be asked to execute.
The language used to explain to KUBO its task or tasks is embedded in TagTiles®, which are puzzle-like pieces that snap together on a table-top. Students control KUBO without the use of computers or software programs.
KUBO is designed so that students learn about coding by practicing storytelling. They build their stories by sequencing actions and navigating objects. They plan and build their code in terms of the order of what happens before, next, or until another action.
So, for example, if KUBO is in a hurry or must run because of danger, students will need to plan sequences that use distance – or speed control tiles, because then the robot can go faster. If there is a traffic setting in a big city, it makes sense to use time control tiles, as the robot can then wait before crossing the street. If KUBO is on a safari to discover interesting wildlife, it might be good to make use of direction tiles as KUBO can watch out for animals hiding behind bushes or turn around to look for a running zebra. By asking students to present their work in terms of robot-situations or stories, defining one sequence or function at a time, you provide a fun and engaging way for them to explain and grasp their choices of coding sequences.
Let’s take this one step further. Imagine controlling and programming robots in real-world settings, such as robot-surgeons, service robots, healthcare robots, or a robot in a hospital setting bringing blood tests from a patient’s bed to a laboratory for analysis. If one day, there is a chair in the way on the robot’s route, then it becomes difficult for the robot to reach its goal. In this case the code; i.e. the next route or function must tell the robot how to tackle the obstacle. The problem must be identified, and an alternative action must be determined, in order for the robot to reach its destination. Just like real-world computer programming, the programmer must change an algorithm so that the robot has a systematic behavior to execute when running into obstacles in a given scenario.
Translated to standard coding language this looks something like: “If there is a bug on the route, then execute this command: turn right and take two steps ahead”, “Else, if there isn’t a bug on the route, then execute this command: take one step ahead and turn left”. In coding terms, you have then introduced your students to the advanced concept of conditions.