insegnamento: linguaggi formali e compilatori · insegnamento: linguaggi formali e compilatori...
TRANSCRIPT
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.