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
Strutture dati elementari, operazioni e relative implementazioni
Approfondimento sugli algoritmi di ordinamento
Tabelle hash, alberi e grafi
Sviluppo di algoritmi in linguaggio Python
Esempi ed applicazioni di algoritmi implementati 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à Valutazione

È previsto lo svolgimento di una prova scritta