Base Knowledge
NA
Teaching Methodologies
In this curricular unit, the following teaching methodologies are used:
1 – Expository method: explanatory method where facts, concepts, principles and generalizations are defined and presented by the teacher and discussed with the class, followed by demonstrative examples;
2 – Experimental method: active method where the student develops knowledge through several individual practical sheets and the development of a final group project.
Learning Results
It is expected that at the end of the course the student will be able to:
1. Characterize distributed systems and describe their main concepts, architectures, problems and challenges.
2. Implement distributed systems using basic communication primitives, remote object invocation mechanisms and web services.
Program
1. Introduction to Distributed Systems (Characterization of distributed systems; Objectives: connectivity, transparency, scalability; Concepts of distributed hardware; Examples of distributed systems; Middleware; Distributed systems architectures).
2. Communication (Protocol layers; Remote Procedure Call (RPC); Remote object access; Message-oriented communication; Persistence and synchronism; Stream-oriented communication).
3. Problems in Distributed Systems (Synchronization of clocks; 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 with JAX-RS).
Grading Methods
- - a written test (40%) - 40.0%
- - a final group project (30%); - 30.0%
- - individual practical work (30%) - 30.0%
- - a final project (50%) - 50.0%
- - uma prova escrita (50%) - 50.0%
Internship(s)
NAO
Bibliography
Bill Burke, “RESTFUL Java with JAX-RS 2.0”, 2nd ed., O´Reilly, 2013, ISBN: 978-1-449-36134-1.
David Reilly e Michael Reilly, “Java Network Programming and Distributed Computing”, Addison-Wesley, 2002, ISBN: 978-020-171-037-3
Jean Dollimore, Tim Kindberg, George Coulouris, “Distributed Systems: Concepts and Design”, 4th Edition, Addison Wesley, 2005, ISBN: 978-032-126-354-4.
Jorge Cardoso,” Programação de Sistemas Distribuídos em Java”, FCA, 2008, ISBN: 978-972-722-601-6.