This is a textbook for an introductory combinatorics course that can take up one or two semesters. An extensive list of exercises, ranging in difficulty from "routine" to "worthy of independent publication", is included. In each section, there are also exercises that contain material not explicitly discussed in the text before, so as to provide instructors with extra choices if they want to shift the emphasis of their course.It goes without saying that the text covers the classic areas, i.e. combinatorial choice problems and graph theory. What is unusual, for an undergraduate textbook, is that the author has included a number of more elaborate concepts, such as Ramsey theory, the probabilistic method and -- probably the first of its kind -- pattern avoidance. While the reader can only skim the surface of these areas, the author believes that they are interesting enough to catch the attention of some students. As the goal of the book is to encourage students to learn more combinatorics, every effort has been made to provide them with a not only useful, but also enjoyable and engaging reading.
If it weren't for the obscene amount of typos, I would give the book 5 stars. However, the book becomes incredibly difficult to read at times due to these typos, which force the reader to doubt himself. An egregious example of a typo occurs in the chapter on complexity theory. Here, Bona gives an example of a Turing Machine which is supposed to determine if a number is divisible by 3. Unfortunately, the machine may stay at the "start" state indefinitely, therefore never halting. There are also typos in some of the end-of-chapter equation lists.
The typos, in my opinion, warrant a 2 star deduction from an otherwise 5 star book.
I new a large chunk of the material prior to reading the book - however, the presentation was pretty good. I definitely recommend it for a first course!