This course discusses algorithms used for NP and NP-hard problems. Specifically the use of cooperative and adaptive algorithms.