In the past twenty years we have being witnessing a revolution in information and communication technologies, consisting in an astonishing progress in many different research fields. Consider for instance the innovations not only in the classical fields of wireless communication (design of high performance codes very close to the Shannon limit), computer engineering (parallel computing, computer vision, data mining), bioinformatics (genoma interpretation) and VLSI technologies, but also in new fields which will have a great impact in the future such as wireless sensor networks and smart dust, air traffic control, large scale surveillance systems, unmanned mobile multi-vehicle systems, biological networks interpretation and so on. All of these problems have a common feature, namely they typically deal with complex systems and aste for the solution of large scale optimization problems requiring a prohibitive amount of computation effort even in low dimension. Moreover, the complexity of such systems requires solutions which need to share robustness and adaptation. In spite of the inherent difficulty of these issues, fundamental contributions have already appeared towards the solution of such problems. All these contributions are based on the exploitation of the common structure that, in many cases, these complex systems exhibit: they are often the result of the interactions of numerous but rather simple entities. The complexity is then a consequence of the interactions architecture described by a network and the solutions can be based on mathematical models which allow to predict how the designed local rules give rise to a global behavior obeying prescribed specifications. The mathematical tools which are playing a fundamental role in addressing these new scientific issues come mainly from combinatorics, probability theory, and statistical mechanics. The concept of graph plays a prominent role. Besides being the basic model of any communication network, it also appears as a natural model to describe interactions among variables: an instance of this are graphical models in modern coding theory. Random graphs are, in particular, the right model to describe complex networks (e.g. internet, wireless communication networks, sensor networks). Randomness enter at different levels: as a smart technique to mimic the development of complex networks, as an unavoidable modelling technique of faults or noise in the communication links, or also as a useful technique to find typical codes or