This course takes a programming language based perspective. In the first lectures, an advanced distributed programming language is presented. Students are acquainted with complex object models, concurrency models, distribution models, service discovery and failure handling techniques.
The course also exposes students to reflection and meta-level programming since these techniques have always played an important part in distributed programming. The course shows how these techniques can be used to implement important concurrency and distribution abstractions such as conditional synchronisation, futures, leased references, tuple spaces, peer-to-peer algorithms.
The course teaches a number of fundamental results in distributed algorihtms such as the FLT theorem, CAP theorem and their implications. Other fundamental topics are synchronization, agreement and replication.
The course teaches a number of modern technological advancements such as RFID-technology, IoT, mobile-cross platform technology, and Complex-Event Processing.
In parallel with these lectures, students are required to prepare a programming project in the context of an advanced distributed system (middleware or programming language).