Learning Outcomes:
The student should develop:* An understanding of key principles of Distributed Systems Design* The ability to specify and design a distributed system* Core advanced programming skills in specific areas of Distributed Systems (e.g. Peer-2-peer, fault tolerant, or service oriented)* An appreciation of the theoretical underpinnings.