Base Knowledge
Previous completion of the following course units is recommended:
– Programação III
– Programação IV
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
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.