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


Moduli Facoltativi

Introduzione al linguaggio C

Introduzione al linguaggio
Tipi primitivi e tipi derivati
Funzioni
Struttura di un programma C
Operatori aritmetici, logici e condizionali
Statements
Libreria standard
Gestione della memoria e input/output

Introduzione Phyton

Introduzione al linguaggio
Tipi primitivi e tipi strutturati
Strutture di controllo
Definizione di funzioni
Programmazione orientata agli oggetti
Strutture dati di base
Ricorsione in Phyton
Implementazione di algoritmi elementari