ALGORITMICA, corso A
Prof. Paolo Ferragina
Laurea di primo livello in INFORMATICA
Giorno | Orario | Aula |
Lunedì | 9 - 11 |
C |
Giovedì | 14 - 16 |
E |
Venerdì | 9 - 11 | E |
Ricevimento
Venerdì | 11 - 13 | Studio docente |
L’esame di Algoritmica consiste di una prova scritta e di una prova orale. Durante la prova scritta gli studenti NON possono consultare i propri libri e appunti. L'esame scritto dunque consiste di esercizi e domande teoriche.
Durante il corso vengono svolte due
verifiche intermedie (compitini). Gli studenti che superano
entrambe le verifiche, con una votazione superiore al 18,
possono sostenere la prova orale in uno dei due appelli della sessione
invernale (Gennaio o Febbraio). Chi avesse riportato la sufficienza in
un compitino soltanto potrà recuperare la parte insufficiente
in uno degli appelli della sessione invernale. In questi appelli la
prova scritta sarà composta da due parti così da consentire il
recupero suddetto. Il recupero può essere anche tentato da chi
desidera migliorare il voto riportato in un compitino. In questo caso,
il voto del compitino viene perso al momento della consegna del nuovo
elaborato scritto.
Coloro che superano la prova scritta
possono sostenere la prova orale nello stesso appello, oppure in un
appello della stessa sessione. Ogni studente può entare
l’esame al più quattro volte durante tutto il corso
dell’Anno Accademico: la consegna dell’elaborato viene
considerata come “tentativo”.
Libri di Testo
·
[CLR] T. Cormen,
C. Leiserson, R. Rivest, "Introduzione agli algoritmi e
strutture dati", McGraw-Hill Italia,
2005.
· [L] F. Luccio, La Struttura
degli Algoritmi, Boringhieri 1984.
Appunti, Programmi, Esercizi e
altro...
·
Prerequisiti del corso: alcune nozioni sullo studio di
funzioni (test) e
conoscenza del concetto di lista e albero (LSD)
· Programma java
per trovare la sottosequenza di somma massima (qui trovi la
classe Text.java).
· Una collezione di esercizi: parte 1,
parte 2,
parte 3.
· Compiti di esame: 04/04/02, 16/05/02,
27/05/02, 21/06/02, 12/07/02, 20/12/04, 11/01/05, 02/02/05,06/06/05,27/06/05,18/07/05,12/09/05,04/11/05,21/12/05,13/01/06.
Programma
del corso (Riferito alla nuova versione del
CLR)
1.
Analisi di Algoritmi e
Complessità
a.
Introduzione alla complessità di
calcolo [CLR I.1 e
I.2]
b.
Ordini di grandezza delle funzioni [CLR
I.3]
c.
Algoritmi ricorsivi e Tecnica
divide&conquer [L cap. 5]
i. Numeri di Fibonacci;
ii. Calcolo del massimo e minimo;
iii. Ricerca Binaria;
iv. Mergesort;
v. Moltiplicazione rapida di interi.
d.
Relazioni di ricorrenza [CLR
I.4]
e.
Limiti inferiori alla complessità [L
sez. 4.2 e CLR I.8.1]
2.
Progetto di Algoritmi
e Strutture Dati
a.
Code, Pile, Liste e
alberi [CLR
III.10 e Rivedere appunti corso Laboratorio]
b.
Heap e Heapsort
[CLR II.6]
c.
Quicksort [CLR
II.7]
d.
Ordinamento in tempo lineare [CLR
II.8]
e.
Tabelle hash: Liste di concatenazione,
Indirizzamento aperto, Hashing Perfetto [CLR
III.11]
g.
Alberi binari di ricerca [L cap. 5 e CLR
III.12]
h.
Grafi: rappresentazione, visite,
topological sort [CLR VI.22]
l.
Alberi delta-bilanciati e AVL: definizione e operazioni di rotazione [L pagine 80-84 e 90-97]
3.
Classi di
Complessità [appunti]
a.
Enumerazione e non determinismo:
combinazioni e permutazioni
b.
Classi P, NP, NPC,
NP-hard
4.
Modelli di Calcolo e
Calcolabilità [appunti]
a. Indecidibilità e universalitàà
b.
Macchina di Turing
Il registro elettronico delle lezioni è disponibile sul
sito virmap dell’ateneo |