ADVANCED ALGORITHMS AND DATA STRUCTURES

Vincenzo AULETTA ADVANCED ALGORITHMS AND DATA STRUCTURES

0622900021
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA MAGISTRALE
DIGITAL HEALTH AND BIOINFORMATIC ENGINEERING
2019/2020

OBBLIGATORIO
ANNO CORSO 1
ANNO ORDINAMENTO 2018
PRIMO SEMESTRE
CFUOREATTIVITÀ
540LEZIONE
432ESERCITAZIONE
Obiettivi
IL CORSO MIRA A FORNIRE ALLO STUDENTE LA CAPACITÀ DI ANALIZZARE UN PROBLEMA, PROGETTARE UNA SOLUZIONE EFFICIENTE, ANCHE ATTRAVERSO L’UTILIZZO DI TECNICHE DI PROGRAMMAZIONE EVOLUTE E STRUTTURE DATI AVANZATE, E REALIZZARNE UN'IMPLEMENTAZIONE IN UN LINGUAGGIO DI PROGRAMMAZIONE ORIENTATO AGLI OGGETTI.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE:
•CONOSCENZA DI TECNICHE DI PROGRAMMAZIONE EVOLUTE (PROGRAMMAZIONE GREEDY, PROGRAMMAZIONE DINAMICA, BACKTRACKING) E DI STRUTTURE DATI AVANZATE (DIZIONARI, ALBERI BINARI DI RICERCA, CODE A PRIORITÀ, TABELLE HASH, B-TREES, GRAFI).
•CONOSCENZA DELL’IMPLEMENTAZIONE DELLE PRINCIPALI STRUTTURE DATI PRESENTI NELLE LIBRERIE STANDARD DEI PRINCIPALI LINGUAGGI DI PROGRAMMAZIONE.
•COMPRENSIONE DELLA TERMINOLOGIA UTILIZZATA NELL'AMBITO DELLA PROGETTAZIONE DI ALGORITMI.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE:
•CAPACITÀ DI APPLICARE LE TECNICHE DI PROGRAMMAZIONE E LE STRUTTURE DATI PRESENTATE NEL CORSO PER LA RISOLUZIONE DI PROBLEMI COMPLESSI UTILIZZANDO IL PARADIGMA DEL DESIGN PATTERNS.
•CAPACITÀ DI IMPLEMENTARE GLI ALGORITMI E LE STRUTTURE DATI AVANZATE PRESENTATI IN UN LINGUAGGIO DI PROGRAMMAZIONE AD OGGETTI.
Prerequisiti
CONOSCENZA DI UN LINGUAGGIO DI PROGRAMMAZIONE ORIENTATO AGLI OGGETTI. CONOSCENZA DELLE STRUTTURE DATI ELEMENTARI E DEI PRINCIPI DELLA PROGRAMMAZIONE. CONOSCENZA DELLE TECNICHE DI ANALISI DEGLI ALGORITMI.
Contenuti
LINGUAGGIO PYTHON
- TIPI DI DATI E FUNZIONI (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
- CLASSI, MODULI E LIBRERIE (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)

ALGORITMI E STRUTTURE DATI AVANZATE
- ABSTRACT DATA TYPES E STRUTTURE DATI ELEMENTARI (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
- ALBERI BINARI DI RICERCA (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
- ALBERI DI RICERCA BILANCIATI (4 ORE DI LEZIONE E 4 ORE DI ESERCITAZIONE)
- CODE A PRIORITÀ (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
- MAPPE E TABELLE HASH (2 ORE DI LEZIONE E 2 ORE DI ESERCITAZIONE)
- B-TREES (2 ORE DI LEZIONE E 1 ORA DI ESERCITAZIONE)
- GRAFI (8 ORE DI LEZIONE E 6 ORE DI ESERCITAZIONE)

TECNICHE DI PROGRAMMAZIONE EVOLUTE
- PROGRAMMAZIONE GREEDY (4 ORE DI LEZIONE E 4 ORE DI ESERCITAZIONE)
- TECNICHE DI RICERCA ESAUSTIVA E PROGRAMMAZIONE DINAMICA (6 ORE DI LEZIONE E 4 ORE DI ESERCITAZIONE)
- ALGORITMI DI APPROSSIMAZIONE (2 ORE DI LEZIONE)
- ALGORITMI GENETICI (2 ORE DI LEZIONE E 1 ORA DI ESERCITAZIONE)
Metodi Didattici
L’INSEGNAMENTO CONTEMPLA SIA LEZIONI TEORICHE CHE 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 PRESENTATI NEL CORSO. NELLE ESERCITAZIONI IN AULA VENGONO ASSEGNATI AGLI STUDENTI, DIVISI PER GRUPPI DI LAVORO, UNO O PIU' 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 IL LIVELLO DI CONOSCENZA E COMPRENSIONE DEI CONCETTI PRESENTATI A LEZIONE, NONCHÉ 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 SVOLTO DURANTE IL CORSO ED UNA PROVA SCRITTA. LA PROVA SCRITTA CONSISTE DI TRE ESERCIZI ED E' FINALIZZATA A VALUTARE LE CONOSCENZE ACQUISITE IN MERITO A STRUTTURE DATI AVANZATE E TECNICHE DI PROGRAMMAZIONE EVOLUTE E LA CAPACITA' DI APPLICARLE IN SEMPLICI SITUAZIONI. CON IL PROGETTO SARANNO VALUTATE LE CAPACITÀ DI APPLICARE A CASI CONCRETI 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 60% E LA PROVA SCRITTA 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 CAPACITÀ DI APPLICARLI ANCHE A CONTESTI DIFFERENTI DA QUELLI ANALIZZATI A LEZIONE.

Testi
M.T. GOODRICH, M. TAMASSIA, M.H. GOLDWASSER, “DATA STRUCTURES & ALGORITHMS IN PYTHON”,
WILEY 2013

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

LETTURE CONSIGLIATE:
KLEINBERG, TARDOS, "ALGORITHM DESIGN", PRENCTICE HALL, 2005.
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.
P. MORIN, ”OPEN DATA STRUCTURES", (HTTP://WWW.OPENDATASTRCTURES.ORG).
C. DEMETRESCU, I. FINOCCHI, G. ITALIANO, “ALGORITMI E STRUTTURE DATI”, MCGRAW HILL, 2008.
Altre Informazioni
L'INSEGNAMENTO È EROGATO IN INGLESE.

IL CORSO HA UN SITO WEB PUBBLICATO ALL'INTERNO DELLA PIATTAFORMA E-LEARNING DEL DIEM (HTTP://ELEARNING.DIEM.UNISA.IT - CORSO DI RETI DI CALCOLATORI DEL CDS IN INGEGNERIA INFORMATICA) ACCESSIBILE PER TUTTI GLI STUDENTI DI INGEGNERIA DI UNISA. SUL SITO VENGONO PUBBLICATI ANNUNCI, INFORMAZIONI, MATERIALE DIDATTICO, ESERCIZI E TRACCE D’ESAME, SLIDE, CALENDARIO DELLE LEZIONI, ARGOMENTI DELLE LEZIONI, FORUM. PER ACCEDERE AL SITO DEL CORSO È NECESSARIO REGISTRARSI.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2021-02-19]