Book Description: This introduction to the mathematical foundations and theory of distributed computing is theoretical in nature, describing algorithms and their correctness proofs, impossibility results and lower bounds for the fundamental problems.