Insegnamento: Linguaggi Formali e Compilatori · Insegnamento: Linguaggi Formali e Compilatori...

26
Insegnamento: Linguaggi Formali e Compilatori Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale): Triennale Codifica: SSD (Settore scientifico disciplinare): Docente Responsabile: Gianluigi Greco Eventuali altri docenti coinvolti: Orario di ricevimento: Mercoledì, ore 9:30-11:30 Crediti Formativi (CFU): Ore di lezione: Ore riservate allo studio individuale: Ore di laboratorio: Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante: Facoltà competente: Lingua d’insegnamento: Anno di corso: Propedeuticità: Fondamenti di Informatica Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.): Modalità di frequenza (obbligatoria, facoltativa): Modalità di erogazione (tradizionale, a distanza, mista): Metodi di valutazione (Prova scritta, orale, ecc): Prova scritta, orale Risultati di apprendimento attesi: Scopo del corso è l'acquisizione delle nozioni fondamentali della teoria della compilazione, studiare i linguaggi formali, gli automi riconoscitori e le varie tecniche di compilazione ed acquisire le metodologie necessarie per sviluppare interpreti e traduttori secondo il paradigma della programmazione orientata agli oggetti e mediante l'utilizzo del linguaggio Java. Programma/Contenuti: Linguaggi e Grammatiche: Linguaggi, il linguaggio universale, operazioni su linguaggi, decidibilità. Grammatiche di tipo 2 e generazione di linguaggi non contestuali. Cenni a grammatiche contestuali e generali. Linguaggi Regolari e Analizzatori Lessicali: Grammatiche di tipo 3 e linguaggi regolari. Espressioni regolari. Automi deterministici e non, eliminazione del non-determinismo. Esempi di scrittura di analizzatori lessicali. Utilizzo di un generatore di analizzatori lessicali. Linguaggi Non Contestuali e Automi a Pila: Alberi di parsing. Derivazioni. Automi a pila deterministici e non. Analisi sintattica di tipo ascendente o discendente. Analisi Discendente: Grammatiche LL(1), calcolo delle tabelle di parsing e degli

Transcript of Insegnamento: Linguaggi Formali e Compilatori · Insegnamento: Linguaggi Formali e Compilatori...

Insegnamento: Linguaggi Formali e Compilatori

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

Triennale

Codifica: SSD (Settore scientifico disciplinare):

Docente Responsabile: Gianluigi Greco

Eventuali altri docenti coinvolti:

Orario di ricevimento: Mercoledì, ore 9:30-11:30

Crediti Formativi (CFU):

Ore di lezione: Ore riservate allo studio individuale:

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

Facoltà competente:

Lingua d’insegnamento:

Anno di corso:

Propedeuticità: Fondamenti di Informatica

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.):

Modalità di frequenza (obbligatoria, facoltativa):

Modalità di erogazione (tradizionale, a distanza, mista):

Metodi di valutazione (Prova scritta, orale, ecc): Prova scritta, orale

Risultati di apprendimento attesi:

Scopo del corso è l'acquisizione delle nozioni fondamentali della teoria della

compilazione, studiare i linguaggi formali, gli automi riconoscitori e le varie tecniche

di compilazione ed acquisire le metodologie necessarie per sviluppare interpreti e

traduttori secondo il paradigma della programmazione orientata agli oggetti e

mediante l'utilizzo del linguaggio Java.

Programma/Contenuti:

Linguaggi e Grammatiche: Linguaggi, il linguaggio universale, operazioni su

linguaggi, decidibilità. Grammatiche di tipo 2 e generazione di linguaggi non

contestuali. Cenni a grammatiche contestuali e generali.

Linguaggi Regolari e Analizzatori Lessicali: Grammatiche di tipo 3 e linguaggi

regolari. Espressioni regolari. Automi deterministici e non, eliminazione del

non-determinismo. Esempi di scrittura di analizzatori lessicali. Utilizzo di un

generatore di analizzatori lessicali.

Linguaggi Non Contestuali e Automi a Pila: Alberi di parsing. Derivazioni.

Automi a pila deterministici e non. Analisi sintattica di tipo ascendente o

discendente.

Analisi Discendente: Grammatiche LL(1), calcolo delle tabelle di parsing e degli

insiemi guida. Scrittura di un analizzatore sintattico ricorsivo. Recupero degli

errori.

Grammatiche ad Attributi per l’Analisi Semantica: Le grammatiche ad

attributi. Attributi ereditati e sintetizzati. Azioni con effetti collaterali. Azioni

semantiche.

Linguaggi di Markup: HTML, CSS, XML, DTD, XML Schema (cenni),

XHTML, XSL, SAX, DOM.

Compilazione di un Semplice Linguaggio Procedurale: La compilazione di un

linguaggio: traduzione o interpretazione. Individuazione di un sottoinsieme del

linguaggio Java. Analisi lessicale e sintattica discendente. Azioni di semantica

statica. Definizione di una macchina a pila e del relativo linguaggio assembler e

interprete della macchina. Traduzione nel linguaggio assembler della

macchina.

Analisi Ascendente

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

Il calendario delle prove d’esame:

Bibliografia:

