No picture
About >
Content >
Authors >
Buy >
Teaching >
Hands-on >
Errata >
Reviews >
Links >
Contact >

Introduction to Reliable and Secure Distributed Programming


This page collects reviews of the book, which the authors were able to track. If you are aware of a review not shown here please let us know. We will also be happy to post your review.

Reviews of the second edition

28 May 2013 on

Reviewer: Alex Popescu (US)

For textbooks, "Introduction to Reliable and Secure Distributed Programming" is a superb introduction to distributed computing from a formal perspective; it's really not about "programming" or "engineering" but about distributed system fundamentals like consensus, distributed registers, and broadcast. Used in Berkeley's Distributed Computing course.

2 July 2013 on

Reviewer: Charles E. Wegrzyn

One of the best... If you are "into" distributed computing this is a must-have book. The book gives descriptions of common distributed problems and offers a number of different possible solutions, including pseudo-code for their implementations. This has to be one of the top 10 on any programmers book list.

Reviews of the first edition

1 October 2006 on

Reviewer: Vivien Quema (France)

This book is an excellent introduction to distributed algorithms. It provides a very good basis for teaching this topic to BS and MS students. It is easy to read and uses a very intuitive formalism for the description of algorithms. Besides, Java code is available for practicing described algorithms.

I highly recommend it!

15 September 2006 on

Reviewer: Felix Freiling (Germany)

The theory of distributed algorithms that can tolerate node failures has evolved over more than 30 years in many diverse and distinct facets. This book takes a new approach at presenting the area. It presents many different algorithms in an incremental step-by-step fashion within a uniform system model (asynchronous systems with failure detectors). I have used the book in a third-year diploma course on fault-tolerant distributed algorithms and it worked well. I focussed on the crash-stop model and went through all abstractions from low-level fair-lossy channels right up to terminating reliable broadcast. With some additional material explaining important proofs (like the infamous "FLP" and "CHT" results) this already took me an entire semester with 4 lecture hours per week even without looking into the programming exercises. The strength of the book is its concise and clear presentation and explanation of the algorithms and the corresponding abstractions. The bottom line of it for me is that the right abstractions are the key to master the complexity in distributed systems. This is exemplified by the collection of elegant and simple algorithms for difficult problems once consensus has been solved. Overall, Guerraoui and Rodrigues have managed to compress many major lines of established research into a very instructive volume which I will continue to use in my classes.

11 September 2006 on ACM Computing Reviews

Some of the key algorithms for reliable broadcast, synchronized access to data, and achieving consensus are covered in this textbook, on abstractions and algorithms for building distributed systems. The book begins... (review available online for Computing Reviews subscribers).

7 August 2006 on

Reviewer: Seif Haridi (Sweden)

To understand distributed systems you should first understand the underlying principles and limitations. And the best way to do this is by studying distributed algorithms with various assumptions about the failure behavior of the network and processing nodes. This is exactly what this book is about. And is done in a modern and mature way. For example the book uses models of failure detectors as underlying mechanism to classifiy systems instead of the old way of classifying systems as synchronous vs. asynchronous. The use of different levels of abstractions in this book is significant. It make it much easier to describe complex algorithms is simple terms. While there are topics that are not covered in this book, like for example self-stabilising algorithms, and more detailed account of distributed transactions, this book is the best start in the area of distributed computing.

20 June 2006 on

Reviewer: W Boudville (US)

The book is about abstractions and algorithms for distributed programming. Arguably, the abstractions are considered to be at least as important as the algorithms. The abstractions effectively are assumptions that let you push down certain details into lower level code. A very modular approach that allows for a solid object oriented design.

Notably, you should not have to worry about the semantics of pushing bytes from one machine to another. Network programming is now so well established that you won't have to write code to move a byte set. So there is a stable, debugged network protocol stack. (Not necessarily TCP/IP, to be sure.)

The algorithms in the book can then focus on such matters as how to distribute data and collect results across a network of machines. Very importantly, to also detect when a machine might have timed out or otherwise generated a failure.

19 April 2006 on

Reviewer: A CS professor from EU (anonymous)

I've used this book for my students in an introductory course in Distributed Systems this year. I've tried with other books in the past but I ended up with the necessity of providing my students with simpler material because existing textbooks in distributed systems are pretty difficult to understand for beginners without any grasp on the field. I've noticed with some relief that students this year were pretty happy about this book, they find the book clear and useful. I believe that this book provides students with simple techniques on how to design a distributed algorithm and gives an immediate understanding of fundamental concepts and principles of distributed computing.

2 April 2006 on

Reviewer: A reader (anonymous)

In contrary to the review titled "Collection of Trivialities and nonsense" (which by the way appears to be a pretty unserious review), my impression of this book is really good and for me stands out as one of the best books covering the basic principles of (reliable) distributed computing!

As a Ph.d. student in computer science, I have read numerous scientific articles covering various sporadic topics of distributed computing. With this book, I have finally found a concise collection covering the fundamental principles of distributed computing from which one can comprehend the nature of this highly interesting and complex reseach field.

In an understandable and interesting language, the book first covers the basic abstractions and assumptions used throughout the book (and in the literature in general), and then goes on to using these when presenting the basic mechanisms in this field, such as relieable broadcast, shared memory, consensus etc.

In addition, the book is very well written (with a sense of humour) and uses numerous illustrative exemplifications to demonstrate concepts or important points. At the end of each chapter, the book includes both historical notes that are both interesting and informative on the evolution of this specific topic, and prsents a number of challenging exercises to further develop one's skills in this exciting research area.

To summerize, the book is really worth reading for people having interest in or wanting to learn about the art of distributed computing (regardless of bachelor, master or Ph.d. level) and thus I highly recommend it!

1 April 2006 on

Reviewer: Maarten van Steen

Stating that this is a book full of trivialities and nonsense as one reviewer did so far, can only reflect a miscomprehension of what distributed systems are all about. There are many aspects that need to be dealt with when learning about distributed systems. Algorithms is one of them, and this book does a great job in explaining how and where they fit in. There are only a few truly good books on distributed algorithms, but coming from the systems world, my main objection to most of them is that they pay poor attention to mapping abstract descriptions to real programs.

Guerraoui and Rodrigues manage to find the right balance between theory and practice. Every time they describe one of those fundamental algorithms, a student should be able to easily see how the algorithm can be implemented in a real distributed system. Moreover, by following an approach by which algorithms are stacked one on top the other, it should be evident how even complex algorithms map to the real world. Both authors are known in the scientific community for their excellent theoretical work, but have also gained a reputation of being able to put their money where their mouth is: they implement distributed systems. This book reflects this rare ability of being able to capture theory and practice.

The authors focus on reliable distributed programming, and discuss the topics one would expect: consensus, broadcast, ordered delivery, failure models, and so on. My only objection is that I wished they hadn't called it programming. To my opinion, it's more than that: it's all about distributed algorithms.

In conclusion: any person who is seriously interested in distributed systems or algorithms should check out this book. You will not be disappointed.

22 Mar 2006 on

Reviewer: A reader (anonymous)

This book has some potential for becoming the worse book ever written on distributed systems. It is pretentious and contains quite a few mistakes. The author tries to mix theory and practice, but does not show particular grasp on any of those. I would encourage whoever is looking for a *real* book on distributed systems to refer to existing texts as they provide a much better and sounder reference.