ALGORITMI E STRUTTURE DATI

Alessia SAGGESE ALGORITMI E STRUTTURE DATI

0612700006
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA
INGEGNERIA INFORMATICA
2023/2024



OBBLIGATORIO
ANNO CORSO 2
ANNO ORDINAMENTO 2022
PRIMO SEMESTRE
CFUOREATTIVITÀ
1ALGORITMI E STRUTTURE DATI
324LEZIONE
324ESERCITAZIONE
2ALGORITMI E STRUTTURE DATI
18LEZIONE
216LABORATORIO


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-05]