J. E. Hopcroft, R. Motwani, J. D. Ullman, Automi, linguaggi e calcolabilità,

Addison Wesley

G. Ausiello, F. d’Amore, G. Gambosi, Linguaggi, Modelli, Complessità, Franco

Angeli Editore

W. Appel, Modern Compiler Implementation in Java, Cambridge University

Press

G. Bruno, Linguaggi formali e compilatori, UTET

Insegnamento: Programmazione Avanzata

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

Triennale

Codifica: SSD (Settore scientifico disciplinare):

Docente Responsabile: Gianluigi Greco

Eventuali altri docenti coinvolti:

Orario di ricevimento: Mercoledì, ore 11:30-13:30

Crediti Formativi (CFU):

Ore di lezione: Ore riservate allo studio individuale:

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

Facoltà competente:

Lingua d’insegnamento:

Anno di corso:

Propedeuticità: Algoritmi e Strutture Dati

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.):

Modalità di frequenza (obbligatoria, facoltativa):

Modalità di erogazione (tradizionale, a distanza, mista):

Metodi di valutazione (Prova scritta, orale, ecc): Discussione di progetto

Risultati di apprendimento attesi:

Scopo del corso è l'apprendimento di JAVA dalle funzionalità base a quelle più

evolute, con particolare enfasi verso le soluzioni tecnologiche impiegate nello sviluppo

di applicazioni grafiche ed interattive. Il corso presuppone la conoscenza dei principi

di Programmazione Orientata ad Oggetti e delle principali tecniche di

programmazione e strutture dati.

Programma/Contenuti:

Presentazione dell'architettura JAVA - Strutture fondamentali della

Programmazione in JAVA - Oggetti e Classi - Ereditarietà ed Interfacce - Gestione

dei files - Collection: algoritmi e strutture dati in JAVA - Programmazione Grafica -

Gestione degli Eventi - Realizzazione di interfacce utente - Cenni di programmazione

JAVA su Internet.

Le eventuali attività di supporto alla didattica (tipi e orari): Valutazione dello stato di

avanzamento dei progetti, secondo modalità concordate con gli studenti durante il

corso.

Date inizio e termine e il calendario delle attività didattiche:

Il calendario delle prove d’esame:

Bibliografia:

Cay S. Horstmann e Gary Cornell, JAVA2 I Fondamenti, Mc Graw Hill.

Cay S. Horstmann e Gary Cornell, JAVA2 Tecniche avanzate, Mc Graw Hill

Insegnamento: Intelligenza Artificiale

Corso di laurea dell’insegnamento: Corso di Laurea in Informatica (Triennale)

Codifica: SSD (Settore scientifico disciplinare): INF/01

Docente Responsabile: Nicola Leone

Eventuali altri docenti coinvolti: Francesco Calimeri, Simona Perri

Orario di ricevimento: Lunedì 17.30

Crediti Formativi (CFU): 5

Ore di lezione: 24 Ore riservate allo studio individuale:

Ore di laboratorio: 24

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

Informatica

Facoltà competente: S.M.F.N.

Lingua d’insegnamento: Italiano

Anno di corso: III

Propedeuticità: Fondamenti di Informatica

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.):

Modalità di frequenza (obbligatoria, facoltativa):

Modalità di erogazione (tradizionale, a distanza, mista):

Metodi di valutazione (Prova scritta, orale, ecc): Prova scritta

Risultati di apprendimento attesi: Il corso fornisce una introduzione generale al

campo dell’Intelligenza Artificiale approfondendo la programmazione dichiarativa e

la Programmazione Logica disgiuntiva in particolare. Gli studenti acquisiranno

metodi formali e tecniche per la rappresentazione della conoscenza, per la deduzione

automatica, per la risoluzione automatica dei problemi. Gli studenti acquisiranno

altresi` la padronanza di un potente strumento di intelligenza artificiale – il sistema

DLV – che consentira` loro di risolvere rapidamente ed in modo pienamente

dichiarativo anche problemi di elevata complessita`.

Programma/Contenuti: Introduzione: Intelligenza computazionale, agenti intelligenti, basi di conoscenza.

Linguaggi Basati sulla Logica:

Datalog: regole, valutazione generale delle regole, programmi datalog, potere espressivo del

datalog, datalog e algebra relazionale, negazione stratificata, negazione non stratificata, modelli

stratificati, monotonicità.

Programmazione Logica Disgiuntiva (PLD):

- Programmazione dichiarativa vs programmazione imperativa

- Basi teoriche della PLD: Semantica formale, proprietà dei programmi, complessità

computazionale

- Estensioni: Weak constraints, Aggregati

- Rappresentazione della Conoscenza e Applicazioni: Metodologia di programmazione

dichiarativa (Guess/Check/Optimize), applicazioni a problemi teorici sui grafi, scheduling, e

problemi di ottimizzazione

- Sistemi: Il sistema di Intelligenza Artificiale DLV

Laboratorio: Uso del sistema di intelligenza artificiale DLV per l’interrogazione di basi di

conoscenza complesse, per la rappresentazione e la risoluzione automatica dei problemi.

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

Il calendario delle prove d’esame:

Bibliografia:

C. Baral, Knowledge Representation, Reasoning and Declarative Problem Solving,

Cambridge, 2003.

D. Poole, A. Mackworth and R. Goebel, Computational Intelligence, a logical

approach, Oxford, 1998.

J. Ullman and J. Widom, A First course in Database Systems, Prentice-Hall, 1997

Insegnamento: Programmazione ad Oggetti

Corso di laurea dell’insegnamento: Informatica (Triennale)

Codifica: SSD: INF/01

Docente Responsabile: Nicola Leone

Eventuali altri docenti coinvolti:

Orario di ricevimento: Lunedi` 17.30

