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

Complessità computazionale
Algoritmi di ordinamento
Ricerca binaria
Strutture dati elementari e relative operazioni
Strutture dati avanzate e relative operazioni
Sviluppo di strutture dati ed algoritmi in linguaggio Python
Esempi di applicazioni di algoritmi e strutture dati in linguaggio Python

Testi Adottati

Per la programmazione in linguaggio Python sarà utile il libro di testo e il materiale didattico utilizzati in ambito del corso di "Fondamenti di informatica e programmazione".
Dispense fornite dal docente.

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.