In complex systems, individual components interact with each other, usually in nonlinear ways, giving rise to complex networks of interactions that are neither totally regular nor totally random. Partly because of the interactions themselves and partly because of the interaction topology (the structure of who interacts with whom), complex systems cannot be properly understood by just analyzing their constituent parts, which poses important challenges from both a fundamental perspective and an "application" perspective. The importance of the non-linearity of interactions has been recognized, taken into consideration, and studied for decades. In contrast, the structure of the network of interactions was traditionally ignored and approximated by one of two limiting cases: a regular low-dimensional lattice or a completely random uncorrelated graph. It wasn't until the late 1990s that the scientific community, spearheaded by statistical physicists, started to look for a unified framework for the statistical description and classification of "complex interaction networks".