The main theme of the course is study of the underlying principles and technologies that are used to realize large-scale distributed systems. The course will give an overview of the building blocks used to construct distrubuted systems (for example programmimg, security, and service models) and discuss the trade-offs that come into play when distributed systems are scaled to large scale. The course also gives an overview of the main paradigms of distributed systems and computing and studies current examples from the fields of Peer-to-peer, High-Performance, High Throughput, Grid och Cloud computing. Great emphasis is placed on the acquiring practical skills in distributed systems development.