This document provides a review of the bat algorithm, which is a bio-inspired optimization algorithm developed in 2010 based on the echolocation behavior of microbats. The paper summarizes the basic behavior and formulation of the bat algorithm, reviews variants that have been developed, and highlights diverse applications that have been studied. It also discusses the essence of algorithms and links between algorithms and self-organization, noting that optimization algorithms can be viewed as complex dynamical systems that self-organize to select optimal solutions.