  The emergence of synchronization in a network of coupled oscillators is a
pervasive topic in various scientific disciplines ranging from biology,
physics, and chemistry to social networks and engineering applications. A
coupled oscillator network is characterized by a population of heterogeneous
oscillators and a graph describing the interaction among the oscillators. These
two ingredients give rise to a rich dynamic behavior that keeps on fascinating
the scientific community. In this article, we present a tutorial introduction
to coupled oscillator networks, we review the vast literature on theory and
applications, and we present a collection of different synchronization notions,
conditions, and analysis approaches. We focus on the canonical phase oscillator
models occurring in countless real-world synchronization phenomena, and present
their rich phenomenology. We review a set of applications relevant to control
scientists. We explore different approaches to phase and frequency
synchronization, and we present a collection of synchronization conditions and
performance estimates. For all results we present self-contained proofs that
illustrate a sample of different analysis methods in a tutorial style.
