TECNICHE DI PROGRAMMAZIONE

Ingegneria Informatica TECNICHE DI PROGRAMMAZIONE

0622700001
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA MAGISTRALE
INGEGNERIA INFORMATICA
2016/2017



OBBLIGATORIO
ANNO CORSO 1
ANNO ORDINAMENTO 2016
SECONDO SEMESTRE
CFUOREATTIVITÀ
972LEZIONE
Obiettivi
L’insegnamento mira a fornire la capacità di analizzare un problema, di progettare una soluzione efficiente, anche attraverso l’utilizzo di tecniche di programmazione evolute e strutture dati avanzate, e di realizzarne un'implementazione in un linguaggio di programmazione orientato agli oggetti.

Conoscenze e capacità di comprensione
Conoscenza di tecniche di programmazione evolute e di strutture dati avanzate. Conoscenza della implementazione delle principali strutture dati in librerie standard. Comprensione della terminologia utilizzata negli ambiti di approfondimento del corso.

Conoscenza e capacità di comprensione applicate
Capacità di applicare le tecniche di programmazione e le strutture dati proposte nella risoluzione di problemi complessi. Capacità di implementare gli algoritmi e le strutture dati avanzate in un linguaggio di programmazione ad oggetti.
Prerequisiti
CONOSCENZA DI UN LINGUAGGIO ORIENTATO AGLI OGGETTI. CONOSCENZA DELLE STRUTTURE DATI ELEMENTARI E DEI PRINCIPI DELLA PROGRAMMAZIONE. CONOSCENZA DELLE TECNICHE DI ANALISI DEGLI ALGORITMI.
Contenuti
ALGORITMI E STRUTTURE DATI AVANZATE
-INTRODUZIONE E ADT DIZIONARIO (2 ORE DI LEZIONE E 4 ORE DI ESERCITAZIONE)
-BINARY SEARCH TREE (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
- HEAP (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
-ALBERI BILANCIATI (6 ORE DI LEZIONE E 8 ORE DI ESERCITAZIONE)
-STRUTTURE DATI PER STRINGHE (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
-I GRAFI (8 ORE DI LEZIONE E 8 ORE DI ESERCITAZIONE)

TECNICHE DI PROGRAMMAZIONE EVOLUTE
- PROGRAMMAZIONE GREEDY (4 ORE DI LEZIONE E 4 ORE DI ESERCITAZIONE)
- DIVIDI-ET-IMPERA (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
- TECNICHE DI RICERCA ESAUSTIVA E PROGRAMMAZIONE DINAMICA (8 ORE DI LEZIONE E 4 ORE DI ESERCITAZIONE)
Metodi Didattici
L’INSEGNAMENTO CONTEMPLA LEZIONI TEORICHE, ESERCITAZIONI IN AULA O IN LABORATORIO.
NELLE LEZIONI VENGONO PRESENTATI ALGORITMI E STRUTTURE DATI E VIENE DISCUSSA LA LORO UTILIZZABILITÀ PER LA SOLUZIONE DI PROBLEMI REALI.
NELLE ESERCITAZIONI IN LABORATORIO GLI STUDENTI IMPLEMENTANO GLI ALGORITMI E LE STRUTTURE DATI TRATTATI NEL CORSO.
NELLE ESERCITAZIONI IN AULA VIENE ASSEGNATO AGLI STUDENTI, DIVISI PER GRUPPI DI LAVORO, UN PROJECT-WORK DA SVILUPPARE DURANTE TUTTO LO SVOLGIMENTO DEL CORSO. IL PROGETTO COMPRENDE UNITARIAMENTE TUTTI I CONTENUTI DELL’INSEGNAMENTO ED È STRUMENTALE ALL’ACQUISIZIONE, OLTRE CHE DELLE CAPACITÀ DI RISOLVERE UN PROBLEMA DI PROGRAMMAZIONE, PROGETTANDO E REALIZZANDO UNA SOLUZIONE ALGORITMICA AVANZATA, ANCHE A SVILUPPARE E RAFFORZARE LE CAPACITÀ DI LAVORARE IN TEAM.
Verifica dell'apprendimento
LA PROVA DI ESAME È FINALIZZATA A VALUTARE NEL SUO COMPLESSO LE CONOSCENZE E LE CAPACITÀ DI COMPRENSIONE DEI CONCETTI PRESENTATI A LEZIONE, NONCHE' LA CAPACITÀ DI APPLICARE TALI CONOSCENZE NELLA PROGETTAZIONE E REALIZZAZIONE DI UN PROGRAMMA PER RISOLVERE PROBLEMI COMBINATORIALI NON BANALI.
LA PROVA D’ESAME SI ARTICOLA NELLA DISCUSSIONE DEL PROGETTO E DEGLI HOMEWORK SVOLTI DURANTE IL CORSO ED UNA PROVA CHE POTRÀ ESSERE SCRITTA O ORALE. CON LA PROVA SARANNO VALUTATE LE CONOSCENZE ACQUISITE IN MERITO A STRUTTURE DATI AVANZATE E TECNICHE DI PROGRAMMAZIONE EVOLUTE. CON IL PROGRETTO E GLI HOMEWORK SARANNO VALUTATE LE CAPACITA’ DI APPLICARE LE STRUTTURE DATI E LE TECNICHE DI PROGRAMMAZIONE PROPOSTE A LEZIONE E DI FORNIRNE DELLE IMPLEMENTAZIONI EFFICIENTI.

NELLA VALUTAZIONE FINALE, ESPRESSA IN TRENTESIMI, LA VALUTAZIONE DEL PROGETTO PESERÀ PER IL 40%, LA PROVA PER IL 40%, GLI HOMEWORK PER IL 20% E LA PROVA PER IL RESTANTE 40%. LA LODE POTRÀ ESSERE ATTRIBUITA AGLI STUDENTI CHE DIMOSTRINO UNA PIENA CONOSCENZA E PADRONANZA DI TUTTE LE PRINCIPALI TEMATICHE AFFRONTATE AL CORSO E CAPACITA’ DI APPLICARLI ANCHE A CONTESTI DIFFERENTI DA QUELLI ANALIZZATI A LEZIONE.
Testi
MICHAEL T. GOODRICH, ROBERTO TAMASSIA, MICHAEL H. GOLDWASSER, "DATA STRUCTURES AND ALGORITHMS IN PYTHON", WILEY, 2013.


ALTRO MATERIALE DIDATTICO SARÀ RESO DISPONIBILE SUL SITO DEL CORSO.

LETTURE CONSIGLIATE:
KLEINBERG, TARDOS, "ALGORITHM DESIGN", PRENCTICE HALL, 2005.
P. MORIN, "OPEN DATA STRUCTURES", (SCARICABILE ALL'INDIRIZZO WWW.OPENDATASTRUCTURES.ORG).
T.H. CORMEN, C.E. LEISERSON, R.L. RIVEST, C. STEIN, “INTRODUZIONE AGLI ALGORITMI E STRUTTURE DATI”, SECONDA EDIZIONE, MCGRAW-HILL, 2005.
M. VENTO, P. FOGGIA, “ALGORITMI E STRUTTURE DATI”, MCGRAW-HILL.

Altre Informazioni
L'insegnamento è erogato in Italiano.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2019-03-11]