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