Obiettivi formativi

Il corso si propone di raffinare le conoscenze dello studente circa la pratica della programmazione a oggetti soprattutto nell'implementazione di algoritmi e strutture dati avanzate.

Il linguaggio con il quale si svolgeranno le esercitazioni è il Java di cui si assume una conoscenza di base.

Attività formative

Il corso viene svolto in 30 ore di esercitazione in laboratorio. Si ricorda che il corso vale 2 CFU, per cui sono previste ulteriori 20 ore di lavoro individuale da svolgersi presso i laboratori didattici.

Programma del corso

  1. Uso del meccanismo dell'Interfaccia. Esempio di applicazione con l'implementazione dell'ADT Lista, Coda e Pila.
  2. Uso dell'interfaccia Comparable. Implementazione degli algoritmi di ordinamento per inserimento (InsertionSort) e per passo calante (ShellSort).
  3. Tecniche di confronto di implementazioni. Confronto tra due implementazioni di algoritmi di ordinamento: QuickSort e MergeSort.
  4. Implementazioni dell'ADT HashTable.
  5. Implementazione di un algoritmo di programmazione dinamica: ricerca massima sottosequenza comune (MaxSSC).
  6. Implementazioni dell'ADT Albero e Albero di ricerca binario. Uso dell'interfaccia Iterator. Implementazioni metodi di visita.
  7. Implementazione di un algoritmo greedy: algoritmo di Kruskal.