Principles of Distributed Computing - Summary