
\begin{packed_itemize}
\item \pvar{Primary robot system components}: Be able to identify and
  understand the jobs and roles of core software modules comprising an
  autonomous marine vehicle including, external sensing, sensor
  fusion, on-board health sensing, path planning, autonomy, control,
  C2 communications, inter-vehicle communications
\item \pvar{Robot middleware}: the construction of complex software systems
  through asynchronous distinct software modules. Inter-process
  communication, serialization and deserialization of messages.
\item \pvar{Autonomy software community}: Understand how a MOOS
  community, a MOOSDB and set of connected MOOS applications,
  comprises the distinct components of an autonomous marine vehicle
  software stack.
\item \pvar{Simulation}: Understand (a) the difference between the
  rendering of vehicles and simulation of physical motion, (b) which
  modules replace a simulator on a physical vehicles, (c) how to
  launch multiple simulated vehicles on a single computer, over
  a collection of computers if running a distributed simulation.
\item \pvar{Data injecting and scoping}: Understand (a) the software
  tools and options for injecting (poking or writing) data into a live
  software community, (b) scoping (reading or visualizing) data values
  and changes in a live community. 
\item \pvar{Scripting}: Understand how shell scripts automate many
  components of the launch pipeline, especially in multi-vehicle
  simulations.
\item \pvar{Basic C2 (command and control)}: Learn how to interact
  with a deployed vehicle or vehicles through a GUI-based module, and
  how to configure C2 to suit a new set of mission objectives.
\item \pvar{Mission planning and launching}: Understand the core parts of
  mission specification, launch-time mission file configuration,
  and the role of shell scripting in complex mission launches.
\item \pvar{Behavior-Architectures}: How decision-making can be
  comprised of the influence of distinct behaviors. The advantages of
  a behavior-based architecture in terms of decoupled software
  development.  A historical account of behavior-based approaches.
\item \pvar{Action Selection}: The role of action-selection for behavior
  reconciliation and the pros and cons of the several available
  options.
\item \pvar{Multi-objective Optimization}: Understand the key concepts of
  multi-objective decision making, including the role of value functions,
  pareto optimality, and the application of multi-objective optimization
  to behavior-based architectures through the use of interval programming
  (IvP).
\item \pvar{Mission modes and structures}: Understand how mission modes are
  used for identifying relevant behaviors to accomplish the goals of the
  mission mode. 
\item \pvar{Dynamic behavior modification}: How and why one can
  dynamically modify a behavior at run-time. Understand the difference
  and similarity between mission-planning behavior configuration and
  run-time behavior configuration.
\item \pvar{Behavior events}: Understand how behaviors maintain their own
  unique internal state representation of the world and how they can
  regard certain state changes as events. How behavior can be configured
  to generate/post information upon these events that affect other aspects
  of the autonomy system. Understand certain states an events that are
  available to all behaviors, and discern them from states and events that
  unique to a particular behavior.
\item \pvar{Core behaviors}: Be familiar with certain core behaviors commonly
  found in most missions, such as waypoint following, obstacle and
  collision avoidance etc.
\item \pvar{Mission Planning}: Understand the methods and role of mission
  planning, in terms of application and behavior configuration as well
  as specification of spatial coordinates. How to look for and address
  mistakes in mission configuration in the pre-launch and launch
  phases.
\item \pvar{Multi-vehicle autonomy}: How the operation of a single vehicle
  generalizes to two or many vehicles. How mission launching and C2
  generalizes to handle multiple vehicles, and how information is passed
  between vehicle MOOS communities and to/from vehicles to C2.
\item \pvar{Inter-vehicle messaging}: Understand how inter-vehicle message
  are composed, routed and received between vehicles. The inherent
  limits of inter-vehicle messages in terms of range, frequency and
  bandwidth limits.  Understand the different communication modalities
  available for platform types (surface or underwater) and operation
  area (near-shore or open water).
\item \pvar{Collision and obstacle avoidance}: Understand the
  differences between avoiding stationary obstacles and moving
  contacts, the information that is needed for each and how this is
  generally obtained, and how this is handled in a behavior-based
  architecture.
\item \pvar{Behavior spawning}: Extend the notion of a behavior-based
  architecture with a fixed set of behaviors created at the time of
  launch, to the operation of the architecture where behaviors are
  spawned upon events, to handled an ephemeral event, and subsequently
  destroyed. The contact manager and obstacle managers will also be
  introduced.
\item \pvar{Core contact-behaviors}: Be familiar with certain core
  behaviors commonly found in all contact missions, e.g., collision
  avoidance, convoying, intercepting, formation keeping etc.
\item \pvar{Voronoi-based missions}: Understand the concept of a
  protocol-based collaborative autonomy method, where coordination can
  be achieved with only limited, local and periodic inter-vehicle
  position communications.
\item \pvar{Consensus-based missions}: Understand how richer
  inter-vehicle messaging, beyond sharing or position information, can
  be used by groups of vehicles to achieve a consensus of
  action. Basic inter-vehicle auctions and simple missions using
  auctions.
\item \pvar{Post-mission analysis tools}: Learn how to use generated
  mission log files to post-process, replay and analyze prior
  missions. Learn the GUI based methods and CLI methods, and which
  situations are suitable for each tool.
\item \pvar{Extending MOOS-IvP}: Obtain a template software tree from
  Github for user creation of MOOS apps and helm behaviors. Understand
  the basic structure of the software and build environment and how to
  augment your system shell environment to use new modules.
\item \pvar{MOOS app development}: Learn how to develop a new MOOS
  application from scratch, using an app template. Understand the
  basics of mail handling, data processing and publishing of results.
\item \pvar{Payload Autonomy Hardware}: Assemble a payload autonomy
  computer from basic components, wiring and water-tight connections.
  Use of ssh keys and Git deploy keys for obtaining public autonomy
  code augmented with student developed code.
\item \pvar{Basic robot field deployments}: Preparing robotic
  equipement for field operation, checking for systems health,
  integration of the autonomy computer for operation, launching and
  supervising a robot deployment, vehicle recovery, data offload and
  securing equipment for storage.
\item \pvar{Automated mission testing}: How to modify a field-ready
  robot mission to be run in simulatin in a headless (no GUI)
  unsupervised mode suitable for randomizing starting conditions,
  environmental events, module configuration parameters or any
  combination of the three.
\item \pvar{Automated post-mission analysis}: How to gather
  the results from several unsupervised automated simulations to
  convey trends in performance or detect outlier performance
  cases.
\end{packed_itemize}
