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
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
Dispense fornite dal docente.
Programma
Complessità computazionaleAlgoritmi 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 aulaModalità Frequenza
La frequenza delle lezioni non è obbligatoriaModalità 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.