Obiettivi formativi
Gli obiettivi sono di fornire allo studente competenze nell’ambito dell’analisi e dello sviluppo di algoritmi che riguardano:
- Principali strutture dati statiche e dinamiche
- Algoritmi di ordinamento e di ricerca
- Programmazione generica
Capacità di applicare conoscenza e comprensione:
- Progettare e realizzare algoritmi in linguaggio C++
- Utilizzare strutture dati di base per la risoluzione di problemi
- Analizzare e descrivere la complessità di un algoritmo
Prerequisiti
E’ richiesta una conoscenza di base del linguaggio C++.
Contenuti dell'insegnamento
Il corso fornisce una introduzione alle strutture dati fondamentali dell’informatica, in linguaggio C++, e alle tecniche per la progettazione di algoritmi
Programma esteso
Parte A:
Introduzione alla programmazione in C++.
Array e puntatori.
Liste.
Pile.
Code.
Ricorsione.
Algoritmi di ordinamento.
Parte B:
Dizionari e alberi binari.
Code di priorità e heap.
Alberi binari di ricerca.
Grafi.
Introduzione alla Standard Template Library (STL) in C++
Bibliografia
Robert Sedgewick, Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching, Third Edition.
Clifford A. Shaffer, Data Structures and Algorithm Analysis Edition 3.2 (C++ Version)
Metodi didattici
Lezioni in aula (34 ore).
Esercitazioni in aula (18 ore).
Esercitazioni di laboratorio (20 ore).
Modalità verifica apprendimento
Una prova di laboratorio (3 ore) per ogni appello ufficiale su tutti gli argomenti del corso
Oppure
2 prove parziali per studenti immatricolati nel primo anno:
- Prova parziale 1 (2 ore) sulla parte A del corso
- Prova parziale 2 (2 ore) sulla parte B del corso (solo nel primo appello di Giugno per chi supera la prova parziale 1)
Per chi supera l’esame con le prove parziali il voto finale è la media tra i voti delle due prove.
Ciascuna prova di laboratorio contiene un esercizio da svolgere al calcolatore e alcuni quiz.
Altre informazioni
- - -
Obiettivi agenda 2030 per lo sviluppo sostenibile
- - -