This is a presentation of some complex problems of discrete mathematics in a simple and unified form using an original, general combinatorial scheme. The author's aim is not always to present the most general results, but rather to focus attention on ones that illustrate the methods described. A distinctive aspect of the book is the large number of asymptotic formulae derived. Professor Sachkov begins with a discussion of block designs and Latin squares before proceeding to treat transversals, devoting much attention to enumerative problems. The main role in these problems is played by generating functions, which are considered in Chapter 3. The general combinatorial scheme is then introduced and in the last chapter Polya's enumerative theory is discussed. This is an important book, describing many ideas not previously available in English; the author has taken the chance to update the text and references where appropriate.