Salta al contenuto principale della pagina

CONCURRENT AND DISTRIBUTED PROGRAMMING

CODICE 80170
ANNO ACCADEMICO 2021/2022
CFU
  • 6 cfu al 2° anno di 11160 COMPUTER ENGINEERING (LM-32) - GENOVA
  • SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05
    LINGUA Inglese
    SEDE
  • GENOVA
  • PERIODO 1° Semestre
    MATERIALE DIDATTICO AULAWEB

    PRESENTAZIONE

    The successful student will be able to leverage threads, synchronization, collections, java networking and RMI to develop complete Java multithreaded and distributed solutions for simple real world problems.

     

    OBIETTIVI E CONTENUTI

    OBIETTIVI FORMATIVI

    The goals of this course are: 1) Acquire familiarity with cornerstone problems in concurrent and distributed programming; 2) Acquire familiarity with the tools provided by Java 2 Standard Edition (J2SE) to tackle those problems and their practical use.

    OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

    The main objectives of the course are:

    provide to the student the theoretical bases for understanding concurrency and synchronization;

    provide to the student an applied knowledge of the Java language constructs that allow dealing with concurrency and shared resources in a multithreaded environment;

    provide to the student a basic knowledge of network and distributed programming in Java.

    PREREQUISITI

    This course assumes the student has a working knowledge of Object Oriented Programming and is capable of reading and understanding example code.

    MODALITA' DIDATTICHE

    Theoretical teaching with slides and real time step-by-step development of solutions for example problems

    PROGRAMMA/CONTENUTO

    A brief review of the main Object Oriented Programming adopting the Java language.

    Primitive types and Object types. Arrays and Strings. The concept of immutable object.

    Classes, fields, methods, instance and class fields and methods. Constructors and static initializers. Inheritance and class hierarchies.

    Polimorphism and type checking: static and dynamic binding.

    Error checking and handling through exceptions. Propagation of error conditions.

    Compile time type checking and run time type checking, the use of generics in Java classes.

    Threads. Thread vs. process, memory model, switching model, execution model. Process memory segmentation in a multithreaded environment.

    Shared resources and the concept of race condition.

    Java instruments to sanitize the code dealing with a shared resource: synchronized blocks, locks.

    The concept of condition and the need for atomicity when testing conditions and altering the system state.

    Waiting for conditions: from busy waiting to wait/notify or await/signal.

    Applying synchronization to complex data structures such as Java Collections.

    Network programming in Java. Streams and Sockets. Datagram Sockets. Data serialization. Object Serialization.

    Distributed Object Oriented programming: Java RMI.

    Java RMI layered architecture: The stub/skeleton layer, The Remote Reference layer, The Transport Layer, The Application Layer.

    Skeleton based servers and skeletonless servers: introduction to Java reflections.

    TESTI/BIBLIOGRAFIA

    Core Java: Fundamentals, Cay S. Horstmann

    Core Java: Advanced Features, Cay S. Horstmann

    DOCENTI E COMMISSIONI

    Commissione d'esame

    MAURO MIGLIARDI (Presidente)

    PIERPAOLO BAGLIETTO

    ALESSIO MERLO

    MASSIMO MARESCA (Presidente Supplente)

    LEZIONI

    INIZIO LEZIONI

    20/09/2021

    Orari delle lezioni

    L'orario di tutti gli insegnamenti è consultabile su EasyAcademy.

    ESAMI

    MODALITA' D'ESAME

    Solution Code Synthesis

    Solution Code Analysis

    MODALITA' DI ACCERTAMENTO

    Code correctness, compliance to requisites, and efficiency

    Calendario appelli

    Data Ora Luogo Tipologia Note
    17/01/2022 09:00 GENOVA Scritto
    09/02/2022 09:00 GENOVA Scritto
    07/06/2022 09:00 GENOVA Scritto
    28/06/2022 09:00 GENOVA Scritto
    05/09/2022 09:00 GENOVA Scritto