Crediti Formativi (CFU): 10

Ore di lezione: Ore riservate allo studio individuale:

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

Facoltà competente:

Lingua d’insegnamento:

Anno di corso:

Propedeuticità: Fondamenti di Programmazione

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.):

Modalità di frequenza (obbligatoria, facoltativa):

Modalità di erogazione (tradizionale, a distanza, mista):

Metodi di valutazione: Prova di Laboratorio, scritto, orale

Risultati di apprendimento attesi: Conoscenze di base della programmazione ad

oggetti, capacità di implementare semplici software nel linguaggio di programmazione

C++

Programma/Contenuti:

Puntatori e stringhe

* Dichiarazione, inizializzazione, manipolazione e passaggio come parametri a

funzioni.

* Caratteri e stringhe: concetti fondamentali e le funzioni di libreria.

Le classi concetti di base

* Definizione, accesso e visibilità dei membri di una classe

* Separazione di interfaccia ed implementazione

* Funzioni di accesso e di utilità

* Inizializzazione degli oggetti: i costruttori

* Finalizzazione degli oggetti: i distruttori

Le classi concetti avanzati

* Il puntatore implicito "this"

* Classi e funzioni friend

* Allocazione dinamica della memoria

* Information hiding

* Astrazione dei dati e strutture dati complesse

* L'overloading degli operatori

* Classi Template

* Ereditarietà e Polimorfismo

Strutture dati fondamentali

* Array dinamici

* Liste concatenate con iteratori

* Code e Pile

Nozioni di base della complessita computazionale

* Complessità di caso peggiore di un algoritmo

* Notazione O, Omega e Theta

* Valutazione della complessità di semplici algoritmi

Le eventuali attività di supporto alla didattica (tipi e orari): -

Date inizio e termine e il calendario delle attività didattiche:

Il calendario delle prove d’esame:

Bibliografia:

Harvey M. Deitel, Paul J. Deiter, "Fondamenti di programmazione" APOGEO

Insegnamento: ANALISI MATEMATICA

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

LAUREA TRIENNALE IN INFORMATICA

Codifica: SSD (Settore scientifico disciplinare): MAT/05

Docente Responsabile: GIUSEPPE MARINO

Eventuali altri docenti coinvolti: FILOMENA CIANCIARUSO

Orario di ricevimento: Durante la durata del corso: dal lunedì al venerdì dalle 15.30 alle 19.30

previo appuntamento con gli studenti come descritto nella mia home page

http://www.mat.unical.it/~marino/

Crediti Formativi (CFU): 10

Ore di lezione: 96 Ore riservate allo studio individuale: 154

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

LAUREA TRIENNALE IN INFORMATICA

Facoltà competente: SMFN

Lingua d’insegnamento: ITALIANO

Anno di corso: I

Propedeuticità: NESSUNA

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.): LEZIONI

Modalità di frequenza (obbligatoria, facoltativa): OBBLIGATORIA

Modalità di erogazione (tradizionale, a distanza, mista): TRADIZIONALE

Metodi di valutazione (Prova scritta, orale, ecc): PROVA SCRITTA E PROVA ORALE

Risultati di apprendimento attesi: CONOSCENZA DEI METODI E DEI

RISULTATI FONDAMENTALI DI ANALISI MATEMATICA UNO

Programma/Contenuti: I RISULTATI FONDAMENTALI DEL CALCOLO

DIFFERENZIALE E LA TEORIA DELLE SERIE NUMERICHE

Le eventuali attività di supporto alla didattica (tipi e orari): NESSUNA

Date inizio e termine e il calendario delle attività didattiche: 25 OTTOBRE 2010, 12

FEBBRAIO 2011

Il calendario delle prove d’esame: 22.II.11 – 5.VII.11 – 6.IX.11

Bibliografia: MARCELLINI-SBORDONE: ANALISI MATEMATICA UNO,

LIGUORI ED.

Insegnamento: CALCOLO INTEGRALE

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

LAUREA TRIENNALE IN INFORMATICA

Codifica: SSD (Settore scientifico disciplinare): MAT/05

Docente Responsabile: GIUSEPPE MARINO

Eventuali altri docenti coinvolti:

Orario di ricevimento: Durante la durata del corso: dal lunedì al venerdì dalle 15.30 alle 19.30

previo appuntamento con gli studenti come descritto nella mia home page

http://www.mat.unical.it/~marino/

Crediti Formativi (CFU): 5

Ore di lezione: 48 Ore riservate allo studio individuale: 77

Ore di laboratorio: 0

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

