21210213 - Algoritmi

Obiettivo del corso è fornire conoscenze sulle principali strutture di dati (pile, code, liste, alberi, grafi) e sugli algoritmi fondamentali per la loro gestione. Lo studente apprenderà gli strumenti formali per la valutazione rigorosa della complessità computazionale degli algoritmi e dei problemi. È un obiettivo del corso anche l’acquisizione di familiarità con i principali approcci algoritmici (divide et impera, greedy, incrementale, top-down, bottom-up). Per le esercitazioni e le prove d'esame del corso verrà utilizzato il linguaggio Python.
scheda docente | materiale didattico

Programma

Richiami sulla complessità computazionale
Approfondimento sugli algoritmi di ordinamento
Ricerca binaria
Strutture dati elementari ed operazioni sulle strutture dati
Strutture dati avanzate ed operazioni su di esse
Sviluppo di strutture dati ed algoritmi in linguaggio Python
Esempi di applicazioni con algoritmi e strutture dati in linguaggio Python

Testi Adottati

Kenneth A. Lambert. Programmazione in Python. Apogeo. 2° ed. 2018
(nota: è lo stesso libro di testo del corso di "Fondamenti di Informatica e Programmazione" del primo anno)

Modalità Erogazione

Lezioni in aula

Modalità Frequenza

La frequenza delle lezioni non è obbligatoria

Modalità Valutazione

È previsto lo svolgimento di una prova finale che si terrà al calcolatore. La prova prevede domande su argomenti teorici e di programmazione e lo svolgimento di esercizi di programmazione in Python. Nel caso in cui la prova svolta dal candidato presenti elementi che non consentono al docente di effettuare una valutazione obiettiva della stessa (ad esempio risposte non chiare, ambiguità o altro) il docente potrà chiedere una colloquio di approfondimento.