Fondamenti di Informatica II secondo modulo
Programma AA. 1999/2000


-------------------------------------------------------------------

Testi adottati:

[CLNS] M. Cadoli, M. Lenzerini, P. Naggar, A. Schaerf. Fondamenti della
progettazione dei programmi: Principi, tecniche e loro applicazioni in
C++. CittStudiEdizioni, UTET Libreria, 1997.

[CLPS] M. Cadoli, E. Panizzi, A. Schaerf., M. Lenzerini. Esercizi di
progettazione dei programmi in C++. CittStudiEdizioni, UTET Libreria, 1998.

[CLR] T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduzione agli Algoritmi,
Jackson Libri, 1999.

-------------------------------------------------------------------

Programma:

A) Ereditarieta' (10 ore)  

  - ereditarieta' in C++ [CLNS cap.5, cap.13, cap.14]
  - ereditarieta' e tipi astratti [CLNS cap.13, cap.14]

B) Complessita' (6 ore) [CLNS cap.8, CLR cap. introduttivi]

C) Strutture dati (20 ore)
   
  - Strutture elementari: Pila, Coda, Albero binario, Albero
    [Ripasso, CLNS cap. 12, cap. 13, cap 14]
    (da fare in contemporanea con A e B)

  - Grafo, visita in profondita', visita in ampiezza 
    [Ripasso, CLNS cap. 13, CLR cap. 23]
    (da fare in contemporanea con A e B, e approfondire successivamente)

  - DAG, ordinamento topologico [CLPS cap. 10, CLR cap. 23]

  - Heap, heapsort, code di priorita' [CLPS cap. 11, CLR cap. 7]

  - Dizionari, Alberi di ricerca, Alberi Rosso-Neri 
    [CLPS cap. 12, CLR cap. 13. cap. 14]

  - Hashing [CLR cap. 11]


D) Tecniche algoritmiche (14 ore)

  - Divide at impera: es. ricerca binaria, mergesort, quicksort (cenni)
    [CLNS cap. 19, CLR cap. 1.3.1]

  - Algoritmi golosi: es. shortest path (Dijkstra),
    alg. golosi per problemi NP: bisaccia, scheduling, bin packing,
    [CLNS cap. 18, CLR cap. 17, cap. 25.2]

  - Programmazione dinamica: es. all pair shortest path (Floyd-Warshall), 
    transitive closure [CLR cap. 16, cap. 26.2]


Nota: Di tutte le strutture dati e gli algoritmi proposti, si deve conoscere la
realizzazione in C++ secondo la metodologia in CLNS.


--------------------------------cut here---------------------------

Altri argomenti possibili scartati per mancanza di tempo [CLR]:

  - Strutture dati per insiemi disgiunti

  - Strutture dati su memeoria secondaria
    - B-tree
    - Hashing dinamico

  - Algoritmi: minimum spanning tree (Kruskal, Prim), Maximum Flow



