Sistemas Distribuídos

Base Knowledge

Previous completion of the following course units is recommended:

– Programação

– Programação Aplicada

Teaching Methodologies

The following teaching methodologies are used in this curricular unit:

– Expository method: a telling method were facts, concepts, principles and generalizations are defined and presented by the teacher and discussed with the class, followed by demonstrative examples;

– Experimental method: an active method were the student develops the knowledge through the use of several practical assignments and a final group project.

 

Learning Results

It is expected that by the end of the course each student will be able to:

1. Characterize distributed systems and describe its main concepts, architectures, problems and challenges.

2. Implement systems distributed using basic communication primitives, mechanisms for remote object invocation and web services.

Program

1. Introduction to Distributed Systems (Characterization of distributed systems; Objectives: connectivity, transparency, scalability, distributed hardware concepts; Examples of distributed systems, middleware, distributed systems architectures).

2. Communication (Layers protocols; Remote Procedure Call (RPC); Remote access to objects, message-oriented communication; Persistence and timing; Stream oriented communication).

3. Problems in Distributed Systems (Clock synchronization; Consistency and replication; Fault tolerance).

4. Sockets (TCP and UDP protocols; Programming with Java sockets; Multicast and broadcast).

5. Java RMI (Java RMI architecture; Services; API, Security).

6. REST Web Services (The HTTP protocol; REST architecture; Implementation using JAX-RS).

Curricular Unit Teachers

Grading Methods

Final evaluation
  • - a final project (50%) - 50.0%
  • - uma prova escrita (50%) - 50.0%
Periodic Evaluation
  • - a final group project (30%); - 30.0%
  • - a written test (40%) - 40.0%
  • - individual practical work (30%) - 30.0%

Internship(s)

NAO

Bibliography

Cardoso, J. (2008). Programação de Sistemas Distribuídos em Java. FCA.

Burke, B. (2013). RESTful Java with JAX-RS 2.0: Designing and Developing Distributed Web Services (Second ed.). O’Reilly Media.

Coulouris, G., Dollimore, J., Kindberg, T., & Blair, G. (2011). Distributed Systems: Concepts and Design (5th ed.). Pearson.

Reilly, D., & Reilly, M. (2002). Java Network Programming and Distributed Computing (1st ed.). Addison-Wesley Professional.