ALGORITMI E LABORATORIO

Похожие документы
ALGORITMI E COMPLESSITA'

Algoritmi e Strutture dati a.a. 2013/2014

Algoritmi e Strutture dati a.a. 2012/2013

Algoritmi e Strutture Dati

ECONOMIA E GESTIONE DELLE IMPRESE BANCARIE M - Z

CONTABILITÀ E BILANCIO

MANAGEMENT DELLE RISORSE UMANE

COMPORTAMENTO ORGANIZZATIVO A - L

Algoritmi e Strutture Dati

FONDAMENTI DI INFORMATICA - canale 1

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica

PROGRAMMAZIONE E CONTROLLO

Algoritmi e Strutture Dati

algoritmi e strutture di dati

Algoritmi e Strutture Dati

CALCOLATORI ELETTRONICI

INTERNATIONAL BUSINESS M - Z

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

PETROGRAFIA PER I BENI CULTURALI

PROGRAMMAZIONE E CONTROLLO

INGEGNERIA DEL SOFTWARE

SOCIOLOGIA DEI NUOVI MEDIA

UNIVERSITA DEGLI STUDI DI PERUGIA

GESTIONE DELLE AZIENDE CULTURALI

Fondamenti di Informatica A.A Studenti

ELEMENTI DI ANALISI MATEMATICA 1 A - L

PEDAGOGIA GENERALE E SOCIALE

METODOLOGIA DELLA RICERCA SOCIALE

Algoritmi e Strutture Dati

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

Algoritmi e Strutture Dati

MATEMATICA E STATISTICA

POLITICA ECONOMICA A - L

ANALISI MATEMATICA II M - Z

STRATEGIE RIPRODUTTIVE NELLE PIANTE E NEGLI ANIMALI

FILOSOFIA DEL DIRITTO M - Q

LA PEDAGOGIA DELL'INCLUSIONE FORMATIVA E SOCIALE

DIRITTO DEL LAVORO DELLE PUBBLICHE AMMINISTRAZIONI

POLITICA ECONOMICA A - L

ECONOMIA E POLITICA AGRARIA

CALCOLATORI ELETTRONICI

Corso di Laurea Ingegneria Informatica

SCIENZA DELLE COSTRUZIONI A - L

MARKETING TERRITORIALE

BASI PSICOLOGICO RELAZIONALI

GESTIONE DELLE AREE A VERDE PARCHI E GIARDINI

Транскрипт:

DIPARTIMENTO DI MATEMATICA E INFORMATICA Corso di laurea in Informatica Anno accademico 2016/2017-2 anno E 9 CFU - 1 semestre Docenti titolari dell'insegnamento DOMENICO CANTONE - Modulo - INF/01-6 CFU Email: cantone@dmi.unict.it Edificio / Indirizzo: Dipartimento di Matematica e Informatica, Viale Andrea Doria 6, 95125 Catania Telefono: 095-7383052 Orario ricevimento: http://www.dmi.unict.it/~cantone/orarioricevimento.html SIMONE FARO - Modulo - INF/01-3 CFU Email: faro@dmi.unict.it Edificio / Indirizzo: Dipartimento di Matematica e Informatica, Viale A.Doria n.6 Telefono: 095 7383053 Orario ricevimento: Disponibile all'indirizzo http://www.dmi.unict.it/~faro/calendar.php OBIETTIVI FORMATIVI Conoscenza e capacità di comprensione (knowledge and understanding): saranno acquisite le conoscenze relative alle principali metodologie per la progettazione di algoritmi (incrementale, ricorsiva, programmazione dinamica, algoritmi golosi) nonché le tecniche per la loro analisi di complessità, sia nel caso pessimo che in quello medio. Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): saranno acquisite le capacità di risolvere semplici problemi che richiedono la progettazione e l'analisi di soluzioni algoritmiche. Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare la qualità di una soluzione algoritmica in termini di efficienza e possibilità di riutilizzo. Abilità comunicative (communication skills): saranno acquisite le necessarie abilità comunicative ed un'adeguata appropriatezza espressiva nella comunicazione di problematiche inerenti gli studi algoritmici, anche ad interlocutori non esperti. Capacità di apprendimento (learning skills): lo studente avrà la capacita di adattare le conoscenze acquisite anche a nuovi contesti, nonché di aggiornarsi attraverso la consultazione delle fonti specialistiche del settore algoritmico. Conoscenza e capacità di comprensione (knowledge and understanding): saranno acquisite le conoscenze relative alle al funzionamento e all'implementazione delle principali stutture dati analizzate durante il modulo teorico di Algoritmi Capacità di applicare conoscenza e comprensione (applying knowledge and understanding):

