Introduction to Distributed Algorithms by Gerard Tel & Tel Gerard