LAUREA TRIENNALE IN INFORMATICA

Facoltà competente: SMFN

Lingua d’insegnamento: ITALIANO

Anno di corso: I

Propedeuticità: NESSUNA

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.): LEZIONI

Modalità di frequenza (obbligatoria, facoltativa): OBBLIGATORIA

Modalità di erogazione (tradizionale, a distanza, mista): TRADIZIONALE

Metodi di valutazione (Prova scritta, orale, ecc): PROVA SCRITTA E PROVA ORALE

Risultati di apprendimento attesi: CONOSCENZA E METODI DEL CALCOLO

INTEGRALE DEFINITO ED INDEFINITO ED EQUAZIONI DIFFERENZIALI

Programma/Contenuti: I RISULTATI FONDAMENTALI DEL CALCOLO

INTEGRALE CON CENNI DI EQUAZIONI DIFFERENZIALI ORDINARIE

Le eventuali attività di supporto alla didattica (tipi e orari): NESSUNA

Date inizio e termine e il calendario delle attività didattiche: 25 OTTOBRE 2010, 12

FEBBRAIO 2011

Il calendario delle prove d’esame: 22.II.11 – 5.VII.11 – 6.IX.11

Bibliografia: MARCELLINI-SBORDONE: ANALISI MATEMATICA UNO,

LIGUORI ED.

Insegnamento: GESTIONE PROGETTI

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

LAUREA TRIENNALE DI INFORMATICA

Codifica: SSD (Settore scientifico disciplinare): SECS P-07

Docente Responsabile: FRANCESCO NAPOLI

Eventuali altri docenti coinvolti:

Orario di ricevimento: MARTEDI ALLE 16.00 (DURANTE ESPLETAMENTO

CORSO)

Crediti Formativi (CFU): 5

Ore di lezione: 40 Ore riservate allo studio individuale:

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

LAUREA TRIENNALE DI INFORMATICA

Facoltà competente: SCIENZE MATEMATICHE FISICHE E NATURALI

Lingua d’insegnamento: ITALIANO

Anno di corso: 2010-11

Propedeuticità: NESSUNA

Organizzazione della didattica: lezioni, esercitazioni e laboratorio

Modalità di frequenza (obbligatoria, facoltativa): come da regolamento

Modalità di erogazione (tradizionale, a distanza, mista): tradizionale

Metodi di valutazione (Prova scritta, orale, ecc): orale

Risultati di apprendimento attesi:

Programma/Contenuti: . Gestione dei progetti complessi (project management):

definizioni, caratteristiche di base e natura di un progetto;

principi di gestione: anticipazione e flessibilità;

ruoli e forme organizzative;

pianificazione di un progetto e strumenti relativi (PBS/WBS, team building, Gantt, PERT, CPM,

Risk analysis, ecc..)

Budgeting (calcolo e gestione dei costi di progetto secondo le diverse classificazioni dei costi)

conduzione e controllo di un progetto e strumenti relativi (earned value, SAP/SAL management)

uso di MS Project

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

3° periodo didattico

Il calendario delle prove d’esame:

Bibliografia: SARANNO FORNITE A CURA DEL DOCENTE LE COPIE DELLE SLIDE PROIETTATE IN AULA, NONCHÉ CASI ED

ESERCITAZIONI DI SUPPORTO.

Nokes S., Greenwood A., Il project management. Tecniche e Processi. Editore Prentice Hall, 2005;

Kerzner H., Project Management. Editore Hoepli. Milano

Protto Stefano, Concetti e strumenti di project management, Vol. I, Franco Angeli, 2004.

Insegnamento: Fondamenti di Informatica

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale): Laurea Triennale in Informatica

Codifica: SSD (Settore scientifico disciplinare):

Docente Responsabile: Simona Perri

Eventuali altri docenti coinvolti:

Orario di ricevimento: ogni lunedì alle 15:00

Crediti Formativi (CFU):

Ore di lezione: Ore riservate allo studio individuale:

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

Facoltà competente:

Lingua d’insegnamento:

Anno di corso:

Propedeuticità: Nessuna

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.):

Modalità di frequenza (obbligatoria, facoltativa):

Modalità di erogazione (tradizionale, a distanza, mista):

Metodi di valutazione (Prova scritta, orale, ecc): Prova scritta, prova orale e prova pratica,

tutte obbligatorie.

Risultati di apprendimento attesi: Solide basi sulla programmazione dei calcolatori

elettronici, per la risoluzione di problemi. Tecniche di programmazione nel linguaggio c++, con uso di semplici strutture dati. Cenni di programmazione orientata agli oggetti.

Programma/Contenuti:

Rappresentazione dell’informazione

Rappresentazione di numeri naturali. Cenni di aritmetica binaria. Rappresentazione di informazione non numerica (caratteri, immagini, ecc.).

Calcolo proposizionale

Architettura del calcolatore

Processore, memoria centrale, memoria di massa, memoria cache, periferiche.

Algoritmi

Definizione di algoritmo. Risoluzione algoritmica dei problemi.

Linguaggi di Programmazione

