Elements of Distributed Computing,
V. K. Garg,

Departing from the focus on shared memory and synchronous systems commonly taken by other texts, this is the first useful reference based on an asynchronous model of distributed computing. The emphasis of the book is on developing general mechanisms that can be applied to a variety of problems. Its examples---clocks, locks, cameras, sensors, controllers, slicers, and synchronizers---have been carefully chosen so that they are fundamental and yet useful in practical contexts.

Links to the courses that use it either as a text or supplementary material. (Please send me email at garg[AT]ece.utexas.edu if your course is not listed.)