Distributed Systems

« Return

Objectives

It is intended to provide the basic and intermediate knowledge for programming distributed applications, namely the architectures and communication technologies in distributed systems, in particular those provided by the distributed object-oriented approach and the Web

To consolidate and deepen the skills in Java programming already acquired (i.e., in the design of monolithic applications, using the object-oriented approach) through the programming paradigm of distributed applications, studying Java solutions (e.g., Java RMI) but also other coded in Java (e.g., CORBA) and also solutions based on XML for Web through Web Services and SOA with REST in Java.

The student will be able to design, draw and code distributed applications, of small and medium scale, independente of programming language, operating system and platform, from scratch or those arising from the integration of data and / or applications using technologies distributed objects and those aimed for the Web.

Program

1. Architectures of distributed systems: monolithic, N layers and Peer-to-Peer; distributed objects, Web Services.

2. Processes: programming distributed systems with processes and threads; cloud.

3. Communications: fundamentals; RPC; message-oriented; multicast.

4. Name system: unstructured and structured names; attribute-based names; search architectures and algorithms.

5. Coordination: physical watches; logical clocks; mutual exclusion; election algorithms; location systems.

6. Consistency and Replication: data-based consistency models.

Teaching Methodologies

The classes are divided into theoretical and practical. In the former, is provided the explanation of concepts, which also include the demonstration programs, and, in the latter, is provided the resolution of working laboratories, which exercise and introduce complementary concepts, as well as programming applications for small-scale distributed systems.

Bibliography

Referências principais
  • Maarten Steen e Andrew Tanenbaum. Distributed Systems: Principles and Paradigms. 3ª edição. Published by Maarten Steen. 2017. ISBN-13: 978-15-430573-8-6 (versão impressa); ISBN-13: 978-90-815406-2-9 (versão digital).
Outras referências
  • George Coulouris, Jean Dollimore e Tim Kindberg. Distributed Systems: Concepts and Design. 5ª edição. Addison-Wesley. 2012. ISBN-13: 978-0-273-76059-7.
  • Documentação de Python.
  • Documentação de Python específica sobre programação de socket

Code

0106026

ECTS Credits

6

Classes

  • Práticas e Laboratórios - 30 hours
  • Teóricas - 30 hours