As we discussed, Arduino are bare metal machines. In particular there’s no standard way to do any kind of concurrent processing of the most elementary kind. In fact if you want to do anything at all complicated you end up essentially writing your own little real time operating systems.
The project is to investigate (by googling, looking through github, and by trying to implement) the requirements for some common robotics applications in terms of higher level operations. Starting with threads probably but maybe other things like coordinate system transformations, or geocoding related things. And then develop a simple Arduino real time OS library (e.g. SROS), well designed, coded professionally and available as a library to our students.
Note that this is not intended to mimic ROS. We need to take an open minded look at what foundation is most useful to (for example) get the mBot to do interesting thigs, so that students (and researchers) are not coding to the bare metal.
One approach is a code library (like Rails, very metaphorically) that creates a higher level set of abstractions relevant to doing interesting robotics on the arduino. Probably the best way to tackle it (after googliong and researching) is to try and make the mbot do something interesting and asking yourself, gee, what higher level constructs would have made this trivial to do?