PROGRAMMAZIONE & STRUTTURE DATI

Carmen Bisogni PROGRAMMAZIONE & STRUTTURE DATI

0512100052
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA
INFORMATICA
2024/2025

OBBLIGATORIO
ANNO CORSO 1
ANNO ORDINAMENTO 2017
SECONDO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
324LABORATORIO


Obiettivi
GLI OBIETTIVI PRINCIPALI DEL CORSO SONO:
1. CONOSCENZA APPROFONDITA DEI CONCETTI FONDAMENTALI RIGUARDANTI LE STRUTTURE DATI: GLI STUDENTI SARANNO IN GRADO DI COMPRENDERE E ANALIZZARE STRUTTURE DATI IN TERMINI SIA DI SPECIFICA SINTATTICA E SEMANTICA SIA DI PROGETTAZIONE E IMPLEMENTAZIONE, DI VALUTARE LE LORO PRESTAZIONI IN TERMINI DI TEMPO E SPAZIO, NONCHÉ DI COMPRENDERE LE DIFFERENZE TRA QUESTE STRUTTURE E DI SCEGLIERE LA PIÙ ADATTA PER RISOLVERE UN DETERMINATO PROBLEMA. SARANNO TRATTATE LE STRUTTURE DATI FONDAMENTALI COME LISTE, PILE, CODE, ALBERI E GRAFI.
2. CONOSCENZA DEGLI ALGORITMI FONDAMENTALI: DURANTE IL CORSO, GLI STUDENTI VERRANNO ESPOSTI A UNA VASTA GAMMA DI ALGORITMI, TRA CUI ALGORITMI DI ORDINAMENTO, RICERCA E ALGORITMI PER LA REALIZZAZIONE DEI PRINCIPALI OPERATORI DELLE STRUTTURE DATI CITATE AL PUNTO PRECEDENTE. GLI STUDENTI SARANNO IN GRADO DI APPLICARE QUESTE CONOSCENZE PER RISOLVERE UNA VARIETÀ DI PROBLEMI COMPUTAZIONALI.
3. CONOSCENZA DELLE TECNICHE DI PROGRAMMAZIONE ITERATIVA E RICORSIVA: GLI STUDENTI IMPARERANNO LE TECNICHE DI PROGRAMMAZIONE ITERATIVA E RICORSIVA E SARANNO IN GRADO DI APPLICARLE PER RISOLVERE PROBLEMI COMPLESSI.


CONOSCENZA E CAPACITÀ DI COMPRENSIONE
1. LO STUDENTE SARÀ IN GRADO DI COMPRENDERE I PRINCIPI FONDAMENTALI DELLE STRUTTURE DATI.
2. LO STUDENTE SARÀ IN GRADO DI IDENTIFICARE LE APPLICAZIONI PRATICHE DELLE STRUTTURE DATI IN DIVERSI CONTESTI INFORMATICI.
3. LO STUDENTE SARÀ IN GRADO DI ANALIZZARE L'EFFICIENZA DELLE STRUTTURE DATI IN TERMINI DI COMPLESSITÀ TEMPORALE E SPAZIALE.
4. LO STUDENTE SARÀ IN GRADO DI DISTINGUERE TRA DIFFERENTI TIPI DI STRUTTURE DATI E LORO USI SPECIFICI.

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE
1. LO STUDENTE SARÀ IN GRADO DI IMPLEMENTARE STRUTTURE DATI FONDAMENTALI UTILIZZANDO IL LINGUAGGIO C.
2. LO STUDENTE SARÀ IN GRADO DI RISOLVERE PROBLEMI COMPUTAZIONALI APPLICANDO TECNICHE DI PROGRAMMAZIONE ITERATIVA E RICORSIVA.
3. LO STUDENTE SARÀ IN GRADO DI SVILUPPARE E UTILIZZARE STRUTTURE DATI ADEGUATE PER OTTIMIZZARE LE SOLUZIONI SOFTWARE.
4. LO STUDENTE SARÀ IN GRADO DI PROGETTARE SOLUZIONI PERSONALIZZATE PER SODDISFARE REQUISITI SPECIFICI DI PROGETTI SOFTWARE.

AUTONOMIA DI GIUDIZIO
1. LO STUDENTE SARÀ IN GRADO DI VALUTARE CRITICAMENTE LA SCELTA DELLE STRUTTURE DATI PER SPECIFICHE ESIGENZE DI PRESTAZIONE.
2. LO STUDENTE SARÀ IN GRADO DI SCEGLIERE TRA IMPLEMENTAZIONI STATICHE E DINAMICHE DI STRUTTURE DATI BASATE SUL CONTESTO D'USO.
3. LO STUDENTE SARÀ IN GRADO DI ANALIZZARE E MODIFICARE STRUTTURE DATI ESISTENTI PER MIGLIORARE LA LORO EFFICIENZA.

