Programmazione 2 (2009/10)
Programma Didattico
Programmazione Java avanzata
Creazione e distruzione di oggetti
Classi e interfacce
Genericità di tipi
Ambito delle variabili locali
Fondamenti e stile di programmazione
Debugging, Asserzioni ed Eccezioni
Operare con array e linked list
Impiego degli array
Linked list semplici
Inserimento e rimozione di elementi
Linked list doppie
Inserimento e rimozione intermedi
Linked list circolari
Ricorsione
Definizioni ricorsive
Anatomia di una invocazione ricorsiva
Ricorsione lineare
Ricorsione binaria
Ricorsione multipla
Backtracking
Strumenti per l'analisi
Funzioni per l'analisi asintotica
Confronto tra funzioni asintotiche
Analisi degli algoritmi
Notazione ed analisi asintotica
Tecniche di dimostrazione
Pile e code
La struttura dati stack
Implementazione con array e linked list
La struttura dati coda
Implementazione con array e linked list
Code doppie
Le liste e gli iteratori
Array list
Implementazione con array ed array estensibili
Node list
Implementazione con linked list
Implementazione con liste doppiamente linkate
Iteratori e utilizzo di cicli iterativi
Gli alberi
Terminologia e proprietà
Algoritmi fondamentali sugli alberi
Profondità e altezza dei nodi
Attraversamento di alberi
Alberi binari e alberi n-ari
Proprietà, attraversamento e implementazione
Alberi binari di ricerca
Alberi binari di ricerca
Proprietà e implementazione
Operazione di ricerca
Operazioni di aggiornamento
Alberi estesi
Ordinamento, insiemi e selezione
Insertion-sort e Selection-sort
Merge-sort
Quick-sort
Limite inferiore per l'ordinamento
Ordinamento in tempo lineare
Algoritmi di selezione
Grafi e strutture reticolari
Strutture dati per i grafi
Liste di adiacenza e matrici di adiacenza
Attraversamento in ampiezza
Attraversamento in profondità
Grafi orientati
Libri di testo
Strutture dati e algoritmi in Java
Autore: M.T. Goodrich, R. Tamassia
Casa editrice: Zanichelli
Anno: 2007
Pagine: 640
Effective Java
Autore: Joshua Bloch
Casa editrice: Pearson Education
Anno: 2009
Pagine: 352
Materiale didattico online
Uso di Array e Linked-List
Stack e Queue
Le Liste e gli Iteratori
Alberi
- SimpleTree
Semplice implementazione di un albero generico comprendente i metodi iterator() e positions()
- PositionTree
Implementazione di un'interfaccia Tree che utilizza nodi che estendono l'interfaccia Position
Appunti e dispense
Fondamenti di programmazione
Costruzione di oggetti
I/O su file
Eccezioni
Errori di programmazione e Debugging
Temi di ottimizzazione