Informatica III - modulo di Progettazione ed Algoritmi (a.a. 2018-19)
Orario lezioni
Lunedì 10.30 - 12.30 (esercitazioni in laboratorio)
Mercoledì 11.30 - 13.30
Ricevimento
Venerdì mattina (indicativamente 9.00-12.00) o su appuntamento.Modalità d'esame (dall'a.a.
2015/16)
L'esame consta di una prova scritta che verte
sulla prima parte del corso ovvero su "algoritmi e
strutture dati", lo sviluppo di un progetto
software, e una prova orale (ovvero una
discussione sul progetto software presentato).
Il voto finale è la media aritmetica
tra il voto della prova scritta e il voto della prova
orale (progetto SW).
La data fissata per l'appello è la data della prova
scritta. Il voto della prova scritta varia da 0 a 30,
e si considera superata solo se maggiore o uguale a
18. Subito dopo la comunicazione da parte del docente
del superamento della prova scritta, và consegnato il
progetto (codice + documentazione) al docente per via
elettronica. La prova orale avrà poi luogo in una data
successiva concordata con il docente ma sempre
relativa allo stesso appello!
L'applicazione SW da sviluppare deve avere certe
caratteristiche obbligatorie e supportata da una
valida documentazione. Per maggiori dettagli vedi i lucidi
della prima lezione sulla presentazione del corso.
Programma
Progettazione in "grande": Si progetta ed
analizza l'architettura software per componenti
funzionali e interazioni tra questi ultimi.
Argomenti: processi di sviluppo agili, il
processo agile AMDD, specifica dei requisiti e
modellazione agile dei casi d'uso con UML,
sviluppo agile di modelli di architetture software,
modellazione architetturale in UML, sviluppo orientato
alle componenti, design pattern e stili
architetturali, il modello a componenti di Java SWING
per GUIs, il modello a componenti della piattaforma
mobile Android, il caso di studio CoCoME (The Common
Component Modelling Example), Service-oriented
Architecture, architetture di applicazioni
Cloud-based, architetture di sistemi self-adaptive,
testing di unità e copertura di codice Java-like,
analisi statica e metriche di qualità, refactoring,
subversioning e distribuzione del codice.
Progettazione in "piccolo": Progettazione ed
analisi di algoritmi e strutture dati.
Argomenti: Introduzione agli algoritmi e
strutture dati, ciclo di sviluppo di codice algoritmo,
complessità del calcolo e notazione asintotica,
calcolo della complessità di un algoritmo, sommatorie,
analisi di algoritmi ricorsivi (tecnica di
sostituzione, iterazione, teorema master),
realizzazione di algoritmi e tipi astratti di dati in
Java, strutture dati e algoritmi fondamentali (liste,
pile, code), algoritmi di ordinamento, alberi e loro
gestione, alberi di ricerca (alberi binari di ricerca,
B-tree), applicazioni degli alberi per il
processamento di documenti XML, tabelle hash, grafi e
loro rappresentazione e visita, cammini minimi,
strategie di progettazione di algoritmi (incrementale,
divide-et-impera, greedy, programmazione dinamica).
Materiale didattico (lucidi/dispense) ed esiti esami
Chiedere al docente via e-mail il link della cartella Dropbox!
Libri di testo
- C. Demetrescu, I. Finocchi, G. F. Italiano: Algoritmi e strutture dati, McGraw-Hill, ISBN: 978-88-386-6468-7, seconda edizione, Gennaio 2008
- Software
Architecture in Practice (3rd Edition) SEI
Series in
Software Engineering, Addison Wesley, 2013
- Introduzione agli algoritmi e strutture dati 3/ed - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Copyright © 2010 - The McGraw-Hill Companies.
- C.A.Shaffer: A practical Introduction to data structures and algorithm analysis. http://people.cs.vt.edu/~shaffer/Book/Java3e20100119.pdf
- The Object Primer 3rd Edition: Agile Model Driven Development with UML 2, Cambridge University Press, 2004 ISBN 0-521-54018-6