Progettazione ed Algoritmi - Informatica III B a.a. 2014-15

September 09, 2014

Orario lezioni

Lunedì 10.30 - 13.30 aula 5
Mercoledì: 9.30 - 11.30 aula 24

Modalità d'esame

L'esame consta di una prova scritta che verte sulla parte di algoritmi e strutture dati, lo sviluppo di un progetto software, e una prova orale (ovvero una discussione sulla prova scritta e sul progetto software presentato). La data fissata per l'appello è la data della prova scritta. Il voto della prova scritta varia da 0 a 10, e si considera superata solo se maggiore o uguale a 6. Subito dopo la comunicazione da parte del docente del superamento della prova scritta, và consegnato il progetto (codice + documentazione) al docente per via elettronica entro 2-3 giorni. 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. Per maggiori dettagli vedi il materiale didattico 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 dei casi d'uso con UML ed il metodo Restricted Use Case Modeling (RUCM), architetture SW e design pattern (stili) architetturali, modellazione a comonenti in UML, caso di studio dell'ATM, Caso di studio CoCoME (The Common Component Modelling Example), service-oriented computing e i linguaggio Service-Component Architecture (SCA), il modello a componenti Java SWING per GUIs, il modello a componenti della piattaforma mobile Android, testing di unità (con Junit) e copertura di codice Java-like (con il plug-in Eclipse Eclemma), analisi statica e metriche (con Google CodePro AnalytiX), refactoring e tecniche di deployment.

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, metodologie 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.

Per approfondimenti:
  • 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
  • Software Architecture in Practice (3rd Edition) (SEI Series in Software Engineering), Addison Wesley, 5 October 2012, ISBN-13: 000-0321815734