This course first aims to introduce the student to the concepts, techniques and skills that are employed to design and implement a networking system or application working in a distributed manner; This means a number of processors connected by a computer network share the execution of the tasks of such an application, whereby each processor is responsible of a part of the application, and the different processors coordinate to achieve the application goals.