saranno acquisite le capacità di implementazione e di progettazione di soluzioni algoritmiche. Autonomia di giudizio (making judgements): Lo studente sarà in grado di giudicare l'efficacia della propria implementazione e del proprio lavoro progettuale. Capacità di apprendimento (learning skills): lo studente sarà in grado di adattare le soluzioni analizzate durante le lezioni anche ad altri contesti. PREREQUISITI RICHIESTI Strutture dati elementari e loro manipolazioni (liste, code, pile, alberi). Elementi di matematica discreta, di programmazione I e II, e di analisi matematica Lo studente dovrà conoscere i proncipali paradigmi di programmazione e le principali strutture dati. La conoscenza del linguaggio di programmazione ad oggetti C++ è un prerequisito fondamentale. FREQUENZA LEZIONI Per una piena comprensione degli argomenti del corso e delle tecniche illustrate, la frequenza delle lezioni è fortemente consigliata. La frequenza delle lezioni è fortemente consigliata. CONTENUTI DEL CORSO Descrizione generale del corso Il corso presenta le principali metodologie di progettazione di algoritmi (incrementale, ricorsiva, programmazione dinamica, algoritmi golosi) e le tecniche per l'analisi di complessità, sia nel caso pessimo che nel caso medio. PROGRAMMA PARTICOLAREGGIATO DEL CORSO Introduzione Problemi computazionali e algoritmi: il problema dell'ordinamento Algoritmi come tecnologia Metodologia incrementale: algoritmo Insertion-Sort (correttezza e complessità) Metodologia divide-et-impera: algoritmo Merge-Sort (complessità) Notazioni asintotiche e relazioni tra esse

Notazioni standard e funzioni comuni Ricorrenze Il metodo di sostituzione Il metodo iterativo e dell'albero di ricorsione Il teorema master Ordinamento e statistiche d'ordine Heap e procedura per la sua costruzione L'algoritmo Heapsort Code di priorità L'algoritmo Quicksort e sua versione randomizzata Analisi di Quicksort nel caso peggiore e nel caso medio Limiti inferiori per l'ordinamento Ordinamento in tempo lineare: algoritmi Counting-Sort, Radix-Sort, Bucket-Sort Mediane e statistiche d'ordine Hashing Tabelle hash Funzioni hash (metodo della divisione, metodo della moltiplicazione, hashing universale) Indirizzamento aperto Alberi rosso-neri Rotazioni, inserimenti, cancellazioni Analisi di complessità Elementi della programmazione dinamica Sottostruttura ottima, ripetizione dei sottoproblemi, ricostruzione di una soluzione ottima Alcuni casi di studio: programmazione delle catene di montaggio, moltiplicazione di una sequenza di matrici, la più lunga sottosequenza comune, distanza di editing Elementi della strategia golosa Proprietà della scelta golosa, sottostruttura ottima Alcuni casi di studio: problema della selezione di attività, costruzione di un codice di Huffman Algoritmi elementari per grafi Visita in ampiezza Visita in profondità (classificazione degli archi) Ordinamento topologico Componenti fortemente connesse Il modulo di Laboratorio di Algoritmi ha lo scopo di fornire gli strumenti per l'implementazione degli algoritmi e delle strutture dati trattate nel corso di Algoritmi, attraverso l'utilizzo della programmazione ad oggetti. Il linguaggio C++ verrà usato come strumento principale per presentare le implementazioni delle strutture dati e degli algoritmi.

