Gennaro PERCANNELLA | ALGORITMI E STRUTTURE DATI
Gennaro PERCANNELLA ALGORITMI E STRUTTURE DATI
cod. 0612700006
ALGORITMI E STRUTTURE DATI
0612700006 | |
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA | |
CORSO DI LAUREA | |
INGEGNERIA INFORMATICA | |
2024/2025 |
OBBLIGATORIO | |
ANNO CORSO 2 | |
ANNO ORDINAMENTO 2022 | |
PRIMO SEMESTRE |
SSD | CFU | ORE | ATTIVITÀ | ||
---|---|---|---|---|---|
ALGORITMI E STRUTTURE DATI | |||||
ING-INF/05 | 3 | 24 | LEZIONE | ||
ING-INF/05 | 3 | 24 | ESERCITAZIONE | ||
ALGORITMI E STRUTTURE DATI | |||||
INF/01 | 1 | 8 | LEZIONE | ||
INF/01 | 2 | 16 | LABORATORIO |
Obiettivi | |
---|---|
L’INSEGNAMENTO APPROFONDISCE GLI ASPETTI RELATIVI ALLA PROGETTAZIONE E REALIZZAZIONE DI ALGORITMI, UTILIZZANDO TECNICHE ITERATIVE E RICORSIVE E VALUTANDO L’EFFICIENZA DEI PROGRAMMI OTTENUTI E LE STRUTTURE DATI FONDAMENTALI CURANDONE LA REALIZZAZIONE IN LINGUAGGIO C. CONOSCENZE E CAPACITÀ DI COMPRENSIONE ALGORITMI E STRUTTURE DATI FONDAMENTALI: ALGORITMI DI ORDINAMENTO E SELEZIONE, ARRAY DINAMICI, LISTE, ALBERI, TABELLE HASH, PILE E CODE. PARADIGMI DI PROGRAMMAZIONE ITERATIVA E RICORSIVA. CONFRONTO DI ALGORITMI SULLA BASE DELL’EFFICIENZA DI MEMORIA E DI ESECUZIONE. CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE ANALIZZARE PROBLEMI TIPICI E REALIZZARE APPLICAZIONI CHE LI RISOLVANO UTILIZZANDO ALGORITMI E STRUTTURE DATI STANDARD IN LINGUAGGIO C, VALUTANDONE L’EFFICIENZA. REALIZZARE PROGETTI SOFTWARE IN C DI PICCOLE DIMENSIONI IMPIEGANDO LA COMPILAZIONE SEPARATA. |
Prerequisiti | |
---|---|
PER IL PROFICUO RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI SONO RICHIESTE CONOSCENZE SULLA PROGRAMMAZIONE IN LINGUAGGIO C. |
Contenuti | |
---|---|
Unità didattica 1: Puntatori, allocazione dinamica e strutture (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/4/2) - 1 (2 ORE Lezione): Introduzione al corso. Semantica operazionale. Puntatori. - 2 (2 ORE Lezione): Aritmetica dei Puntatori - 3 (2 ORE Lezione): Allocazione di memoria. Struct. - 4 (2 ORE Esercitazione): Puntatori, allocazione dinamica. - 5 (2 ORE Esercitazione): Struct. - 6 (2 ORE Laboratorio): Puntatori, allocazione dinamica e Struct. CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprensione del concetto di puntatore CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper utilizzare i puntatori, effettuare il passaggio dei parametri ad una funzione per riferimento, saper definire e utilizzare le strutture, saper allocare dinamicamente le strutture Unità didattica 2: Ricorsione (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/2) - 7 (2 ORE Lezione): Introduzione alla ricorsione - 8 (2 ORE Lezione): Uso degli algoritmi di ricorsione - 9 (2 ORE Esercitazione): Ricorsione, esercizi di base. - 10 (2 ORE Esercitazione): Ricorsione, esercizi avanzati. - 10 (2 ORE Laboratorio): Programmare con la ricorsione. CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Conoscere la ricorsione CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper progettare e realizzare una funzione ricorsiva Unità didattica 3: Algoritmi e strutture dati di base (parte 1) (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/2) - 12 (2 ORE Lezione): Algoritmi di base. Algoritmi di ricerca - Ricerca Lineare, Binary Search - Minimo e Massimo - 13 (2 ORE Lezione): Strutture Dati di base: Array Dinamico, Pila, Coda - 14 (2 ORE Esercitazione): Algoritmi di base - 15 (2 ORE Esercitazione): Strutture Dati di base - 16 (2 ORE Laboratorio): Algoritmi e Strutture Dati di base CONOSCENZE E CAPACITÀ DI COMPRENSIONE: conoscere gli algoritmi di base per la ricerca e le strutture dati di base (array dinamico, pila, coda) CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: saper utilizzare le strutture dati di base di cui sopra; saper applicare gli algoritmi di ricerca e di ricerca minimo e massimo alle strutture dati note; essere in grado di scegliere la struttura dati da utilizzare dato uno specifico problema Unità didattica 4: Liste (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/2/2) - 17 (2 ORE Lezione): Liste. Implementazione Iterativa - 18 (2 ORE Lezione): Liste. Implementazione ricorsiva - 19 (2 ORE Esercitazione): Liste. - 20 (2 ORE Laboratorio): Liste. CONOSCENZE E CAPACITÀ DI COMPRENSIONE: conoscere la struttura dati lista e le funzioni per la sua gestione CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: essere in grado di progettare e implementare le funzioni, in versione sia iterativa che ricorsiva, per la gestione di una lista Unità didattica 5: Algoritmi e strutture dati di base (parte 2) (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/4/0) - 21 (2 ORE Lezione): Complessità computazionale - 22 (2 ORE Lezione): Algoritmi di ordinamento - Selection Sort, Insertion Sort, Bubble Sort - 23 (2 ORE Lezione): Merge Sort, Quick Sort. - 24 (2 ORE Esercitazione): Tempo di esecuzione degli algoritmi. - 25 (2 ORE Esercitazione): Tempo di esecuzione degli algoritmi. CONOSCENZE E CAPACITÀ DI COMPRENSIONE: conoscere il concetto di complessità computazionale e gli algoritmi di ordinamento CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: essere in grado di calcolare la complessità computazionale di un algoritmo, sia nella versione iterativa che ricorsiva; essere in grado di utilizzare gli algoritmi di ordinamento sulle varie strutture dati Unità didattica 6: Alberi (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/2/2) - 26 (2 ORE Lezione): Alberi. Implementazione Iterativa - 27 (2 ORE Lezione): Alberi. Implementazione ricorsiva - 28 (2 ORE Esercitazione): Alberi. - 29 (2 ORE Laboratorio): Alberi. CONOSCENZE E CAPACITÀ DI COMPRENSIONE: conoscere la struttura dati albero e le funzioni per la sua gestione CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: essere in grado di progettare e implementare le funzioni, in versione sia iterativa che ricorsiva, per la gestione di un albero Unità didattica 7: Tabelle hash (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/6) - 30 (2 ORE Lezione): Tabelle hash a indirizzamento diretto - 31 (2 ORE Lezione): Tabelle hash a indirizzamento indiretto - 32 (2 ORE Esercitazione): Costruzione di una tabella hash. - 33 (2 ORE Esercitazione): Utilizzo di una tabella hash. - 34 (2 ORE Laboratorio): Esercitazione finale. - 35 (2 ORE Laboratorio): Esercitazione finale. - 36 (2 ORE Laboratorio): Esercitazione finale. CONOSCENZE E CAPACITÀ DI COMPRENSIONE: conoscere la struttura dati tabella hash e le funzioni per la sua gestione CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: essere in grado di progettare e implementare le funzioni, in versione sia iterativa che ricorsiva, per la gestione di una tabella hash. Essere in grado di scegliere la struttura dati più adatta per risolvere uno specifico problema TOTALE ORE LEZIONE/ESERCITAZIONE/LABORATORIO 32/24/16 |
Metodi Didattici | |
---|---|
L’INSEGNAMENTO CONTEMPLA LEZIONI TEORICHE, ESERCITAZIONI IN AULA ED ESERCITAZIONI PRATICHE DI LABORATORIO. NELLE ESERCITAZIONI IN AULA VENGONO PROPOSTI E COMMENTATI ALGORITMI E LA RELATIVA CODIFICA IN LINGUAGGIO C, UTILIZZANDO OPPORTUNI STRUMENTI CASE. NELLE ESERCITAZIONI IN LABORATORIO GLI STUDENTI SVOLGONO LE PRECEDENTI ATTIVITÀ IN AUTONOMIA SULLA BASE DELLE SPECIFICHE FORNITE DAL DOCENTE. PER POTER SOSTENERE LA VERIFICA FINALE DEL PROFITTO E CONSEGUIRE I CFU RELATIVI ALL’ATTIVITÀ FORMATIVA, LO STUDENTE DOVRÀ AVERE FREQUENTATO ALMENO IL 70% DELLE ORE PREVISTE DI ATTIVITÀ DIDATTICA ASSISTITA. |
Verifica dell'apprendimento | |
---|---|
LA PROVA DI ESAME È FINALIZZATA A VALUTARE NEL SUO COMPLESSO: LA CONOSCENZA E LA CAPACITÀ DI COMPRENSIONE DEI CONCETTI PRESENTATI AL CORSO; LA CAPACITÀ DI APPLICARE TALI CONOSCENZE PER LA RISOLUZIONE DI PROBLEMI CHE RICHIEDONO L’UTILIZZO DI ALGORITMI E STRUTTURE DATI FONDAMENTALI, VALUTANDONE L’EFFICIENZA DI ELABORAZIONE; L’AUTONOMIA DI GIUDIZIO, LE ABILITÀ COMUNICATIVE E LA CAPACITÀ DI APPRENDERE. ESSA CONSISTE DI UNA PROVA PRATICA E DI UNA PROVA TEORICA. LA PROVA PRATICA È TESA AD ACCERTARE LE COMPETENZE NEL REALIZZARE PROGRAMMI IN LINGUAGGIO C CHE USANO ALGORITMI (ORDINAMENTO E SELEZIONE) E STRUTTURE DATI DI BASE (PILE, CODE, LISTE, ALBERI, TABELLE HASH), ED È REALIZZATA DIRETTAMENTE SUL SISTEMA DI ELABORAZIONE PERSONALE. SONO CONSIDERATE CAPACITÀ MINIME QUELLE DI RISOLVERE IL PROBLEMA PROPOSTO, SENZA ERRORI SINTATTICI RILEVANTI; SONO RITENUTE CAPACITÀ MASSIME QUELLA DI PERVENIRE A SOLUZIONI ALGORITMICHE CHE SIANO EFFICIENTI E CHE FACCIANO USO DELLE STRUTTURE DATI E DEGLI ALGORITMI PIÙ ADEGUATI, SIA IN VERSIONE ITERATIVA CHE RICORSIVA. IL SUPERAMENTO DELLA PROVA PRATICA È CONDIZIONE PER ACCEDERE ALLA PROVA TEORICA CHE VERTERÀ SU TUTTI GLI ARGOMENTI DEL CORSO E LA VALUTAZIONE TERRÀ CONTO DELLE CONOSCENZE DIMOSTRATE DALLO STUDENTE E DEL GRADO DEL LORO APPROFONDIMENTO, DELLA CAPACITÀ DI APPRENDERE DIMOSTRATA, DELLA QUALITÀ DELL’ESPOSIZIONE. AI FINI DEL VOTO FINALE, ESPRESSO IN TRENTESIMI, LA PROVA PRATICA CONTRIBUISCE PER IL 60% E LA PROVA TEORICA PER IL 40%. LA LODE PUÒ ESSERE ATTRIBUITA AGLI STUDENTI CHE DIMOSTRINO UNA OTTIMA CAPACITÀ DI ANALISI E DI PROGETTO DI ALGORITMI E STRUTTURE DATI. |
Testi | |
---|---|
P. FOGGIA, M. VENTO, “ALGORITMI E STRUTTURE DATI: ASTRAZIONE, PROGETTO E REALIZZAZIONE”, MCGRAW-HILL. MATERIALE DIDATTICO INTEGRATIVO SARA' DISPONIBILE NELLA SEZIONE DEDICATA DELL'INSEGNAMENTO ALL'INTERNO DELLA PIATTAFORMA E-LEARNING DI ATENEO (HTTP://ELEARNING.UNISA.IT) ACCESSIBILE AGLI STUDENTI DEL CORSO TRAMITE LE CREDENZIALI UNICHE DI ATENEO. |
Altre Informazioni | |
---|---|
L'INSEGNAMENTO E' EROGATO IN ITALIANO |
BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-11-29]