on 10 March 2003
When I first bought this book I was really enthusiastic about it, as it is relatively cheap compared to other books on distributed algorithms available on the market, and as it deals with almost the same topics as Nancy Lynch's "Distributed Algorithms." Unfortunately, when I actually started reading the book my enthusiasm tempered with every page. Let me explain why.
Most importantly, although this is a second edition, nothing much has changed compared to the first edition which appeared in 1994. This is amazing as lots of things have happened since then. The developments which took place during the nineties are mostly limited to some remarks at ends of sections. The only notably exceptions are the new chapter on the sense of direction and a very short and meagre chapter on failure detectors.
A second problem is that the author makes the subject area of distributed algorithms appear as if it is nothing more than just a collection of very dissimilar problems. This might confuse quite a number of people. Again, the author is ignoring some important research which took place the nineties. This research showed that much of the problems in the book can be seen as instances of the Consensus problem. That is, the problem of designing an algorithm that allows a number of processes to reach an agreement on something.
A third problem is that the author sometimes literally follows the treatment of algorithms as in their original papers. This is not always a good thing. For example, some termination detection algorithms are explained by incrementally constructing the invariant needed for the correctness proof. Although this might work in a technical paper of a few pages intended for researches, this is definitely no the way to go in a book also intended for students.
Finally, there are a number of smaller but quite annoying problems. First, most of the proofs of algorithmic properties the author gives are very roundabout, which makes them very difficult to understand. Second, the notation the author uses seems to fluctuate per chapter and even per algorithm, making you wonder over and over again what the author means. Third, the author in some instances tends to focus in the algorithms with the most formal verification. These are certainly not always the most interesting algorithms. For example, in the case of routing algorithms the author focuses on the not so interesting Netchange algorithm, while he almost completely ignores the much more interesting Merlin-Segall algorithm.
My advice: do not buy this book! Although it is more expensive and a bit older try the book by Nancy Lynch. Of course, it also misses some of the most recent research, but at least it does not suffer from the other shortcomings of Tel's book. It is more value for the money.