|3||Undergraduate||Computer Systems Engineering||6 ects|
|Learning Period:||Language of Instruction:||Total Hours:|
|Learning Outcomes of the Curricular Unit:|
|In this course students should acquire solid knowledge about the most common architectures, management models and protocols used in distributed systems. Students should be able to define and characterize different types of distributed systems, namely the objectives, middleware services involved and architectural variants of the client-server base model. Students should also be able to characterize the most used techniques and patterns of communication in distributed systems, e.g., remote method invocation, asynchronous communication (message-based) and synchronous communication (streaming). It is also intended to introduce some tools used in the development of distributed applications (e.g., RMI / EJB, CORBA / CCM, DCOM / .NET, Web Services). Students should be able to apply the concepts and implementation mechanisms of distributed systems by using existing technologies (e.g., invoking methods on remote objects (RMI) and Web Services).|
|1. Introduction to Distributed Systems|
2. Communication in Distributed Systems
3. Processing, Location & Synchronization of Resources
4. Replication of Resources and Fault Tolerance
5. Tools and Remote Services
|Demonstration of the Syllabus Coherence with the Curricular Unit's Objectives:|
|The presented contents are consistent with the learning objectives since these focuses the main issues traditionally addressed in distributed systems. In particular we start by characterizing the different objectives and aspects inherent to distributed systems and the technologies and services that underlie these systems. In particular we start to address the different types of communication used in distributed systems and also the models of location, replication and synchronization as well as the management mechanisms for updates, fault tolerance and concurrency. In parallel we address in practice some of the existing technologies used in the implementation of distributed systems, in particular the invocation of remote methods and web services. The learning objectives are therefore aligned with the theoretical themes as well as the practical examples achieved by means of exercises and projects implemented using currently available market tools.|
|Teaching Methodologies (Including Evaluation):|
|This course is organized into theoretic-practical (TP) and practical classes (PR). The teaching methodology used within TP classes is based on the oral presentation of the contents as well as the discussion of the main issues about the covered topics. In parallel, the context of laboratory classes provide students the opportunity to contact with software tools (cf. RMI, Web Services) usually used for developing distributed systems. The assessment is continuous, contemplating with equal weight both the TP and PR components. The TP component is assessed by an exam at the end of the semester. The PR component is assessed through the planning and implementation of a project for a distributed system/service whose requirements are proposed during the semester.|
|Demonstration of the Coherence between the Teaching Methodologies and the Learning Outcomes:|
|Teaching methodologies applied in this course seek to lead students to know the models and architectures used when planning and managing distributed systems, and to develop skills for identifying and implementing the necessary requirements for these systems. The practical classes allow the contact with current technologies used in the development of distributed systems using a logic of services, remote method invocation technologies and web services. This experience and contact with specific practical contexts also improve the analysis and reflection capacities of students with respect to existing systems, which is essential in obtaining technical and development skills in this area.|
| Coulouris G., Dollimore J., Kindberg T., Blair, G. S., Distributed Systems Concepts and Design, 5th Ed., Addison-Wesley 2011.|
 Tanenbaum, A., Steen, M., Distributed Systems, Principles and Paradigms, Prentice Hall 2002.
 Sun Developers Services, URL: http://developer.java.sun.com/developer/ (2009).
 Jian, Chen, Java RMI vs .Net Remoting, White Paper, 2003, http://students.cs.tamu.edu/jchen/cpsc689-608/comparison/l0c0607-framework_comp_lichen.pdf (2007).