Definizione informale di un linguaggio di programmazione . Linguaggi a basso e ad alto livello. Interpreti e Compilatori. Diagrammi di flusso e pseudo-codice. Ambienti integrati di programmazione. Gli ambienti visuali.

Programmazione in C++ - Primi Passi

Struttura di un programma. La funzione main. Librerie e namespace. Operazioni di ingresso/uscita: la libreria iostream. Concetto di variabile. Inizializzazione e assegnamento. Costanti. Espressioni aritmetiche e booleane. Priorità degli operatori.

Ambienti di sviluppo

Compilatore, linker e debugger. Definizione dello spazio di lavoro e di un progetto. L'Editor. Compilazione, esecuzione e debugging di un programma.

Tipi Primitivi

Tipi interi, tipi reali, tipo char, tipo bool. Conversioni di tipo e operazioni di cast.

Strutture di Controllo

Istruzioni semplici e composte, definizione di blocco di istruzioni, visibilità delle variabili. L'istruzione IF. Effettuare confronti. L'istruzione WHILE. L'istruzione FOR. L'istruzione DO-WHILE. L'istruzione SWITCH. L’istruzione BREAK. Istruzioni innestate.

Funzioni

Dichiarazione. Parametri formali e valore di ritorno. Passaggio per valore e passaggio per riferimento. Concetto di ricorsione. Funzioni ricorsive.

Cenni all’overloading delle funzioni.

Array

Dichiarazione, inizializzazione, manipolazione e passaggio come parametri a funzioni. Array multidimensionali.

Puntatori e riferimenti

Riferimento e indirizzamento indiretto. Puntatori. Array e puntatori. Array di puntatori e puntatori ad array. Allocazione dinamica della memoria. Array dinamici.

Array di caratteri e stringhe

Concetti fondamentali. Funzioni di libreria.

Introduzione alla Programmazione Orientata Agli Oggetti

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

Il calendario delle prove d’esame:

Bibliografia: Harvey M. Deitel, Paul J. Deitel, "Fondamenti di programmazione", APOGEO

Stanley B. Lippman, Josée Lajoie, "C++ corso di programmazione", Addison Wesley

Insegnamento: Architettura degli elaboratori

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

INFORMATICA - TRIENNALE

Codifica: SSD (Settore scientifico disciplinare): INF/01

Docente Responsabile: PASQUALE RULLO

Eventuali altri docenti coinvolti:

Orario di ricevimento: SEMPRE

Crediti Formativi (CFU): 5 (3 lezione + 2 esercitazione)

Ore di lezione: 24 +

24 esercitazione

Ore riservate allo studio individuale:

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante: Corso di Laurea in Informatica

Facoltà competente: SS.MM.FF.NN.

Lingua d’insegnamento: ITALIANO

Anno di corso: II (N.O.)

Propedeuticità:

(1) “Architettura degli elaboratori” è propedeutico per “Sistemi Operativi e Reti”

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.): LEZIONI +

ESERCITAZIONI

Modalità di frequenza (obbligatoria, facoltativa): OBBLIGATORIA

Modalità di erogazione (tradizionale, a distanza, mista): TRADIZIONALE

Metodi di valutazione (Prova scritta, orale, ecc): PROVA SCRITTA ED ORALE

Risultati di apprendimento attesi:

Il corso di Architettura degli Elaboratori ha lo scopo di illustrare l'architettura, il

funzionamento e le principali componenti hardware di un moderno sistema di elaborazione.

La prima parte del corso è dedicata agli aspetti basilari della logica dei calcolatori, ovvero

alla codifica binaria delle informazioni, all'aritmetica binaria e al calcolo proposizionale. La

seconda parte del corso è, invece, dedicata allo studio dei principali componenti logici di

cui si compone un calcolatore e di come questi interagiscono. In questa parte del corso

vengono trattati sia i circuiti logici combinatori che quelli sequenziali. Il percorso didattico

termina con l'analisi dei componenti più complessi di un calcolatore e con la progettazione

di un processore didattico.

Programma/Contenuti: 1. Rappresentazione dell’Informazione

1.1. Sistemi Numerici;

1.2. Rappresentazione di numeri naturali, interi (modulo e segno, complemento alla base),

razionali (virgola fissa e virgola mobile);

1.3. Aritmetica binaria;

1.4. Codici per la rappresentazione dell’informazione alfanumerica.

2. Calcolo Proposizionale

2.1. Sintassi delle espressioni proposizionali;

2.2. Interpretazioni e Funzioni Booleane;

2.3. Equivalenza di espressioni;

2.4. Gli operatori XOR, NAND e NOR ;

2.5. Somme di prodotti (SP) e prodotti di somme (PS);

2.6. Mappe di Karnaugh.

3. Circuiti Logici Combinatori (CLC)

3.1. Analisi di CLC;

3.2. Sintesi di CLC come implementazione di espressioni SP e PS minime;

3.3. Moduli combinatori standard: selettore, codificatore, decodificatore, ROM;

3.4. Circuiti addizionatori a propagazione di riporto e ad anticipo di riporto.

4. Circuiti Logici Sequenziali (CLS)

4.1. Struttura di un CLS;

4.2. Variabili di anello e stati;

4.3. Automi a stati finiti;

