Laurea magistrale Ingegneria Informatica

Anno 4, 9 cfu

Due moduli: semestre 1: 6 cfu (questa pagina), semestre 2: 3 cfu (Prof. Chiaruttini Facoltà di Scienze su programmazione parallela con MPI)

NOTA; dal 2013/2014 ci sarà un solo modulo tenuto dal prof. Bartoli

Programmazione Distribuita

Generalità

  • Corso di programmazione Java di secondo livello
  • Presuppone "conoscenze di programmazione" (almeno un corso precedente di programmazione ad oggetti)
  • Poco adatto per corsi di studio diversi da Ingegneria Informatica (suggerimenti per studenti provenienti da altri corsi di studio).
  • Corso "hands on", con molte lezioni in laboratorio in cui gli studenti devono svolgere gli esercizi proposti. Non esiste un controllo sugli esercizi, ma chi non ha tempo/possibilità di svolgerli durante il corso (in classe o altrove) probabilmente conviene che non provi nemmeno.

Programma orientativo

  • Programmazione Socket. Client e Server. Protocolli di chiusura e Server robusto. Interazione a linee di caratteri e a byte stream. Server multi-threaded. Servizi con stato (stateful) e senza stato (stateless). Cenni a sviluppo di GUI.
  • Generics.
  • Collection framework.
  • Reflection.
  • Object serialization (invio in rete di oggetti arbitrariamente complessi).
  • Protocolli di applicazione. Stub, marshalling, wire-level protocol. RMI: Remote Method Invocation (programmazione distribuita a oggetti: nodo A che invoca metodi su oggetti che risiedono su un altro nodo B). Servizio di naming. Compilatore per RMI. Cenni alla implementazione di RMI. Serializzazione dei remote objects. Tecniche di realizzazione di stateful remote object. Caricamento dinamico di classi.
  • SSL (Socket per comunicazione con secrecy e con integrity). Truststore e keystore. Autenticazione mutua. 

Modalità di esame

  • Nella parte finale del corso sarà proposto un progetto. Di norma lo stesso progetto per tutti gli studenti). Saranno anche lasciate ore di lezione a disposizione degli studenti per discutere del progetto con il docente ed iniziare a svolgerlo.
  • Il progetto deve essere inviato al docente alcuni giorni prima dell'esame.
  • L'esame di solito inizia con una o più domande alle quali rispondere per scritto senza consultare testi o appunti. Prosegue poi, nella stessa giornata, con una prova orale.
  • Nel corso della prova orale deve essere mostrata al docente una demo del progetto. Di solito il progetto è assegnato in modo da dovere soddisfare un requisito di interoperabilità, ad esempio il client dello studente X deve interagire con il server dello studente Y. Gli accoppiamenti tra studenti sono decisi dal docente sul momento.
  • Se l'esame non viene superato non occorre presentare nuovamente il progetto.

Software necessario

  • Vedi il primo file di slide.

Testi consigliati

(Attenzione a cosa intendo per "testi consigliati", vedi  "Modalità di insegnamento" qui)