Creazione e distruzione di oggetti
Classi e interfacce
Genericità di tipi
Ambito delle variabili locali
Fondamenti e stile di programmazione
Debugging, Asserzioni ed Eccezioni
Impiego degli array
Linked list semplici
Inserimento e rimozione di elementi
Linked list doppie
Inserimento e rimozione intermedi
Linked list circolari
Definizioni ricorsive
Anatomia di una invocazione ricorsiva
Ricorsione lineare
Ricorsione binaria
Ricorsione multipla
Backtracking
Funzioni per l'analisi asintotica
Confronto tra funzioni asintotiche
Analisi degli algoritmi
Notazione ed analisi asintotica
Tecniche di dimostrazione
La struttura dati stack
Implementazione con array e linked list
La struttura dati coda
Implementazione con array e linked list
Code doppie
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
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
Proprietà e implementazione
Operazione di ricerca
Operazioni di aggiornamento
Alberi estesi
Insertion-sort e Selection-sort
Merge-sort
Quick-sort
Limite inferiore per l'ordinamento
Ordinamento in tempo lineare
Algoritmi di selezione
Strutture dati per i grafi
Liste di adiacenza e matrici di adiacenza
Attraversamento in ampiezza
Attraversamento in profondità
Grafi orientati
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 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