Introduzione
Problemi e algoritmi
Cenni sulla nozione di Calcolabilita’ e sulla tesi di Church-Turing.
Complessità computazionale di problemi ed algoritmi (notazione O, Omega, Theta).
Richiami di nozioni di relazione di equivalenza e d'ordine.
Insiemi parzialmente ordinati e reticoli.
Struttura della memoria durante l'esecuzione dei programmi e tipi di passaggio degli argomenti.
Tipi di Dato e Strutture Dati
Vettori, Matrici, Matrici Simmetriche, Liste, Liste Ordinate, Pile, Code, Heap, Alberi Binari di Ricerca, Alberi Generali, Code di Priorita', Insiemi, Dizionari, Tabelle Hash, Grafi Orientati e Non Orientati, Grafi Pesati.
Algoritmi Fondamentali, Tecniche di Programmazione e Algoritmi su Grafi
Algoritmi di Base su Grafi (Raggiungibilita' di nodi in un grafo, Componenti Connesse,
Albero Ricoprente)
Tecniche di Ricerca e di Ordinamento
Heap Sort
Divide et Impera (approf: Ricerca Binaria, Merge Sort, Tecniche Quadratiche di
Ordinamento, Calcolo del Fattoriale, Calcolo della Successione di Fibonacci) Equazione di Ricorrenza per la definizione della complessita’ delle tecniche Divide et Impera.
Tecniche Golose (Knapsack, Algoritmo di Dijkstra, Algoritmo di Prim, Implementazione con vettori e con heap indicizzato).
Esempi di Applicazione alle Reti di Computer degli Algoritmi su Grafi (routing, connettivita’, etc.).
Programmazione OO in Java
Caratteristiche OO di Java (Incapsulamento, Ereditarietà, Polimorfismo, Generics, Interfacce) Implementazione delle strutture dati e degli algoritmi studiati in Java e studio di librerie standard di Java
Ultimo aggiornamento: 02-01-2025