Remote Teaching
| Lectures: | Zoom Link |
| Lab Sessions | Microsoft Teams Link Microsoft Teams Team Password: iygrnyc |
General
| Professor: | Panagiota Fatourou |
| Office: | K311, Computer Science Department, Voutes Campus |
| Office Hours: | Monday and Wednesday 12:00 - 13:00 (Online) |
| E-mail Address: | rg.cou.dsc@urutaf |
| Telephone: | +30 2810 393549 |
| Lesson's e-mail address: | rg.cou.dsc@684yh |
Teaching Schedule
| Day | Time | Link |
|---|---|---|
| Monday | 14:00 - 16:00 | Zoom Link |
| Wednesday | 14:00 - 16:00 | Zoom Link |
Assistive Lectures' Schedule
| Day | Time | Link |
|---|---|---|
| Friday | 14:00 - 16:00 | Microsoft Teams Link |
Course Summary
This course will focus on the study of basic distributed algorithms, including algorithms for multi-core shared memory systems, as well as message passing systems. The purpose of this course is to train students in the theoretical and practical aspects of design, analysis and implementation of algorithms in modern distributed systems. Students that complete the course successfully will have gained the basic background needed to work in any field touching upon distributed systems and applications.
We are well into the era of multi-core architectures and, as the applications' demands are still growing, we soon expect to see the first many-cores which will feature hundreds or even thousands of cores. Therefore, refactoring software in order to introduce parallelism is crucial, in order to take advantage of the massively parallel nature of current and future architectures. A major obstacle in this direction comes from the difficulty of developing distributed data structures and algorithms. This difficulty is inherent in achieving efficient synchronization and communication between processes that run concurrently. The first part of this course aims to alleviate this difficulty by introducing students to basic synchronization and communication mechanisms, as well as the design process of efficient distributed data structures and algorithms.
The proliferation of multi-core architectures is obviously a serious reason for studying concurrent and distributed programming but it is certainly not the only one. Distributed systems are nowadays widely used in all aspects of everyday life. Modern distributed applications should exhibit high performance and be highly fault-tolerant. The second part of this course aims to accustom students with the basic distributed algorithms and mechanisms, which are necessary in order to design correct software for distributed systems.
The two models on which this course focuses cover a wide range of distributed systems and effectively express the intricacies of modern (and probably future) architectures. On the basis of these two models, we will build a concrete collection of algorithms, which constitute the cornerstones of most distributed applications.
Learning Outcomes
- Understanding the major tools and techniques that allow programmers to effectively program the parts of the code that require substantial communication and synchronization;
- Studying the core ideas behind modern coordination and communication paradigms and distributed data structures;
- Introduce methodologies for reasoning about concurrent and distributed programs;
- Realizing not only the basic principles but also the best practice engineering techniques of concurrent and distributed computing;
- Presenting techniques to formally study the safety and progress properties of concurrent and distributed algorithms;
- Analyzing the performance of current multi-core and future many-core systems.
Prerequisities
CS240 (Data Structures). Successful completion of CS345 (Operating Systems) will be also helpful. Students that have not succeeded on the course mentioned above, do not have the required background to attend the course.
