Welcome to 02148: Introduction to Coordination in Distributed Applications
This course provides a gentle introduction to coordination and distributed programming. It is a project-oriented course where participants work in groups to develop a distributed application.
Here are some videos of projects done in some editions of the course:
What is coordination?
According to the Oxford English Dictionary "coordination" is
"the organization of the different elements of a complex body or activity so as to enable them to work together effectively".
In IT systems the "elements" are computational entities (programs/applications/services/processes/etc.) and the "complex body or activity" is a concurrent system that emerges by making the individual entities work together, either cooperating or competing. In our course coordination is about organising the interaction between software applications possibly running on different devices, for example to build a complex distributed application.
What do I need to follow this course?
You need some familiarity with programming in a language like Java, i.e. some ability to design and implement algorithms and data structures, and some ability to project a software application (see prerequisites for DTU students).
What will I learn?
You will learn simple but powerful models of coordination, and you will use them to model and develop frameworks and applications for distributed computing.
Why distributed tuple spaces?
One of the models of coordination you will get to know are tuple spaces. Tuple spaces are easy to understand and provide simple model of coordination for distributed applications. They also provide a good basis to learn other models and frameworks for coordination such as message-passing libraries, actor-based languages, web services, distributed database and storage systems, and parallel programming based on shared memory.
What will I be doing?
The main activity of the course is to develop a project in a team.
The course includes lectures that introduce to distributed programming using tuple spaces and other models of coordination. The teaching material is available here:
The lectures and the projects will be based on pSpaces, a set of libraries supporting tuple spaces.
Which kind of projects can I do?
Examples of projects in previous editions of the course include: tuple space frameworks for .NET, Python and Raspberry Pis, multiplayer turn-based and real-time games, simulators of drones and robots, home automation systems, resource and stock management systems, scheduling and planning systems, image processing applications, web-based collaborative tools, and sensor coordination systems.
Is this useful at all in real life?
Yes, coordination is present everywhere, in web services and applications, in parallel and high-performance computing, in communication protocols of all kinds, in embedded and cyber-physical systems, in intelligent and multi-agent systems, in the IoT and onther networked systems. The abilities you will acquire in this course will be useful whenever you will study such systems and, possibly, develop such kinds of systems.