Academic Year 2019-2020

DISTRIBUTED SYSTEMS

Teachers:
Marino Miculan
Gabriele Puppis
Total Course Credits: 9
Teaching Period: First Period
Teaching Language: Inglese
Prerequisites. Computer Networks; Operating Systems; Object Oriented Programming
Teaching Methods. Class lectures with examples. Practical activities in computer labs
Verification of Learning. Practical project to develop in one of the languages/middlewares described in the course. Projects can be carried out in groups of 2 students. A presentation and oral examination follows. Aspects which will be evaluated include adequacy of design choices, correctness and completeness of the solution, delivery timeliness, general knowledge about the course.
More Information. Teaching tools: blackboard, slides, pdf, Moodle platform elearning.uniud.it.

OBJECTIVES

After completing this course students will

– understand the design patterns of distributed systems.

– Compare implementation strategies that are possible when designing a distributed system.

– Know the main communication paradigms, such as RPC, RMI, message queues, group communication, etc.

– become familiar with the main middleware, such as JGroups, CORBA, SOAP, Chord, etc.

– Understand the algorithms to solve common problems in distributed systems, such as fault detection, deadlock detection, replicas, etc.

CONTENTS

The aim of the course is to provide students with the fundamentals and tools for the analysis, design and implementation of distributed systems. To this end, the course is divided in three parts. In the first part, we study the system-architectural aspects of distributed systems, analyzing various models (client-server, multi-tier, peer-to-peer …). In the second part we study some communication patterns of distributed systems, and the corresponding middleware. In this part we introduce specific languages for programming distributed systems, i.e. Erlang and Jolie. Finally, the third part deals with common issues that occur in distributed programming, such as failure detection, deadlock detection, consensus, replica management; for each of these, we will study appropriate algorithmic and technical solutions.

TEXTS

G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, “Distributed systems: concepts and design”, 5 ed., International edition, Pearson, 2012.

Alternatively: A. Tanenbaum, M. Van Steen, “Sistemi distribuiti. Principi e paradigmi”, Pearson, 2007.

J. Armstrong, “Programming Erlang: Software for a Concurrent World”, The Pragmatic Programmers, 2007. ISBN: 978-1-93435-600-5

Notes from lectures