Understanding the interactions between the components of a system is key to understanding it. In complex systems, interactions are usually not uniform, not isotropic and not homogeneous: each interaction can be specific between elements.Networks are a tool for keeping track of who is interacting with whom, at what strength, when, and in what way. Networks are essential for understanding of the co-evolution and phase diagrams of complex systems. Here we provide a self-contained introduction to the field of network science. We introduce ways of representing and handle networks mathematically and introduce the basic vocabulary and definitions. The notions of random- and complex networks are reviewed as well as the notions of small world networks, simple preferentially grown networks, community detection, and generalized multilayer networks.