Scopo del corso è fornire allo studente le nozioni necessarie per progettare, valutare e implementare algoritmi efficienti, utilizzando le più avanzate tecniche di programmazione e le strutture dati adeguate.
Tali nozioni includono le tecniche di programmazione ricorsiva e Divide-et-impera, le principali strutture dati avanzate e l'analisi di complessità. Verranno, inoltre, forniti i concetti necessari a valutare quali tecniche e quali strutture dati scegliere per affrontare al meglio i diversi tipi di problemi computazionali.
Conoscenza e comprensione
Capacità di applicare conoscenza e comprensione
Autonomia di giudizio (Ability of making judgements)
Abilità comunicative (Communication skills)
Capacità di apprendimento (Learning skills)
Il metodo di insegnamento principale è la didattica frontale associata alla discussione delle conoscenze acquisite.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Argomenti | Riferimenti testi | |
---|---|---|
1 | Fondamenti. Per incominciare | [T1] Capitolo 1 e 2 |
2 | Descrivere i tempi di esecuzione | [T1] Capitolo 3 |
3 | Divide-et-impera | [T1] Capitolo 4 |
4 | Heapsort | [T1] Capitolo 6 |
5 | Quicksort | [T1] Capitolo 7 |
6 | Ordinamento in tempo lineare | [T1] Capitolo 8 |
7 | Mediane e statistiche d’ordine | [T1] Capitolo 9 |
8 | Strutture dati elementari | [T1] Capitolo 10 |
9 | Hashing | [T1] Capitolo 11 |
10 | Alberi binari di ricerca | [T1] Capitolo 12 |
11 | Alberi rosso-neri | [T1] Capitolo 13 |
12 | Programmazione dinamica | [T1] Capitolo 14 |
13 | Algoritmi avidi | [T1] Capitolo 15 |
14 | Arricchire le strutture dati | [T1] Capitolo 17 |
15 | B-alberi | [T1] Capitolo 18 |
16 | Algoritmi elementari per grafi | [T1] Capitolo 20 |
17 | Alberi di connessione minimi | [T1] Capitolo 21 |
18 | Cammini minimi | [T1] Capitolo 22 e 23 |
19 | Flusso massimo | [T1] Capitolo 24 |