  Random graphs have proven to be one of the most important and fruitful
concepts in modern Combinatorics and Theoretical Computer Science. Besides
being a fascinating study subject for their own sake, they serve as essential
instruments in proving an enormous number of combinatorial statements, making
their role quite hard to overestimate. Their tremendous success serves as a
natural motivation for the following very general and deep informal questions:
what are the essential properties of random graphs? How can one tell when a
given graph behaves like a random graph? How to create deterministically graphs
that look random-like? This leads us to a concept of pseudo-random graphs and
the aim of this survey is to provide a systematic treatment of this concept.
