SISTEMI DISTRIBUITI 1 E LABORATORIO

Academic Year 2017/2018 - 1° Year - Curriculum Sistemi di Rete e Sicurezza
Teaching Staff Credit Value: 9
Scientific field: INF/01 - Informatics
Taught classes: 36 hours
Exercise: 24 hours
Laboratories: 12 hours
Term / Semester:

Learning Objectives

  • SISTEMI DISTRIBUITI 1

    General goals described according to the expected learning results.

    1. Knowledge and understanding: the student will be able to use aspect-oriented, parallel, asyncronous, and distributed mechanisms.

    2. Applying knowledge and understanding: the student will be able to design, document, and implement aspect-oriented software systems, distribute and complex systems.

    3. Making judgements: the student will be able to analyse parallel and distributed software systems.

    4. Communication skills: the student will be able to describe distributed software systems using a proper technical language.

    5. Learning skills: the student will be able to solve typical problems, by studying, analysing and using novel distributed technologies.

  • Laboratory of Distributed Systems

    1. Knowledge and understanding: the purpose of this course is to let the student gain advanced knowledge in order to understand the different technologies at the basis of modern distributed systems for high performances computing. The student will acquire information about the main high performances programming paradigms such as MPI, OpenMP, and Hadoop mapreduce.

    2. Applying knowledge and understanding: new skills will be granted to the student for the design of software systems for high performances distributed systems and the related concerns such as process scheduling and resources management.

    3. Making judgments: the student will be able to autonomously formulate his own solution, in facts during the course the student will be exposed to many examples of real implementations or well known design flaws.

    4. Communication skills: the student will improve his language skills and will acquire the technical terminology required to be considered a specialist on the field of distributed systems design and high performance computing.

    5. Learning skills: this course offers contents and methods to complete the student's personal and professional development along the learning curve that ends with the Master Degree in Computer Science.


Detailed Course Content

  • SISTEMI DISTRIBUITI 1

    Design patterns for distributed systems Proxy, Broker, Forward-Receiver, Remote Facade, Data Transfer Object, Session State, Serialized Large Object. Design and implementation of aspect-oriented software systems. Design pattern for aspect-oriented systems and Refactoring to aspects. Java 8 and Map Reduce. Reactive programming design patterns Circuit Breaker, Bulkheads. Design patterns for secure distributed systems. Message-oriented Middleware RabbitMQ.

  • Laboratory of Distributed Systems

    I. Elements of distributed computing
    II. Flynn's taxonomy, memory paradigms, threads, scheduling, messages
    III. Message passing paradigms and Message Passing Interface
    IV. Shared Memory paradigms and Open MultiProcessing
    V. High performance programming for hybrid computing architectures
    VI. Distributed Big Data Analysis and shared nothing computing paradigms
    VII. Map­Reduce, distributed file systems, task management
    VIII. Hadoop and MrJob (python)


Textbook Information

  • SISTEMI DISTRIBUITI 1

    1. Buschmann, Meunier, Rohnert, Sommerlad, Stal. Pattern-Oriented Software Architecture A System of Patterns. John Wiley and Sons, 1996

    2. Martin Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2003

    3. Schumacher, Fernandez-Buglioni, Hybertson, Buschmann, Sommerlad. Security Patterns: Integrating Security and Systems Engineering. John Wiley and Sons, 2006.

    4. R. Laddad. AspectJ in Action: Enterpriese AOP with Spring Applications. Manning Publications. 2010.

    5. R. Warburton. Java 8 Lambdas. O'Reilly. 2014.

  • Laboratory of Distributed Systems

    Reference textbooks:
    1. G. Hager, G. Wellein: Introduction to High Performance Computing for Scientists and Engineers, CRC Press (2010)
    2. G. Coulouris et al.: Distributed Systems, Pearson (2013)
    3. Gropp et al.: Using MPI, MIT press (2014)
    4. B. Chapman, G. Jost: Using OpenMP, MIT press (2007)
    5. T. White: Hadoop: the definitive guide, O’Reilly (2015)

    Other usefull references:
    - D. Culler et al.: Parallel Computer Architecture, Kaufmann (1998)
    - M.J. Quinn: Parallel Programming in C with Mpi and Openmp, McGraw­Hill (2008)
    - E. Sammer: Hadoop Operations, O’Reilly (2012)
    - M. GRoover, T. Malaska: Hadoop Applications Architectures, O’Reilly (2015)
    - K. Basil et al.: OpenStack Security Guide, O’Reilly (2015)