227-0558-00L  Principles of Distributed Computing