TESTI DI RIFERIMENTO Il libro di testo consigliato è: T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduction to algorithms (Third Edition), The MIT Press, Cambridge - Massachusetts, 2009 disponibile anche nella traduzione italiana 1) T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati 3/ed, McGraw-Hill Italia, 2010. I testi di riferimento sono gli stessi specificati per iul modulo teorico di Algoritmi PROGRAMMAZIONE DEL CORSO * Argomenti Riferimenti testi 1 Introduzione. Algoritmi come tecnologia. Cap.1.1-1.2 di 1) 2 * Algoritmo Insertion-Sort Cap. 2.1 di 1) e materiale didattico integrativo 3 * Divide-et-impera Cap. 4.1 di 1) e materiale didattico integrativo 4 * Ricorrenze Cap. 4.3-4.5 di 1) e materiale didattico integrativo 5 * Heapsort Cap. 6 di 1) e materiale didattico integrativo 6 Quicksort Cap. 7 di 1) 7 * Ordinamento in tempo lineare Cap. 8 di 1) e materiale didattico integrativo 8 * Hashing Cap. 11.1-11.4 di 1) e materiale didattico integrativo 9 * Alberi rosso-neri Cap. 13 di 1) e materiale didattico integrativo 10 * Elementi della programmazione dinamica Cap. 15 di 1) e materiale didattico integrativo 11 * Elementi della strategia golosa Cap. 16.1-16.3 di 1) e materiale didattico integrativo 12 * Algoritmi elementari per grafi Cap. 22 di 1) e materiale didattico integrativo

* Argomenti Riferimenti testi 1 Heap ed HeapSort 2 Ordinamento in tempo lineare 3 Indicizzazione e Hashing 4 Programmazione dinamica 5 Programmazione greedy 6 Algoritmi di gestione e visita di un grafo * Conoscenze minime irrinunciabili per il superamento dell'esame. N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame. MATERIALE DIDATTICO I lucidi delle lezioni e delle esercitazioni sono messi a disposizione degli studenti sul sito http://www.dmi.unict.it/~cantone/homealgoritmi-17/italgoritmi.html Il codice degli esempi e degli esercizi svolti a lezione sarà reso disponibile per gli studenti sul sito del docente, ed in particolare alla pagina web http://www.dmi.unict.it/~faro/laboratorio_algoritmi.php VERIFICA DELL'APPRENDIMENTO MODALITÀ DI VERIFICA DELL'APPRENDIMENTO L esame finale è essenzialmente scritto. La verbalizzazione sarà preceduta da una breve discussione sul compito scritto e, nei casi dubbi, da una breve verifica orale. L'esame si svolgerà in due prove. La prima prova, della durata di 45 minuti, consiste in un test a risposta multipla, che viene sostenuto attraverso il sistema di esercitazione e secondo le modalità specificate all'interno dello stesso. Gli studenti che avranno ottenuto una valutazione superiore o uguale a 18 nella prima prova potranno accedere all seconda prova, della durata di circa 90 minuti. Tale prova di laboratorio consisterà nell'implementazione, in C++, di una o più tre le strutture dati studiate a lezione. La seconda prova verrà svolta attraverso l'utilizzo di un editor di testo e di un compilatore.

DATE DEGLI APPELLI I SESSIONE 06/02/2017 23/02/2017 II SESSIONE 14/06/2017 07/07/2017 III SESSIONE 19/09/2017 6/10/2017 SESSIONE STRAORDINARIA 08/05/2017 7/12/2017 Tutti gli esami avranno inizio alle ore 9:00. L'esame del modulo di laboratorio si svolgerà di norma nel pomeriggio del medesimo giorno in cui si sosterrà l'esame di Algoritmi. PROVE IN ITINERE L esame finale del modulo di Algoritmi può essere completato mediante due prove in itinere. La prima prova in itinere verterà sulla prima parte del corso e sarà offerta durante la seconda parte del periodo didattico in data concordata con gli studenti. La seconda prova in itinere verterà sulla seconda parte del corso e sarà offerta in occasione del primo appello di esami. Le prove in itinere consistono in domande aperte che possono riguardare sia argomenti di natura teorica che soluzioni di problemi analoghi a quelli trattati nel corso. PROVE DI FINE CORSO La prova scritta finale del modulo di Algoritmi è costituita, di norma, da quattro domande aperte che possono riguardare sia argomenti di natura teorica che soluzioni di problemi analoghi a quelli trattati nel corso. ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI http://www.dmi.unict.it/~cantone/esami/esami TRIENNALE/Algoritmi-sample-2016.pdf

Le domande relative alla prima prova d'esame sono le medesime che gli studenti potranno trovare all'interno del Sistema di Esercitazione. I testi delle prove di laboratorio in C++ sono invece disponibili sul sito internet del docente.