Università di Roma "La Sapienza"
Laurea in Ingegneria Informatica

Programma del corso
Tecniche di Programmazione

Prof. Giuseppe De Giacomo

A.A. 2003/04


Materiale didattico.
[1] Lezioni di Fondamenti di Informatica - Parte I: introduzione alla programmazione in Java. Diego Calvanese, Giuseppe De Giacomo, Camil Demetrescu, Luca Iocchi, Daniele Nardi. Esculapio, 2003.
[2] Lezioni di Fondamenti di Informatica - Parte II: tecniche di programmazione in Java. Diego Calvanese, Giuseppe De Giacomo, Camil Demetrescu, Luca Iocchi, Daniele Nardi. ESCULAPIO, 2003.
[3] Dispense sul costo dei programmi e su algoritmi di ordinamento


  1. Costo dei programmi e algoritmi di ordinamento[3]
    Modello di costo, dimensione dell'input, notazione asintotica O(f(n)), algoritmi di ricerca sequenziale e binaria su array, algoritmi di ordinamento su array (insertion sort, selection sort, bubble sort, merge sort, quick sort).
  2. Ricorsione [2]: unità 10.
    Domini definiti induttivamente. Definizione di metodi ricorsivi. Gestione della memoria a run-time. Evoluzione della pila dei record di attivazione. Ricorsione multipla.
  3. Strutture collegate lineari [2]: unità 11.
    Limitazioni degli array e array dinamici. Strutture collegate. Strutture collegate lineari o liste. Operazioni sulle liste (creazione, ricerca, inserimento cancellazione, ecc.). Realizzazione con side-effect e realizzazione funzionale di una classe per le liste. Implementazione ricorsiva delle operazioni sulle liste.
  4. Alberi binari [2]: unità 12, solo paragrafi 12.1-12.4, 12.7-12.10, 12.12-12.15.
    Alberi e alberi binari. Rappresentazione parentetica di alberi. Rappresentazione collegata di alberi. Visite in profondità. Realizzazione di operazioni tramite visite.
  5. Tipi astratti e loro realizzazione [2]: unità 13 e 14, escluso paragrafi 13.22-13.24.
    Tipi di dati astratti. Astrazione di valori e astrazione di entità. Realizzazione con side-effect di tipi astratti. Realizzazione funzionale di tipi astratti. pile, code, insiemi. Esempi di realizzazione di tipi astratti (lista, pila, coda, albero binario, tipi collezione, etc.).
  6. Errori nei programmi e gestione delle eccezioni [1]: unità 9.
    Categorie di errori (di sintassi, di semantica, logici). Tecniche di individuazione degli errori. Gerarchia di eccezioni e gestione degli errori tramite eccezioni (clausola throws, istruzioni throw e try-catch).


Home page del corso di Tecniche di Programmazione
della Laurea in Ingegneria Informatica dell'Università di Roma "La Sapienza"