I will once again be teaching discrete mathematics this summer, so I am searching through the mathematical publishing pathways looking for a suitable textbook. Therefore, that is the context within which I examined this book.
It certainly is the largest discrete book that I have encountered; including the appendices and problem solutions, there are over one thousand pages. Grimaldi has tried to include every topic that falls under the discrete mathematics tent. Therefore, this is a book that could be used for a two semester sequence in discrete mathematics.
When examining discrete books for possible adoption I start with the simple premise that logic, set theory and functions and relations must be covered very early. In my ideal world, they are the first three chapters. Set theory and relations are so fundamental a part of other areas that I am surprised when authors don't cover them first. The first chapter in this book covers basic counting principles. While this doesn't break too much from my ideal sequence, I see no overpowering reason why fundamental counting should be before set theory. Given that the rules of counting for sums and products can easily be related to sets, there is a strong justification for putting set theory first.
The coverage is split into four parts, the first of which consists of the seven chapters:
*) Fundamental principles of counting
*) Fundamentals of logic
*) Set theory
*) Properties of integers: mathematical induction
*) Relations and functions
*) Languages: finite state machines
*) Relations: second time around
In my opinion, the order of the topics should be:
*) Fundamentals of logic
*) Set theory
*) Relations and functions
*) Relations: second time around
*) Fundamental principles of counting
*) The principle of inclusion and exclusion (currently chapter 8)
*) Properties of integers: mathematical induction
*) Generating functions (currently chapter 9)
*) Recurrence relations (currently chapter 10)
*) Languages: finite state machines
The current chapters 8 through 10 make up part two of the book.
Part three is graph theory and applications and part four is modern applied algebra. I have no issues with the order here. The chapter headings for the fourth part are:
*) Rings and modular arithmetic
*) Boolean algebra and switching functions
*) Groups, coding theory and Polya's method of enumeration
*) Finite fields and combinatorial design
With this part being nearly two hundred pages in length, the coverage is extensive.
Grimaldi takes a more rigorous approach than many other authors of discrete texts, while I did not examine every single theorem, I did look at a lot of them and all were accompanied by a proof. The exposition is clear, there are many worked examples, a large number of exercises and solutions to the odd-numbered exercises are included. A summary and historical review of the topic follows each section.
If we offered a two course sequence in discrete mathematics, then I would consider adopting this book. Such a situation would allow me to present the material at a higher level of rigor, where this book excels. However, with a one semester course designed to teach computer science majors the mathematical fundamentals they need, this book is both too long and too deep.