Complex systems are characterized by many interacting units that give rise to emergent behavior. A particularly advantageous way to study these systems is through the analysis of the networks that encode the interactions among the system's constituents. During the last two decades, network science has provided many insights in natural, social, biological and technological systems. However, real systems are more often than not interconnected, with many interdependencies that are not properly captured by single layer networks. To account for this source of complexity, a more general framework, in which different networks evolve or interact with each other, is needed. These are known as multilayer networks. Here we provide an overview of the basic methodology used to describe multilayer systems as well as of some representative dynamical processes that take place on top of them. We round off the review with a summary of several applications in diverse fields of science.