This course introduces the main strategies for designing algorithms and the tools for evaluating their correctness and performance. The objective is to develop the ability to formalize and solve problems algorithmically, as well as the capacity for analysis and evaluation of solutions.
La frequenza e la partecipazione attiva alle attività formative proposte (lezioni frontali ed esercitazioni) e lo studio individuale consentiranno allo studente di:
- Comprendere le basi teoriche dell'informatica intesa come trattamento automatico di linguaggi formali tramite il modelli computazionale degli automi a stati finiti.
- Comprendere la relazione tra modelli computazionali e linguaggi formali e stabilire una corrispondenza tra tipologia di linguaggio e corrispondente potenza richiesta al modello computazionale.
- Comprendere le problematiche principali relative allo sviluppo di algoritmi, sia relative alla correttezza sia relative alle prestazioni; comoprendere i modelli semplificati per la stima delle risorse.
- Conoscere i principali algoritmi e strutture dati di utilizzo comune: le loro origini, la loro struttura e le loro prestazioni in termini di consumo di risorse computazionali.
Il corso si articola prevalentemente in lezioni di natura frontale il cui materiale verrà messo in anticipo a disposizione degli studenti su Aulaweb. Per ogni argomento verranno forniti i riferimenti corrispondenti ai libri di testo riportati in bibliografia.
La parte di informatica teorica è tratta dal testo:
La parte di progettazione e analisi di algoritmi è tratta dai testi:
Altri libri di testo
La strutturazione delle lezioni frontali ricalca il seguente testo:
Dai seguenti testi sono stati tratti alcuni dei contenuti di progettazione e analisi degli algoritmi:
Nota bene: non è necessario acquistare i libri di testo per raggiungere una preparazione soddisfacente per superare l'esame. Qualora si desiderasse consultare i testi e non fossero disponibili in biblioteca, si prega di rivolgersi al docente.
L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy
L'esame prevede una prova scritta su teoria della computazione, algoritmi e strutture dati.