4.4. Sintesi di un CLS; Flip-Flop RS;

4.5. Il fenomeno delle transizioni multiple.

5. Circuiti Logici Sequenziali Sincroni (CLSS)

5.1. Modello Fondamentale di un CLSS;

5.2. Macchine sequenziali e loro realizzazione attraverso CLSS;

5.3. Memorie: registri e Ram;

5.4. Registri contatori e a scorrimento.

6. Architettura di un Calcolatore

6.1. Processore: parte Operativa e nità di Controllo;

6.2. Memorie: cache, RAM, dischi magnetici;

6.3. Progettazione di un processore didattico.

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

Date di inizio e termine: 25/10/2010 – 05/02/2011

Calendario:

Lunedì 14:00-16:00

Mercoledì 17:00-19:00

Il calendario delle prove d’esame:

Ancora non disponibile

Bibliografia: 1. F. Luccio, L. Pagli, Reti Logiche e Calcolatori, Serie di Informatica, Boringhieri;

2. M. Morris Mano, Charles R. Kime, Reti Logiche, Addison-Wesley

Insegnamento: BASI DI DATI

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

INFORMATICA - TRIENNALE

Codifica: SSD (Settore scientifico disciplinare): INF/01

Docente Responsabile: PASQUALE RULLO

Eventuali altri docenti coinvolti:

Esercitatori: Laboccetta Giovanni, Policicchio Veronica Lucia

Orario di ricevimento: SEMPRE

Crediti Formativi (CFU): 10 ( 6 + 4 laboratorio)

Ore di lezione: 48 Ore riservate allo studio individuale:

Ore di laboratorio: 48

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante: Corso di Laurea in Informatica

Facoltà competente: SS.MM.FF.NN.

Lingua d’insegnamento: ITALIANO

Anno di corso: II (N.O.)

Propedeuticità:

(1) “Fondamenti di Informatica” è propedeutico per “Basi di Dati”;

(2) “Basi di Dati” è propedeutico per “Sistemi informativi per il Web”

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.): LEZIONI +

LABORATORIO

Modalità di frequenza (obbligatoria, facoltativa): OBBLIGATORIA

Modalità di erogazione (tradizionale, a distanza, mista): TRADIZIONALE

Metodi di valutazione (Prova scritta, orale, ecc): PROVA SCRITTA ED ORALE

Risultati di apprendimento attesi:

Obiettivo del corso è fornire gli strumenti e le metodologie per la progettazione e la gestione di

sistemi di basi di dati. L’attenzione è focalizzata sulle basi di dati relazionali e sui relativi sistemi

di gestione fondati sul linguaggio SQL.

Alla fine del corso lo studente dovrebbe avere acquisito le competenze necessarie per la

progettazione e l’implementazione e il mantenimento delle basi di dati. Inoltre, dovrebbe aver

appreso le funzionalità di base e quelle avanzate per l’interrogazione e il mantenimento di un

database. Infine, lo studente dovrebbe conoscere le tecnologie fornite dai DBMS per il controllo

della concorrenza, la gestione dell’organizzazione fisica delle basi di dati e l’ottimizzazione di

query.

Programma/Contenuti:

1. Introduzione: le basi di dati e i DBMS

2. Progettazione di basi di dati: 2.1. Progettazione concettuale 2.2. Progettazione logica

3. La progettazione concettuale 3.1. Il modello Entità-Relazione: entità, attributi, associazioni, generalizzazioni 3.2. Progettazione di uno schema concettuale

4. Il modello dei dati relazionale 4.1. Relazioni, chiavi primarie, chiavi secondarie, vincoli d’integrità

5. La progettazione logica 5.1. Ristrutturazione di schemi E-R 5.2. Traduzione di uno schema concettuale ristrutturato in uno schema logico relazionale

6. Algebra Relazionale 6.1. Operatori insiemistici (unione, intersezione, differenza) 6.2. Ridenominazione, selezione, proiezione 6.3. Join 6.4. L’Algebra Relazionale come linguaggio di interrogazione

7. SQL 7.1. SQL Data Definition Language: 7.2. Definizione di schemi in SQL: Definizione di tabelle, di vincoli (intra-relazionali semplici, di integrità

referenziale, generici). 7.3. Interrogazioni semplici 7.4. Operatori aggregati 7.5. Interrogazioni con raggruppamento 7.6. Interrogazioni di tipo insiemistico 7.7. Interrogazioni nidificate (operatori : in, not in, exists, not exist)

8. Viste, asserzioni e trigger in SQL, Procedure memorizzate (stored procedure e stored function) 9. Transazioni

9.1. Concetti generali

9.1.1. Specifica delle transazioni: commit e rollback 9.1.2. Proprietà “acide” delle transazioni

9.2. Controllo di affidabilità

9.2.1. Organizzazione del log 9.2.2. Esecuzione delle transazioni e scrittura del log 9.2.3. Gestione dei guasti

9.3. Controllo di concorrenza

9.3.1. Anomalie delle transazioni concorrenti 9.3.2. Teoria del controllo di concorrenza: serializzabilità e grafo dei conflitti 9.3.3. Meccanismi per la gestione dei lock: protocolli 2PL e 2PL stretto 9.3.4. Blocco critico

