Introduzione alle problematiche e alle metodologie di programmazione per lo sviluppo di sistemi concorrenti e distribuiti.  I contenuti sono ispirati alle seguenti tematiche del Computer Science Curriculum dell'ACM/IEEE (link):

OS/Concurrency, Scheduling and Dispatch
PL/Event-Driven and Reactive Programming, Concurrency and Parallelism
PD/Communication and Coordination, Distributed Systems
PBD/Mobile Platforms

 

  • Obiettivi e contenuti
    • OBIETTIVI FORMATIVI
      Comprendere i problemi e le metodologie necessarie allo sviluppo di programmi concorrenti ed asincroni attraverso lo studio dei principi di cooperazione e sincronizzazione tra processi con memoria condivisa e tra processi distribuiti. Esercitazioni in laboratorio sull'uso di librerie per concorrenza e distribuzione in diversi linguaggi/piattaforme.
      PROGRAMMA/CONTENUTO

      Teoria 

      Programmazione multithread

      Esempi di costrutti e programmi (pseudo codice)

      Problema della sezione critica (PSC) e data race: Mutua esclusione, starvation-freedom, deadlock-freedom 

      Soluzioni software a PSC: Peterson's algorithm, Lamport's algorithm

      Spinlock, Semafori, Mutex, Monitor, Barriere

      Memory models: Strict and Sequential Consistency, Relaxed Memory Models: Weak Consistency

      Lock-free programming: CAS, Test and Set Lock, Swap and Compare

      Strutture dati concorrenti

      Laboratorio

      Programmazione concorrente: Thread, Pool, Synchronized, wait e notify, Future, Callback

      Programmazione distribuita e di rete: Socket, RPC,RMI, Servizi web

      Programmazione in Android:

      LABO

      Programmazione multithreaded in C, Java e Android

      Progetto finale 

       

      Applicazione client-server con server concorrente e client Java e Android

      TESTI/BIBLIOGRAFIA
      • The Art of Multiprocessor Programming - Herlihy, Shavit
      • Concurrent Programming: Algorithms, Principles and Foundations:  M. Raynal
      • Programmazione concorrente e distribuita - Crafa
      • Android Developer: http://developer.android.co
      URL Aula web
      PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI
      https://dibris.aulaweb.unige.it/
      URL Orario lezioni
      PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI
      Martedi 9-11, Mercoledi 11-13, Venerdi 11-13
  • Chi
    • Docenti
    • Giorgio Delzanno
      tel. (+39) 010353 - 6603
      Giorgio.Delzanno@unige.it
    • Commissione d’esame
      80302 - PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI
      Giovanni Chiola
      Giorgio Delzanno (Presidente)
      Marina Ribaudo
  • Come
  • Dove e quando
    • URL Aula web
      PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI
      https://dibris.aulaweb.unige.it/
      URL Orario lezioni
      PROGRAMMAZIONE CONCORRENTE E ALGORITMI DISTRIBUITI
      Martedi 9-11, Mercoledi 11-13, Venerdi 11-13
      INIZIO LEZIONI

      25 settembre 2017

      Appelli
      Data Ora Tipo Luogo Note
      5 febbraio 2018 9:00 Scritto Genova 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
      15 giugno 2018 9:00 Scritto Genova 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
      2 luglio 2018 9:00 Scritto Genova 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
      19 luglio 2018 9:00 Scritto Genova 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
      12 settembre 2018 9:00 Scritto Genova 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
      4 febbraio 2019 9:00 Scritto Genova 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
  • Contatti