Description:
The course gives an overview and practical experience in different ways of implementing distributed systems. The subjects include distributed systems terminology and properties, remote procedure systems, distributed object-oriented systems, distributed file systems, synchronisation in distributed systems, transactions, time service and programming with threads.
Learning outcomes:
After taking the course student must be able to describe and give practical examples about the basic properties of distributed systems: resource sharing, openness, parallel processing, scalability, fault tolerance and transparency. Student must be able to design a simple distributed system and explain the fulfillment of the following goals during design: naming, communication, software structure, load sharing and coherency management. Student must also be able to explain the security risks of the created system and be able to alleviate the risks. Student must be able to describe the programming models of threads and understand naming services, distributed file systems and Web Services. During the course students must participate in a group-project to create one distributed application using the knowledge obtained at the course.