Docenti: Alessio Vecchio , Mario G. C. A. Cimino
Dipartimento di Ingegneria dell'Informazione
(image from http://i625.photobucket.com/albums/tt339/mac-turbo/net/programmer.gif)
Il corso si propone di fornire conoscenze e competenze nell’ambito della programmazione a oggetti, con particolare riferimento a sistemi concorrenti e distribuiti. I problemi fondamentali derivanti da una esecuzione parallela vengono affrontati in modo pratico usando il linguaggio Java. I principali aspetti progettuali e realizzativi legati ad applicazioni software composte da più sottosistemi vengono sperimentati attraverso la realizzazione di un progetto didattico usando il linguaggio Java.
Il linguagggio Java. Caratteristiche fondamentali del linguaggio. Classi, oggetti e riferimenti. Overloading di costruttori e metodi. Campi e metodi statici. Package. Modificatori di accesso. File sorgenti, binari e classpath. Gestione della memoria. Array e stringhe. Ereditarietà e polimorfismo. Classi astratte. Classi final. La classe Object. Le interfacce. Eccezioni. I thread.
Programmazione concorrente. Introduzione alla programmazione concorrente in Java. Cooperazione e interferenza tra thread. Sincronizzazione e mutua esclusione in Java. Problemi classici: produttori e consumatori; gestore di risorse equivalenti.
Java e l'Input/Output. La serializzazione degli oggetti. I flussi di ingresso e uscita. L’interfacciamento con il file system. La programmazione di rete. Interfacciamento con le basi di dati. L’interfaccia grafica utente. L’input-output multimediale. L’interfacciamento tramite XML.
La realizzazione di applicazioni. Applicazioni Desktop. Introduzione alle architetture multi-livello. Strumenti e metodi per consultare le Java API, per documentare, rilevare errori e collaudare il software. Realizzazione di un progetto didattico.
Registro delle lezioni: Unimap
Prova scritta (al calcolatore, tramite Netbeans, Notepad++ o riga di comando, in ambiente Windows, con possibilità di consultare le Java API). Prova orale (comprensiva della discussione del progetto con l’ing. Cimino). Per poter svolgere la prova orale è necessario ottenere almeno 15 alla prova scritta. Il voto della prova scritta viene mantenuto per tre appelli (incluso quello in cui la prova scritta è stata consegnata). Il numero di consegne della prova scritta è limitato a quattro negli ultimi 7 appelli (ossia nell’ultimo anno). Al termine della prova scritta viene mostrata una possibile soluzione, dopo aver visto la quale lo studente può scegliere di ritirarsi senza che risulti una consegna. La correzione della prova scritta può essere illustrata allo studente nei giorni previsti per le prove orali.
Il progetto consiste nella realizzazione di una appplicazione Java basata su architettura a tre livelli. Il primo livello detto front-end fornisce l'interazione con l'utente in termini di interfaccia grafica, console testuale, file di configurazione locale; il secondo livello detto middleware è composto dalla logica di controllo e di elaborazione dati, dalla cache applicativa; il terzo livello detto back-end è composto da archiviazione su base di dati e file di log remoto. L'applicazione dovrà prevedere l'uso di XML/XSD. In sede di esame, durante la presentazione del progetto lo studente dovrà caricare e illustrare l’applicazione sui sistemi Windows dell'aula, illustrare il registro delle attività, rispondere a domande sul codice ed essere pronto ad effettuare modifiche minime.
1) registro delle iscrizioni (*): iscriversi e inviare una idea del progetto al Prof. Cimino0;
2) registro delle attività (*): inserire man mano le attività relative al progetto
3) attività passate 3 (*): monitorare le ore spese, arrivando a 45 ore totali 4; ogni 15 ore contattare il docente per analizzare il registro e il progetto secondo il documento dei criteri di qualità (con relative faq).
4) portale delle consegne (*): sottomettere il progetto sul portale come unico allegato dal nome matricola_cognome_titoloprogetto.zip, entro la scadenza indicata. Il progetto viene presentato il giorno della prova orale, se la prova scritta è stata superata.
5) prenotazioni al ricevimento del Prof. Cimino (*): se non appaiono ricevimenti inviare una email 0
(*) Accesso ristretto per motivi di copyright Oracle Corporation: adoperare utente e password come da login ai PC dell'aula.(1) In caso di dubbi su tale argomento contattare il Prof. Vecchio.
(0) Tempi di risposta alle email del Prof. Cimino: mediamente in giornata lavorativa, massimo due giornate lavorative.
(2) In caso di dubbi su tale argomento contattare il Prof. Cimino.
(3) L'aggiornamento delle attività passate non è proprio istantaneo.
(4) I laboratori su "Java I/O e la realizzazione di applicazioni" coprono metà corso, ossia 3 CFU = 75 ore, di cui 30 in classe (studio dei laboratori) e 45 fuori classe (realizzazione del progetto). Lo studente è libero di svolgere le 45 ore di progetto
in tutto o in parte fuori classe, a seconda del metodo di studio. Ad ogni modo è bene non superare le 5 ore giornaliere sul progetto e di non lavorare al progetto nei giorni festivi, per non ridurre la produttività.