PROGRAMMAZIONE CONCORRENTE E DISTRIBUITA A.A.2016-2017


Informazioni Generali

Ricevimento studenti su appuntamento da prendere via email

Libro di testo: S.Crafa, Oggetti, Concorrenza, Distribuzione. Programmare a diversi livelli di astrazione. Editore Esculapio. 2014


Regole d'esame

E' prevista la propedeuticita' degli esami di Programmazione e Programmazione ad Oggetti.
All'esame scritto NON si possono consultare appunti, dispense e libri.

Avvisi

**NEW** Risultato della prova scritta del 30/8/2017 La visione dei compiti sara' effettuata giovedi' 7 settembre alle ore 9.30 in aula 1BC50.

Solo per chi ha ottenuto un voto maggiore o uguale a 18 sara' possibile fare una discussione orale, su richiesta dello studente e lo stesso giorno della visione del compito, tenendo presente che la prova orale potrebbe sia alzare che abbassare il voto ottenuto allo scritto.

Argomenti di lezione

04/10/2016 - Introduzione alla programmazione concorrente e distribuita; la piattaforma Java; la Java Virtual Machine.
05/10/2016 - Tipi primitivi e tipi riferimento; la classe String.
11/10/2016 - Passaggio dei parametri in Java; accessibilita' e visibilita`; costruzione di oggetti.
12/10/2016 - Campi e metodi statici; ereditarieta' di classi; metodi della classe Object.
18/10/2016 - Costruttori e sottoclassi; polimorfismo e subtyping; dynamic e static binding.
19/10/2016 - Marcatore final; funzionamento dell'operazione di cast; classi wrapper e convesioni boxing.
25/10/2016 - Classi astratte; ereditarieta' di tipo e di implementazione; interfacce
26/10/2016 - Uso di interfacce nella programmazione ad oggetti; cast e interfacce
2/11/2016 - classi interne di istanza; classi interne statiche
8/11/2016 - classi interne locali; classi anonime; classi innestate in interfacce.
9/11/2016 - interfacce grafiche e programmazione ad eventi.
15/11/2016 - gestione delle eccezioni controllate; classi generiche; classi collezione; studio del file AbstractList.java.
16/11/2016 - introduzione alla programmazione concorrente; multitasking e multithreading; modelli di concorrenza nei linguaggi mainstream.
22/11/2016 - creavzione e avvio di un thread; gestione dell'interleaving nondeterministico.
23/11/2016 - ciclo di vita dei thread; interazioni con lo scheduling.
30/11/2016 - metodo join e interruzioni dei thread; il problema della condivisione dei dati.
01/12/2016 - lock e sezioni critiche in Java.
06/12/2016 - deadlock; sincronizzazione lato server e lato client.
07/12/2016 - lock espliciti ed oggetti condizione; uso dei costrutti wait e notify
13/12/2016 - esercizi di concorrenza; visibilita' e Java Memory Model.
14/12/2016 - I/O tramite Stream; serializzazione e deserializzazione degli oggetti; programmazione distribuita tramite socket.
20/12/2016 - infrastruttura RMI e oggetti distribuiti
21/12/2016 - RMI e concorrenza; Foodora, l'algoritmo della precarieta' e Frankfurt Paper on Platform-Based Work
10/01/2017 - The code I'm still ashamed of e Code of Ethics ACM: pagina web, Making a positive impact: Updating the ACM Code of Ethics Communications of the ACM, Dicemebre 2016.

Testi di apporfondimento

Per i dettagli e gli approfondimenti sul linguaggio Java si consiglia la consultazione dei seguenti testi:

  • Il manuale ufficiale del linguaggio Java. Arnold, Gosling, Holmes, edito da Addison-Wesley. Disponibile in biblioteca.
  • Core Java 2, volumi 1 e 2. Horstmann e Cornell, edito da Pearson. Disponibile in biblioteca.
  • Dai Fondamenti agli Oggetti; corso di programmazione Java. G.Pighizzini e M.Ferrari, 4a edizione, Pearson, 2015.