ABILITÀ COMUNICATIVE
1. LO STUDENTE SARÀ IN GRADO DI SPIEGARE CHIARAMENTE E CONCISAMENTE LE FUNZIONALITÀ E LE SCELTE IMPLEMENTATIVE DELLE STRUTTURE DATI UTILIZZATE IN VARI PROGETTI DI PROGRAMMAZIONE.
2. LO STUDENTE SARÀ IN GRADO DI DOCUMENTARE ADEGUATAMENTE IL CODICE E LE SOLUZIONI DI PROGRAMMAZIONE.
3. LO STUDENTE SARÀ IN GRADO DI PRESENTARE I RISULTATI DEI PROGETTI DI PROGRAMMAZIONE, ILLUSTRANDO LE DECISIONI TECNICHE PRESE E DISCUTENDO LE IMPLICAZIONI DELLE SCELTE DI STRUTTURE DATI.

CAPACITÀ DI APPRENDIMENTO
1. LO STUDENTE SARÀ IN GRADO DI APPROFONDIRE AUTONOMAMENTE LA PROPRIA COMPRENSIONE DELLE STRUTTURE DATI E DELLE TECNICHE DI PROGRAMMAZIONE ATTRAVERSO L'AUTOAPPRENDIMENTO E LA RICERCA.
2. LO STUDENTE SARÀ IN GRADO DI ADATTARSI ALLE EVOLUZIONI TECNOLOGICHE NELL'AMBITO DELLE STRUTTURE DATI E DELLE METODOLOGIE DI PROGRAMMAZIONE.
3. LO STUDENTE SARÀ IN GRADO DI ANALIZZARE CRITICAMENTE E RIFLETTERE SULL'EFFICACIA DELLE SOLUZIONI DI PROGRAMMAZIONE IMPLEMENTATE, IDENTIFICANDO POTENZIALI MIGLIORAMENTI.
Prerequisiti
Per il proficuo raggiungimento degli obiettivi prefissati sono richieste le conoscenze sulla programmazione
in linguaggio C fornite dall’insegnamento di Programmazione I.
Contenuti
1.COMPLEMENTI DI PROGRAMMAZIONE IN C: STRUTTURE AUTO-REFERENZIATE, STRUTTURE DINAMICHE (LISTE, ALBERI) - (LEZIONI: 2H, ESERCITAZIONI: 1H);
2.NOZIONI GENERALI SUI MODELLI DI MEMORIA, MEMORIA STATICA E MEMORIA DINAMICA, STACK E RECORD DI ATTIVAZIONE, NOMI ED AMBIENTE, REGOLE DI SCOPE STATICO E DINAMICO (LEZIONI: 2H);
3.PUNTATORI E ALLOCAZIONE DINAMICA DELLA MEMORIA (LEZIONI: 2H, ESERCITAZIONI: 1H);
4.ASTRAZIONI E MODULI: TIPI DI ASTRAZIONE, INTERFACCIA E IMPLEMENTAZIONE DI UN MODULO, REALIZZAZIONE DI MODULI IN C (LEZIONI: 2H, ESERCITAZIONI: 2H);
5.RICORSIONE: ASPETTI E DEFINIZIONI GENERALI, RICORSIONE E ITERAZIONE, GESTIONE DELL’ESECUZIONE DI PROGRAMMI RICORSIVI (LEZIONI: 6H, ESERCITAZIONI: 3H);
6.ALGORITMI ITERATIVI E RICORSIVI SU ARRAY, ALGORITMI DI ORDINAMENTO (LEZIONI: 6H, ESERCITAZIONI: 4H);
7.CENNI SU COMPLESSITÀ COMPUTAZIONALE (LEZIONI: 2H, ESERCITAZIONI: 1H);
8.TIPI DI DATI ASTRATTI (ADT): SPECIFICA SINTATTICA E SEMANTICA, PROGETTO E REALIZZAZIONE (LEZIONI: 2H, ESERCITAZIONI: 1H);
9.LISTE: ASPETTI GENERALI, VARIANTI E SPECIFICA DEGLI ADT, DEFINIZIONE DELLA STRUTTURA DATI E IMPLEMENTAZIONI ALTERNATIVE BASATE SU ARRAY E STRUTTURE A PUNTATORI, SPECIFICA E REALIZZAZIONE DEGLI OPERATORI (VERSIONI ITERATIVE E RICORSIVE), ALGORITMI SU LISTE ED APPLICAZIONI (LEZIONI: 8H, ESERCITAZIONI: 4H);
10.PILE E CODE: SPECIFICA DEGLI ADT, OPERATORI DI PILA E CODA, IMPLEMENTAZIONI ALTERNATIVE DELLE STRUTTURE DATI, APPLICAZIONI DI PILE E CODE (LEZIONI: 4H, ESERCITAZIONI: 2H);
11.ALBERI E ALBERI BINARI: ASPETTI GENERALI, SPECIFICA DEGLI ADT, DEFINIZIONE DELLA STRUTTURA DATI E OPERATORI DI BASE, ALGORITMI DI VISITA E ALTRI ALGORITMI SUGLI ALBERI (IN VERSIONE ITERATIVA E RICORSIVA), APPLICAZIONI DI ALBERI E ALBERI BINARI (LEZIONI: 4H, ESERCITAZIONI: 2H);
12.INSIEMI ORDINATI E ALBERI DI RICERCA BINARIA: SPECIFICA E IMPLEMENTAZIONE DELL’ADT, OPERATORI DI CREAZIONE, INSERIMENTO, CANCELLAZIONE E RICERCA, ALGORITMI DI VISITA, CENNI SUL BILANCIAMENTO DEGLI ALBERI DI RICERCA BINARIA, APPLICAZIONI DI ALBERI DI RICERCA BINARIA (LEZIONI: 4H, ESERCITAZIONI: 2H);
13.CENNI SU CODE A PRIORITÀ E HEAP (LEZIONI: 2H);
14.INSIEMI, TABELLE E TABELLE HASH: ASPETTI GENERALI, SPECIFICA E IMPLEMENTAZIONE DELL’ADT, FUNZIONI DI HASHING, OPERATORI DI CREAZIONE, INSERIMENTO, CANCELLAZIONE E RICERCA, GESTIONE DELLE COLLISIONI CON LISTA CONCATENATA ED INDIRIZZAMENTO APERTO, APPLICAZIONI DI TABELLE HASH (LEZIONI: 2H, ESERCITAZIONI: 1H).
Metodi Didattici
L’INSEGNAMENTO PREVEDE SIA LEZIONI FRONTALI (6 CFU / 48 ORE) CHE LEZIONI IN LABORATORIO (3 CFU/24 ORE). LE LEZIONI DI LABORATORIO SARANNO ARRICCHITE DA CASI DI STUDIO CON PROGRAMMI SVILUPPATI IN CLASSE CON L'AUSILIO DEL DOCENTE.
Verifica dell'apprendimento
IL RAGGIUNGIMENTO DEGLI OBIETTIVI DELL’INSEGNAMENTO È CERTIFICATO MEDIANTE IL SUPERAMENTO DI UN ESAME CON VALUTAZIONE IN TRENTESIMI. L'ESAME PREVEDE UN EVENTUALE TEST PRESELETTIVO, UNA PROVA SCRITTA O PRATICA DI LABORATORIO E UNA PROVA ORALE.
IL TEST PRESELETTIVO HA UNA DURATA DI CIRCA 15 MINUTI E SERVE A VALUTARE I REQUISITI MINIMI DI CONOSCENZA PER POTER AFFRONTARE LA PROVA SCRITTA O PRATICA.
LA PROVA SCRITTA O PRATICA DI LABORATORIO È PROPEDEUTICA ALLA PROVA ORALE ED HA A DI NORMA UNA DURATA NON INFERIORE A 120 MINUTI. LA PROVA SERVE A VALUTARE LA CAPACITÀ DELLO STUDENTE DI METTERE IN PRATICA LE NOZIONI DEL CORSO ATTRAVERSO LA RISOLUZIONE DI ESERCIZI SPECIFICI, CHE CONSISTONO NELLA SPECIFICA E REALIZZAZIONE DI PROGRAMMI CHE USANO ALGORITMI E STRUTTURE DATI (PILE, CODE, LISTE, ALBERI, TABELLE HASH).

