A primary objective of this course is to introduce participants to theoretical and practical issues involved in designing autonomy algorithms in fielded unmanned marine vehicles. A key insight we hope to convey in this course is the relationship between effective autonomous decision-making, sensor processing, and communications. Often the strengths in one aspect may compensate for the shortcomings in others, in effect creating an interesting design space of vehicle properties, where certain points in that space are more appropriate than others for certain design goals and constraints on vehicle size, cost, reliability and duration. \medskip In this class, participants will be introduced to robot architectures at four different levels - the robotic middleware level for managing software packages at the process level, a behavior-based architecture for autonomous decision-making, a field-control or nested autonomy level for organizing a system of multiple platforms, and finally the payload-platform interface that allows us to design our solutions in a vehicle agnostic manner. \medskip The class has a strong lab component with the goal of providing every participant the end-to-end skills needed to field actual marine robotic equipment. These skills include an understanding of the robot architectures, the effects of band-width and range limited communications on autonomy algorithms, basic C++ programming skills, cooperative software development and the use of version control services, and mastery of the command-line.