Technological advances related to unmanned aerial vehicles (UAVs) has enabled the use of UAVs for a plethora of real-world applications such as package and medical delivery; infrastructure inspection; environmental sampling; and search and rescue. The objective of this research is to design algorithms that enable cooperation between many UAVs. UAVs working cooperatively together will achieve much more than a vehicle acting independently.