Dipartimento: DIMES Corso di Laurea: INGEGNERIA INFORMATICA Indirizzo Internet Corso di Laurea: www.dimes.unical.it Nome insegnamento: ALGORITMI E STRUTTURE DATI Condivisione: nessuna Articolazione in moduli: No Settore Scientifico Disciplinare: ING-INF/05 Docente responsabile: SERGIO FLESCA Posizione docente responsabile: PROFESSORE ASSOCIATO – UNIV. DELLA CALABRIA Crediti formativi universitari: 6 Numero ore lezioni: 36 Numero ore riservate attività didattiche assistite: 57 Numero ore esercitazioni: 21 Numero ore riservate studio individuale: 93 Tipologia: ATTIVITA’ CARATTERIZZANTE DELLA CLASSE (INGEGNERIA INFORMATICA) Lingua di insegnamento: ITALIANO Collocazione: II ANNO, I SEMESTRE Prerequisiti: FONDAMENTI DI INFORMATICA Obiettivi formativi (risultati d’apprendimento previsti e competenze da acquisire – Descrittori di Dublino): Il corso è finalizzato ad acquisire e sperimentare le tecniche di base per la valutazione della complessità di problemi e algoritmi e per la progettazione e realizzazione di strutture dati e algoritmi. La realizzazione degli algoritmi e delle strutture dati seguirà i principi della programmazione orientata agli oggetti e verrà utilizzato il linguaggio Java. Competenze da acquisire: comprensione dei concetti legati alla complessità dei problemi e degli algoritmi abilità ad impostare la risoluzione di problemi mediante algoritmi e valutare l’efficienza degli algoritmi realizzati abilità di verificare e dimostrare la correttezza di un algoritmo abilità di utilizzare strutture dati ed algoritmi noti in letteratura per la risoluzione di problemi Argomenti delle lezioni: 1. COMPLESSITÀ DI PROBLEMI E ALGORITMI: Modelli di computazione (macchina di Turing, macchine RAM e RASP), analisi di complessità (temporale e spaziale) di algoritmi e problemi, funzioni di costo, notazione di rappresentazione delle funzioni di costo, casi possibili (medio, peggiore e migliore). 2. RICHIAMO DI ALGORITMI FONDAMENTALI: algoritmi di ordinamento e di ricerca iterativi, algoritmi su matrici e risoluzione di sistemi di equazioni. Analisi di complessità. 3. RICORSIONE E ALGORITMI DI TIPO DIVIDE ET IMPERA: La tecnica Divide et Impera e calcolo di complessità. Moltiplicazione efficiente di interi e di matrici. Algoritmi efficienti di ricerca e ordinamento. Algoritmi efficienti per il calcolo del k-mo maggiore. Ricorsione e tecnica divide et impera. Divide et Impera senza ricorsione. 4. ALBERI: Alberi binari, algoritmi di visita e progetto di iteratori. Alberi binari di ricerca: ricerca e bilanciamento. Alberi generali. B-Alberi. 5. DIZIONARI E CODE DI PRIORITÀ: Dizionari, vettori associativi, tabelle hash, code di priorità, heap, e loro applicazioni. 6. STRINGHE: definizioni preliminari, distanza fra stringhe, massima sottosequenza comune, string matching. 7. GRAFI: Proprietà e realizzazioni. Algoritmi di visita, alberi ricoprenti componenti connesse, ciclicità, chiusura transitiva, componenti fortemente connesse. 8. GRAFI PESATI: La rappresentazione di grafi pesati. Minimi alberi ricoprenti e distanze minime da un nodo sorgente e loro computazione con tecniche golose. Calcolo delle distanze minime con tecniche di programmazione dinamica. 9. BACKTRACKING e cenni alle classi di complessità di problemi decisionali. Argomenti delle esercitazioni: Progettazione e implementazione di strutture dati e algoritmi Modalità di frequenza: OBBLIGATORIA Modalità di svolgimento delle lezioni: Lezioni frontali in aula, con metodologie tradizionali e proiettore collegato al PC. Modalità di svolgimento delle esercitazioni: In aula, con metodologie tradizionali e proiettore collegato al PC. Metodi di valutazione: Prova scritta e prova orale obbligatoria. Testi di riferimento: Algoritmi e Strutture dati 2° Edizione Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano McGraw-Hill Orario e aule lezioni: Calendario prove valutazione: www.dimes.unical.it