This course focuses on the fundamental principles and models underlying all aspects of distributed computing. It also thoroughly addresses all practical system-like problems by presenting the theory behind and algorithms for such problems.
Textbook
A.D. Kshemkalyani and M. Singhal,, Distributed Computing Principles, Algorithms, and Systems, Cambridge University Press, March 2011.