This exercise is intended to be done in part using LIVE-CODING, as follows:

Step 1: Explain the exercise to the students.

Step 2: Explain how to work in a SHARED project,
        per  HowToShareModules.pdf  herein.
        
Step 3: Students practice by implementing the  libs  modules:
  - Team members 1 and 3 pair program:
       libs/rosebot_drive_system.
  - Team members 2 and 4 pair program:
       libs/rosebot_touch_sensor
  - If a team lacks team members 3 and/or 4, do single (not pair) programming.
  
  To do this step:
  - Step 3a:
    The instructor live-codes TODOs 1 through 3.  They are the SAME
    in each module above so both sub-teams can work at the same time.
      
  - Step 3b:
    Then the instructor live-codes TODOs 4 through 7 in
        rosebot_drive_system
    while team members 2 and 4 watch to get the basic ideas.
      
  - Step 3c:
    Then the instructor live-codes TODOs 4 and 5 in
        rosebot_touch_sensor
    while team members 1 and 3 are working on the rest of rosebot_drive_system.

Step 4: Students live-code the  rosebot  module, so that they understand
  the idea of accessing subsystems through a constructed RoseBot object.
  The students use ONE computer but TEAM-programs (using the ENTIRE team).
  
Step 5: After one of the two sub-teams finish their rosebot_... module,
  students practice by implementing the  labs  modules, using pair-programming
  as before but SWAPPING goals: Each sub-team tests code that the OTHER
  sub-team wrote (so that the entire team is familiar with ALL classes/methods).
  
  To do this step:
  Step 5a:
  The instructor live-codes TODOs 1 through 5 in
     lab1_drive_system
  while the other sub-team does almost identical code in
     lab2a_touch_sensor
  
  Step 5b:
  The instructor explains the INPUT part of the testing code.
  
  Step 5c:
  Students finish from there.