10. Organizzazione fisica di una base di dati 10.1. Metodi di accesso primari e secondari 10.2. Accesso sequenziale, funzioni hash, B-Tree e B+-tree

11. Ottimizzazione di interrogazioni 11.1. Ottimizzazione logica 11.2. Ottimizzazione fisica 11.3. Piani di esecuzione

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

Date inizio e termine : 25/10/2010 – 05/02/2011

Calendario:

Martedì 11:30 – 13:30

Giovedì 11:30 – 13:30

Venerdì 10:30 – 13:30 (laboratorio)

Il calendario delle prove d’esame:

Ancora non disponibile

Bibliografia: 1. Atzeni et al, “Basi di Dati – Modelli e linguaggi di interrogazioni”, Terza Edizione, McGraw-Hill

2. Ramez A. Elmasri, Shamkant B. Navathe, Sistemi di basi di dati - Fondamenti e Complementi, Pearson - Addison Wesley

3. A. Albano, Costruire Sistemi per Basi di Dati, Addison-Wesley, Milano, 2001.

Insegnamento: BASI DI DATI EVOLUTE

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

INFORMATICA - TRIENNALE

Codifica: SSD (Settore scientifico disciplinare): INF/01

Docente Responsabile: PASQUALE RULLO

Eventuali altri docenti coinvolti:

Esercitatori: Laboccetta Giovanni, Cumbo Chiara

Orario di ricevimento: SEMPRE

Crediti Formativi (CFU): 6 ( 4 + 2 laboratorio)

Ore di lezione: 32 Ore riservate allo studio individuale:

Ore di laboratorio: 24

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante: Corso di Laurea in Informatica

Facoltà competente: SS.MM.FF.NN.

Lingua d’insegnamento: ITALIANO

Anno di corso: III (V.O.)

Propedeuticità:

(1) “Basi di Dati Relazionali” è propedeutico per “Basi di Dati Evolute”;

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.): LEZIONI +

LABORATORIO

Modalità di frequenza (obbligatoria, facoltativa): OBBLIGATORIA

Modalità di erogazione (tradizionale, a distanza, mista): TRADIZIONALE

Metodi di valutazione (Prova scritta, orale, ecc): PROVA SCRITTA ED ORALE

Risultati di apprendimento attesi:

Lo scopo del corso di Basi di Dati Evolute (6 CF) è approfondire le nozioni sulle tecnologie e sulle

architetture dei sistemi di basi di dati e fornire agli studenti gli strumenti teorici e pratici per lo

sviluppo di sistemi di basi di dati in ambiente Web. In particolare, i temi trattati riguardano:

costrutti SQL avanzati, gestione delle transazioni, accesso a basi di dati con i linguaggi di

programmazione ad oggetti (API JDBC), architetture multi-tier per l’accesso a basi di dati in

ambiente web (pagine JSP e servlet).

Il corso prevede 2 CF dedicati alle attività di laboratorio per lo svolgimento di un progetto didattico

che permetterà allo studente di familiarizzare con gli argomenti e le tecnologie presentate durante

le lezioni teoriche.

Programma/Contenuti: 1. Viste, asserzioni e trigger in SQL, Procedure memorizzate (stored procedure e stored

function) 2. Transazioni

2.1. Concetti generali 2.1.1. Specifica delle transazioni: commit e rollback

2.1.2. Proprietà “acide” delle transazioni 2.2. Controllo di affidabilità

2.2.1. Organizzazione del log 2.2.2. Esecuzione delle transazioni e scrittura del log 2.2.3. Gestione dei guasti

2.3. Controllo di concorrenza 2.3.1. Anomalie delle transazioni concorrenti 2.3.2. Teoria del controllo di concorrenza: serializzabilità e grafo dei conflitti 2.3.3. Meccanismi per la gestione dei lock: protocolli 2PL e 2PL stretto 2.3.4. Blocco critico

3. L’API JDBC per l’accesso a BD da programmi Java: il package java.sql 3.1. La classe DriverManage, le interfacce Connection, Statement, PreparedStatement,

CallableStatement, ResultSet, DatabaseMetaData 3.2. Gestione della concorrenza in JDBC

4. Architettura multi-tier per l’accesso a BD in ambiente web: pagine JSP e servlet 4.1. Servlet: il package Javax (metodi Init, Destroy, Service, doGet, doPost ) 4.2. Passaggio di parametri ad una servlet tramite form 4.3. Condivisione della memoria e multithreading, oggetti session 4.4. Pagine JSP (variabili implicite: request, response, out, session)

5. Organizzazione fisica di una base di dati 5.1. Metodi di accesso primari e secondari 5.2. Accesso sequenziale, funzioni hash, B-Tree e B+-tree

6. Ottimizzazione di interrogazioni 6.1. Ottimizzazione logica 6.2. Ottimizzazione fisica 6.3. Piani di esecuzione

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

24 gennaio 2011 - 19 marzo 2011

Il calendario delle prove d’esame:

Ancora non disponibile

Bibliografia:

