Didattica (in italian)

Fondamenti di Informatica

Corso di Laurea in Ingegneria Informatica
(Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti)

Docente: Prof. Paolo Romano

Tutor: Ing. Diego Rughetti


Obiettivi del corso

L'obiettivo del corso di Fondamenti di Informatica è di far acquisire allo studente i princìpi fondamentali della programmazione, considerando aspetti relativi alla programmazione funzionale ed imperativa. Tali princìpi sono presentati allo studente attraverso il linguaggio di programmazione C.


Prerequisiti

Non si richiedono prerequisiti specifici. Si utilizzano nozioni di base di matematica e di teoria degli insiemi.


Programma preliminare per l'A.A. 2007/2008

Introduzione all'elaborazione automatica delle informazioni. La nozione di algoritmo. Linguaggi per la descrizione di algoritmi.

I sistemi di elaborazione: architettura hardware e software.
Schema funzionale di un elaboratore elettronico; funzionamento elementare di un elaboratore. Cenni sul linguaggio macchina e sul linguaggio assembler. Il software di base di un elaboratore; cenni sui compilatori e sugli interpreti. La rappresentazione delle informazioni: sistemi di numerazione, rappresentazione di interi, caratteri, aritmetica intera rappresentazioni binarie.

Programmazione in Linguaggio C

  1. Variabili, assegnamenti, input/output
  2. Istruzioni decisionali e iterative
  3. Funzioni
  4. Tipi e tipi derivati
  5. Array
  6. Puntatori
  7. Stringhe
  8. File

Laboratorio. Esercitazioni sull'uso di un ambiente di programmazione (TurboC/C++ o DevC++). Compilazione, esecuzione, e correzione degli errori (debugging). Librerie. Lettura da file testo. Risoluzione di semplici problemi mediante programmi C.


Testi di riferimento:

  1. Deitel, P. Deitel. Corso completo di Programmazione. Apogeo,2004
  2. Architettura del calcolatore e rappresentazione dell'informazione (complementi al corso di Fondamenti di Informatica per il corso di Laurea in Ingegneria Elettronica A.A.
    2003/2004). D. D'Aloisi. 2003.


Lucidi delle lezioni


Lucidi delle esercitazioni


Links utili

Tecniche di Programmazione

Corso di Laurea in Ingegneria Informatica
(Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti)

Docente: Prof. Paolo Romano

Tutor: Ing. Diego Rughetti


Obiettivi del corso

Approfondire la conoscenza dei principi basilari per la progettazione del software ed apprendere le caratteristiche fondamentali dei linguaggi di programmazione che richiedono una comprensione approfondita del modello di esecuzione dei programmi, fra cui ricorsione e strutture collegate. Al termine del corso lo studente è in grado di progettare programmi Java che comportano l’uso di strutture dati complesse, quali liste collegate, pile, code, insiemi, alberi.


Programma del corso

  1. Introduzione alla progettazione del software
    • Ciclo di vita del software
    • Qualità interne ed esterne
    • Modularizzazione
  2. Progettazione orientata agli oggetti
    • Principi di base dell'orientazione agli oggetti
    • Principali tipologie di relazioni tra oggetti
    • Oggetti composti e delagazione
    • Ereditarieta'
    • Classi Astratte
    • Eccezioni e gestione degli errori
    • Interfacce
  3. Ricorsione
  4. Efficienza dei programmi
    • Notazione asintotica del costo dei programmi
    • Ricerca sequenziale e Ricerca binaria
    • Algoritmi di ordinamento: per selezione, bolle, fusione
  5. Creazione e gestione di collezioni di oggetti
    • Utilizzo degli array
    • Strutture colegate: liste, code, pile
  6. Alberi binari
  7. Tipi astratti di dato


Testi di riferimento

  • C. S. Horstmann, Concetti di informatica e fondamenti di Java, Terza Edizione, 2005, ed. Apogeo
  • D. Calvanese, G. De Giacomo, C. Demetrescu, L. Iocchi, D. Nardi, Lezioni di Tecniche di Programmazione, 2005. Progetto Leonardo, ed. Esculapio, ISBN 88-7488-037-5


Link utili


Lucidi delle lezioni


Lucidi delle esercitazioni


Esami

Calcolatori Elettronici II

Corso di Laurea in Ingegneria Informatica

Docente: Prof. Paolo Romano

Tutor: Ing. Roberto Palmieri

Programma previsto per l'a.a. 2006-2007


Software didattico


Links utili


Lucidi delle lezioni


Lucidi delle esercitazioni


Sorgenti in assembly


Testi d'esame

Architetture Avanzate di Elaborazione

Negli A.A. 2005/2006 e 2006/2007 ho tenuto seminari didattici (circa 12 ore) per il corso di Architetture Avanzate di Elaborazione (Corso di Laurea Specialistica in Ingegneria Informatica, docente: Prof. Bruno Ciciani).

I temi trattati durante i miei seminari sono relativi a tecniche per la gestione delle risorse in ambienti distribuiti su scala locale e/o geografica. In maggior dettaglio sono stati trattati i seguenti argomenti:

  • Scheduling in sistemi paralleli e distribuiti.
    Studi di caso:
    • clusters di workstations
    • sistemi di server web distribuiti su scala locale e geografica
  • Gestione di sistemi di caching distribuiti.
    Studi di caso:
    • caching per il World Wide Web
    • caching di dati transazionali
  • Tecniche basate su multi-path in sistemi distribuiti su scala geografica. (...tempo permettendo...)
    Studi di caso:
    • content delivery
    • applicazioni transazionali