Topic outline
-
Corso di Programmazione Avanzata
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)
Obiettivi
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.
Programma
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
Modalità di svolgimento dell'esame
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.
Riferimenti
- Documento elettronico contenente quanto visto in aula
- The Java Programming Language, 4th edition. K. Arnold, J. Gosling, D. Holmes. Addison-Wesley Professional 1.
- Programmare in Java vol. I, II, III (concetti introduttivi).
- The Java SE 8 Documentation
, Oracle Corporation, 2014 2.
- The Java FX 2 Documentation, Oracle Corporation, 2014 2.
- The Java SE 8 API , Oracle Corporation, 2014 2.
- The Java FX 2 API, Oracle Corporation, 2014 2.
Strumenti software
- Notepad++ 6.x , editor di riferimento per gli argomenti "Il linguaggio Java" e "La programmazione concorrente".
- NetBeans IDE 8.x with Java SE 8, editor di riferimento per il progetto e gli argomenti "Java I/O".
- MySQL 5.6 Community Server
, Data Base Management System di riferimento.
- MySQL 6.1 Workbench, Client di riferimento per MySQL.
- Pacchetto "all in one" (per Windows), archivio in formato zip con strumenti software e Java API (*).
Archivio dei compiti d'esame
Materiale didattico
Introduzione alla programmazione in Java1
Programmazione concorrente1
Laboratori su Java I/O e la realizzazione di applicazioni 2
- lab01 (*) Java FX: struttura, contenuto della GUI
- lab02 (*) Java FX: stile, comportamento della GUI
- lab03 (*) File, Socket
- lab04 (*) Server, monotask e multithread, JAR
- lab05 (*) TableView, Beans, JDBC
- lab06 (*) Serializable, Xstream, XML
- lab07 (*) XSD, Seminario su .NET e C#
- lab08 (*) Progetto, Esempi, Registro, Criteri di qualità
- lab09 (*) Compiti d'esame e Proposte di progetto
Modalità di svolgimento del progetto 2
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à.