LA PROVA ORALE CONSISTE IN UN COLLOQUIO CON DOMANDE E DISCUSSIONE SUI CONTENUTI TEORICI E METODOLOGICI INDICATI NEL PROGRAMMA DELL’INSEGNAMENTO ED È FINALIZZATA AD ACCERTARE IL LIVELLO DI CONOSCENZA E CAPACITÀ DI COMPRENSIONE RAGGIUNTO DALLO STUDENTE, NONCHÉ A VERIFICARE LA CAPACITÀ DI ESPOSIZIONE RICORRENDO ALLA
TERMINOLOGIA APPROPRIATA E LA CAPACITÀ DI ORGANIZZAZIONE AUTONOMA DELL'ESPOSIZIONE SUGLI STESSI ARGOMENTI A CONTENUTO TEORICO.
Testi
IL MATERIALE DIDATTICO, DISPENSE DEL DOCENTE, ESEMPI DI ESERCIZI SVOLTI E ULTERIORE MATERIALE DIDATTICO INTEGRATIVO, SONO DISPONIBILI ONLINE PER GLI STUDENTI SUL SITO DELL’INSEGNAMENTO.

ROBERT SEDGEWICK, “ALGORITMI IN C” 3/ED, ADDISON - WESLEY
Altre Informazioni
E-LEARNING PLATFORM: HTTP://ELEARNING.INFORMATICA.UNISA.IT/EL-PLATFORM/

CONTATI DOCENTE: Gemma Catolino gcatolino@unisa.it
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-10-07]