This course aims to introduce students to the principles and concepts involved in the design of distributed systems, system architecture and related protocols.