Corso di Fondamenti di Informatica III e Basi di Dati - Prof. S. Russo Programma dell' a.a. 2000/2001 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Diploma Universitario in Ingegneria Informatica CORSO DI FONDAMENTI DI INFORMATICA III e BASI DI DATI Prof. STEFANO RUSSO Programma dell'a.a. 2000/2001 PARTE ISTITUZIONALE Fondamenti di Informatica III: Progettazione e programmazione ad oggetti. Tecniche di programmazione modulare. Programmazione con oggetti, con tipi di dati astratti, con classi (object-based). Ereditarietà e polimorfismo. Programmazione orientata agli oggetti (object-oriented). (dai testi consigliati 1 e 2 e dalla dispensa didattica n. 1) Il linguaggio C++ (complementi). Ereditarietà; funzioni virtuali; classi astratte. Polimorfismo. Binding dinamico. (dal testo adottato 3 Cap. 20, 21, 22, 23; dal testo consigliato 1 e dalla dispensa didattica n. 1) Progettazione ad oggetti. Modelli ad oggetti statici e dinamici. Relazioni tra classi: gerarchie generalizzazione-specializzazione; contenimento (aggregazione); associazioni. Il linguaggio UML: diagramma delle classi; diagramma degli stati; diagrammi di interazione tra oggetti o classi. Dalla progettazione con UML alla programmazione a oggetti. (dal testo adottato 3 Cap. 32, 34, 35 (no Aspetti dinamici); dalle dispense didattiche n. 2 e n. 3) Il linguaggio Java. Generalità: orientamento agli oggetti, differenze col C++, sicurezza, strumenti di sviluppo. Java e il web. Modelli di esecuzione: interpretazione e compilazione just-in-time. Costrutti base. Moduli (packages). Input-output. Gestione delle eccezioni. Programmazione concorrente con threads. Programmazione di applicazioni client-server con libreria socket. Programmazione di interfacce utente con AWT. (dai testi consigliati 2 e 3 e dalle dispense didattiche n. 5, 6, 9, 10) Il linguaggio HTML. I linguaggi di tipo mark-up. Struttura di un ipertesto. Gli ipertesti elettronici e la rete Internet; pagine web, HTML e HTTP. Struttura di un documento HTML. Formattazione di testo in HTML; sfondi; liste; tabelle; immagini; audio; collegamenti (links); maschere (forms). HTML e Java: l’etichetta <applet>. Le servlet. Aspetti tecnologici: gli editor per HTML e i server HTTP. (dalla dispensa didattica n. 4; dal testo adottatto 1, Cap. 14 par. 1) Università di Napoli Federico II – D.U. in Ingegneria Informatica 1 Corso di Fondamenti di Informatica III e Basi di Dati - Prof. S. Russo Programma dell' a.a. 2000/2001 Basi di Dati: Progettazione DB e tecnologie dei DBMS. Le basi di dati. Definizione e cenni storici. Modelli dei dati. Indipendenza dei dati. I sistemi di gestione di basi di dati (DBMS). L’amministratore di basi di dati. Basi di dati e Web. (dal testo adottatto 1, Cap. 1, Cap. 14 par. 2) Il modello Entità-Relazioni. Costrutti e notazioni. Entità, relazioni, attributi, chiavi. Cardinalità di attributi e relazioni. Gerarchie ISA. Documentazione degli schemi E-R. (dal testo adottatto 1, Cap. 5 parr. 2, 3; dal testo adottatto 2, Cap. XII par. 6) Il modello relazionale. Relazioni, attributi, domini, chiavi. Dipendenze funzionali. Forme normali: 1NF, 2NF, 3NF, BCNF. Teoria dei valori nulli. Vincoli di integrità. Chiavi esterne e integrità referenziale. L’algebra relazionale: operatori insiemistici, ridenominazione, selezione, proiezione e join. (dal testo adottatto 1, Cap. 2, Cap. 3 par. 1, Cap. 8; dal testo adottatto 2, Cap. XII parr. 1-5, 7-10; dalla dispensa didattica 14) Il linguaggio SQL. Comandi per la definizione e modifica dello schema (DDL). Interrogazioni e manipolazioni (DML). Interrogazioni in presenza di valori nulli. Definizione dei vincoli intrarelazionali e interrelazionali. Creazione di indici. Creazione di viste. Controllo dei privilegi di accesso. SQL nei linguaggi ospite. (dal testo adottatto 1, Cap. 4; dal testo adottatto 2, Cap. XII parr. 12-15, dalla dispensa didattica 15) La progettazione di basi di dati. Fasi della progettazione. Ciclo di vita di una base dati. Raccolta ed analisi dei requisiti statici e dinamici; glossario dei dati, volumi dei dati e delle operazioni. Progettazione concettuale; strategie di progetto. Ristrutturazione dei diagrammi E-R e traduzione verso il modello relazionale. Progettazione logica. Definizione degli indici. Progettazione fisica. Progettazione e tecnologie di basi di dati su Web. Le API JDBC e ODBC. (dal testo adottatto 1, Cap. 5 par. 1, Cap. 6, Cap. 7, Cap. 9 par. 7, Cap. 14 par. 3, 4; dal testo adottatto 2, Cap. XII par. 11; dal testo consigliato 3, Capp. 43, 44, 45, 47; dalle dispense didattiche 11, 12) Tecniche di organizzazione degli archivi. I supporti di memorizzazione di massa ad accesso diretto (DASD). Tempo di accesso, di posizionamento, di latenza, di trasferimento. Buffer di I/O del sistema operativo. Canale, controllore del disco. Modi di elaborazione degli archivi: seriale, sequenziale, casuale. Metodi di accesso: sequenziale, con tabella di accesso (singola e a più livelli), sequenziale con indice. Accesso calcolato: accesso diretto per indirizzi; metodo hash. I DBMS e il file system. (dal testo adottato 1, Cap. 9 par. 9.3.4; dal testo adottato 4, Parte I Cap. 4, escl. par. 7; Parte IV Cap. 6 par 6,7,8,9, Cap. 8 par. 8) Tecnologia dei DBMS (cenni). Il concetto di transazione. Commit e rollback. Proprietà acide. Log, checkpoint, dump. Ripresa a caldo e a freddo. I DBMS MS-Access e Oracle. (dal testo adottatto 1, Cap. 9 parr. 1, 4, Cap. 10 parr. 1, 10.5.1, App. A; dalla dispensa didattica 16) Università di Napoli Federico II – D.U. in Ingegneria Informatica 2 Corso di Fondamenti di Informatica III e Basi di Dati - Prof. S. Russo Programma dell' a.a. 2000/2001 PARTE ESERCITATIVA Esercitazioni guidate sullo sviluppo di programmi nei linguaggi C++, HTML e Java, sulla progettazione ad oggetti con UML, e sulla progettazione di basi di dati, basate sull’uso di ambienti di sviluppo professionali e di strumenti CASE, vengono svolte in aula ed in laboratorio durante il corso. Esercitazioni libere sui singoli argomenti sono svolgibili nei laboratori EUBEO. OBIETTIVI FORMATIVI Per quanto riguarda gli aspetti concettuali e metodologici, si richiede che lo studente: - maturi una visione critica ed acquisisca padronanza delle tecniche di programmazione strutturata e modulare nei linguaggi C++ e Java; - sappia progettare un sistema software ad oggetti con i diagrammi UML, e conosca le tecniche di passaggio dalla progettazione O-O alla programmazione nei linguaggi C++ e Java; - sappia eseguire la progettazione concettuale di una base di dati con il modello E-R e passare alla progettazione logica con il linguaggio SQL. Per quanto riguarda gli aspetti tecnologici, si richiede che lo studente: - acquisisca una buona padronanza di una ambiente per lo sviluppo di applicazioni C++ e Java; - acquisisca una buona padronanza di strumenti per la creazione di documenti HTML per pagine web, con collegamenti a programmi Java; - acquisisca una buona padronanza di un sistema DBMS in ambiente Personal Computer; - sappia sviluppare programmi Java con interfacciamento a sistemi DBMS ed a pagine web. MATERIALE DIDATTICO TESTI ADOTTATI 1. P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone: Basi di Dati – seconda edizione, Mc GrawHill Libri Italia, 1999. 2. B. Fadini, C. Savy: Fondamenti di Informatica I, Liguori editore. 3. C. Savy: Da C++ a UML, McGraw-Hill Libri Italia, 2000. 4. B. Fadini, C. Savy: Fondamenti di Informatica II, Liguori editore. TESTI CONSIGLIATI 1. H. Schildt: Guida al C++, Mc Graw-Hill oppure: Deitel & Deitel, The complete C++ training course, Prentice Hall, 1998 (con ipertesto) oppure: B. Eckel, Thinking in C++ - 2nd edition, Prentice Hall, 1999 oppure: B. Stroustrup: Il linguaggio C++, 3a edizione, Addison-Wesley. 2. P. Naughton, H. Schildt: Java. McGraw-Hill. 3. J. Jaworski: Java 2 – Tutto & oltre, Apogeo, 1999. DISPENSE DIDATTICHE 1. S. Russo, C. Savy: Introduzione alla programmazione ad oggetti e al linguaggio C++. Università di Napoli Federico II – D.U. in Ingegneria Informatica 3 Corso di Fondamenti di Informatica III e Basi di Dati - Prof. S. Russo Programma dell' a.a. 2000/2001 Disponibile anche come corso elettronico ipertestuale.* C. Savy: Strategie di progettazione ad oggetti in linguaggio C++. C. Savy: Un esempio di progettazione ad oggetti con UML. S. Russo: Il linguaggio HTML.* S. Russo: Introduzione al linguaggio Java.* S. Russo: Trasparenze dalle lezioni sul linguaggio Java, disponibili in forma di ipertesto elettronico.* 7. Appunti trascritti dalle lezioni del corso di Basi di Dati del Prof. P. Atzeni, Diploma Teleimpartito in Ingegneria Informatica e Automatica, Consorzio NETTUNO. 8. S. Russo: Esercitazione sul linguaggio SQL, con software didattico interprete interattivo SQL.* 9. A. Sergio: Introduzione alla piattaforma Java – trasparenze del seminario. 10. A. Sergio: Esempi di programmi con Java servlet. 11. A. Sergio: Le API JDBC – trasparenze dal seminario. 12. G. Granero: Accesso a basi di dati via ODBC, http://www.dia.uniroma3.it/~atzeni/didattica/BD/materiale/lucidiGranero.pdf 13. P. Atzeni: La progettazione concettuale (esempio) – trasparenze dalle lezioni. 14. P. Atzeni: Il modello relazionale – trasparenze dalle lezioni. 15. P. Atzeni: Il linguaggio SQL – trasparenze dalle lezioni. 16. G. Vitagliano, M. Piscopo: L’ambiente Oracle – trasparenze dal seminario. 2. 3. 4. 5. 6. Le dispense didattiche sono disponibili in forma elettronica sul server ftp://eubeo.eubeo.unina.it/pub/F3andBD; quelle contrassegnate con l’asterisco sono inoltre disponibili sul sito Internet: http://www.grid.unina.it/courseware. MODALITA’ DI SVOLGIMENTO DELL’ESAME L’esame consiste: – di una prova di accertamento relativa alla teoria ed alla progettazione delle basi di dati; – in una prova pratica individuale al calcolatore, con implementazione di una piccola base di dati, e sviluppo di un programma di tipo servlet in linguaggio Java per le operazioni di manipolazione dei dati con SQL; – in una prova orale, consistente di domande sui contenuti concettuali, metodologici e tecnici del corso. LABORATORIO PER ESERCITAZIONI: Consorzio EUBEO, Comprensorio ex Olivetti, Pozzuoli. ASSISTENZA DIDATTICA: Ricevimento studenti: Lunedi ore 15:30-18:30, presso il Dipartimento di Informatica e Sistemistica, Mostra d'Oltremare, Padiglione 20 (ex Fac. Fisica, ingresso di fronte allo Zoo, viale Kennedy), Napoli. Università di Napoli Federico II – D.U. in Ingegneria Informatica 4