  Robotics is incredibly fun and is long recognized as a great way to teach
programming, while drawing inspiring connections to other branches of
engineering and science such as maths, physics or electronics. Although this
symbiotic relationship between robotics and programming is perceived as largely
beneficial, educational approaches often feel the need to hide the underlying
complexity of the robotic system, but as a result fail to transmit the reactive
essence of robot programming to the roboticists and programmers of the future.
This paper presents ROSY, a novel language for teaching novice programmers
through robotics. Its functional style is both familiar with a high-school
algebra background and a materialization of the inherent reactive nature of
robotic programming. Working at a higher-level of abstraction also teaches
valuable design principles of decomposition of robotics software into
collections of interacting controllers. Despite its simplicity, ROSY is
completely valid Haskell code compatible with the ROS ecosystem. We make a
convincing case for our language by demonstrating how non-trivial applications
can be expressed with ease and clarity, exposing its sound functional
programming foundations, and developing a web-enabled robot programming
environment.