1. P. Atzeni, S. Ceri, S. Paraboschi, P. Fraternali, S. Paraboschi, R. Torlone, Basi di dati:

Architetture e linee di evoluzione, McGraw-Hill, 2003.

2. Ramez A. Elmasri, Shamkant B. Navathe, Sistemi di basi di dati - Fondamenti e Complementi, Pearson - Addison Wesley

3. A. Albano, Costruire Sistemi per Basi di Dati, Addison-Wesley, Milano, 2001.

4. G. Naccarato, Java database e programmazione client/server, Apogeo, 2001

Insegnamento: Algoritmi e strutture dati

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

Triennale in Informatica

Codifica: SSD (Settore scientifico disciplinare):

Docente Responsabile: Giorgio Terracina

Eventuali altri docenti coinvolti:

Orario di ricevimento: Giovedì ore 17.00 e su appuntamento

Crediti Formativi (CFU):

Ore di lezione: Ore riservate allo studio individuale:

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

Facoltà competente:

Lingua d’insegnamento:

Anno di corso:

Propedeuticità:

corso propedeutico: Programmazione ad Oggetti

Il corso è propedeutico a : Interfacce grafiche e programmazione ad eventi

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.):

Modalità di frequenza (obbligatoria, facoltativa):

Modalità di erogazione (tradizionale, a distanza, mista):

Metodi di valutazione (Prova scritta, orale, ecc): Progetto e orale

Risultati di apprendimento attesi: Capacità di analisi dei problemi e scelta degli

algoritmi e delle strutture dati più adatte alla risoluzione del problema

Programma/Contenuti:

- Calcolo della complessità

- Tabelle Hash

- Alberi Binari, Alberi Binari di Ricerca e Alberi Generici

- I Grafi

- La tecnica Divide et Impera e classificazione della complessità dei possibili algoritmi.

Algoritmi di ricerca e ordinamento

- La tecnica di Programmazione Dinamica

- La tecnica di Programmazione Golosa

- La tecnica del Backtraking

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

Il calendario delle prove d’esame:

Bibliografia: Libro di testo: Algoritmi e strutture dati – C. Demetrescu, I. Finocchi, G.F. Italiano – McGraw-Hill

Insegnamento: Matematica Discreta

Corso di laurea dell’insegnamento (specificare anche se triennale o magistrale):

Informatica (trienale)

Codifica: SSD (Settore scientifico disciplinare):

Docente Responsabile: J. van Bon

Eventuali altri docenti coinvolti:

Orario di ricevimento:

Crediti Formativi (CFU):

Ore di lezione: Ore riservate allo studio individuale:

Ore di laboratorio:

Il corso di studio, per i quali lo stesso costituisce un’attività di base o caratterizzante:

Facoltà competente:

Lingua d’insegnamento:

Anno di corso:

Propedeuticità:

Organizzazione della didattica (lezioni, esercitazioni, laboratorio, ecc.):

Modalità di frequenza (obbligatoria, facoltativa):

Modalità di erogazione (tradizionale, a distanza, mista):

Metodi di valutazione (Prova scritta, orale, ecc): Prova scritta con orale facoltativo

Risultati di apprendimento attesi:

Al termine del corso lo studente dovrebbe aver acquisito una buona padronanza dei concetti fondamentali

della matematica discreta.

Programma/Contenuti:

La geometria analitica del piano e lo spazio.

Sistemi di equazioni lineari: Matrici. Metodo di Gauss-Jordan. Operazioni su matrici. Rango di una matrice.

Matrici invertibili.

Algebra Lineare: Spazi vettoriali. Combinazioni lineari, dipendenza e indipendenza lineare di vettori, basi di un

spazio vettoriale, coordinate, sottospazi e loro dimensione. Applicazioni lineari. Nucleo ed immagine di un'

applicazione lineare. Applicazioni lineari e matrici. Matrice di cambiamento di base. Determinanti.

Teoria dei Numeri: Numeri interi, algoritmo di Euclide, equazioni lineari diofantine, numeri primi e

fattorizazioni, aritmetica modulare, teorema del cinese del resto, applicazioni all'informatica.

Metodi matematici: Elementi dalla teoria degli insiemi, logica e teoria dei grafi.

Combinatorica: Pigeon hole principle, permutazioni e combinazioni (con e senza repitizione). Principio di

inclusione-escluzione.

Relazioni di ricorrenza.

Le eventuali attività di supporto alla didattica (tipi e orari):

Date inizio e termine e il calendario delle attività didattiche:

Il calendario delle prove d’esame:

Bibliografia:

O. Bretscher, Linear Algebra with applications, Prentice Hall, 2001.

A.M. Cohen, H. Cuypers, H. Sterk, Algebra Interactive!, Springer Verlag, 1999.

A. Fachini, Sussidiario di Algebra e Matematica Discreta, Zanichelli, 1994.

S. Greco & P. Valabrega, Lezioni di Algebra Lineare e Geometria, Vol. I: Algebra Lineare, Levrotto & Bella

Editrice, Torino, 1992.

B. Kolman, Elementary Linear Algebra, Prentice Hall, 2001.

K.H. Rosen, Discrete Mathematics and its applications, McGraw-Hill, 1999.