PPT - Dipartimento di Informatica - Scienza e Ingegneria

Basi di Dati e Sistemi
Informativi
Corso di Laurea in Informatica per il Management
Universita’ di Bologna
Docente: Marco Di Felice
Home page del corso:
http://www.cs.unibo.it/~difelice/dbsi/
Docente
Dr. Marco Di Felice
Dipartimento di Scienze dell’Informazione
Via M. Anteo Zamboni 7, 40126 Bologna
Email: [email protected]
Sito web: http://www.cs.unibo.it/~difelice
Orario di ricevimento:
 Martedi’, ore 9.30-13.30
Orari del Corso
 Mercoledi’, ore 15.30-18.30, Aula Ercolani 2
 Giovedi’, ore 16.30-18.30, Aula Ercolani 2
 Venerdi’, ore 10.30-13.30, Aula Ercolani 2
Durata corso: 26 Settembre – 20 Dicembre 2012
(80 ore circa di lezioni frontali) – 12 c.f.u
Obiettivi del Corso
 Fornire le basi dell'utilizzo e della
progettazione di basi di dati basate sul
modello relazionale.
 Introdurre le caratteristiche principali dei
moderni software di gestione delle basi di dati
(DBMS)
 Introdurre gli strumenti e le metologie per
l'integrazione di basi di dati all'interno di un
sistema informatico.
Contenuti del Corso
Un Sistema Informativo (SI) e’ una
componente di un’organizzazione il cui scopo
e’ quello di gestire le informazioni utili ad i
fini dell’organizzazione stessa.
Organizzazione  Azienda, Ufficio, Ente, Universita’, etc
Obiettivi del Corso
“ Ogni due giorni produciamo tante
informazioni quante ne abbiamo
prodotte in tutta la nostra storia fino
al 2003”
Eric Schmidt
(Presidente esecutivo di Google)
Contenuti del Corso
L’esistenza di un Sistema Informativo e’
indipendente dalla sua automatizzazione.
Biblioteca reale di Alessandria d’Egitto
IV-I secolo a.C
400000 rotoli presenti.
Contenuti del Corso
L’esistenza di un Sistema Informativo e’
indipendente dalla sua automatizzazione.
Censimenti e Registro Anagrafe.
Nell’Antica Roma, i censimenti venivano
effettuati dalla fine del IV secolo a.c. Gli
elenchi dei censiti, distinti secondo il
possesso o meno dei diritti civili e politici,
la classe patrimoniale e l'età, venivano
utilizzati come liste elettorali, ruoli per
l’esazione dei tributi e liste di leva.
Contenuti del Corso
 La porzione automatizzata di un sistema informativo
prende il nome di Sistema Informatico.
 All’interno di un sistema informatico, le informazioni
sono rappresentate da dati, che hanno bisogno di essere
interpretati per fornire informazioni.
SISTEMA INFORMATIVO
SISTEMA INFORMATICO
SISTEMA
Contenuti del Corso
 Informazione (def): notizia, dato, elemento che
consente di avere conoscenza piu’ o meno esatta di fatti,
situazioni e modi d’essere.
 Dato (def): elementi di informazione constituiti da
simboli che devono essere elaborati.
NOTA: Senza interpretazione, il dato non e’ molto utile!
FERRARI, 8
Contenuti del Corso
Una base di dati e’ una collezione di dati che
rappresentano le informazioni di un’organizzazione.
 Approccio convenzionale: files per memorizzare i dati in
modo persistente le informazioni nella memoria di massa.
 Approccio del corso: dati gestiti attraverso sistemi software
specifici noti come Data Base Management System (DBMS).
Da qui in avanti nel corso  Una base di dati e’ una
collezione di dati gestita da un DBMS.
Contenuti del Corso
Un DBMS e’ un sistema software che e’ in grado di gestire
collezioni di dati che sono grandi, condivise e persistenti,
assicurando la loro affidabilita’ e privatezza.
 DB grandi  dipende dall’organizzazione, ma si puo’
arrivare all’ordine dei giga/tera-bytes ed oltre.
 DB condivisi  applicazioni ed utenti diversi devono poter
accedere a dati comuni, in maniera consistente tra gli accessi.
 DB persistenti  memorizzazione su memoria secondaria.
 DB affidabili  alta tolleranza ad i guasti, con funzionalita’
avanzate di ripristino e backup.
 DB sicuri  meccanismi di autenticazione degli utenti.
 DB efficienti  performance accettabili per l’utente.
Contenuti del Corso
 Solo nel 2011, il mercato dei DMBS ha avuto una crescita del
6.5% con ricavi complessivi pari a 33.9 billioni di dollari.
 Il mercato dei DBMS e’ dominato da 4 vendor, che da soli
occupano una percentuale di ricavi pari al 75% del totale:
 Oracle (10 billioni di dollari di ricavi nel 2011).
 IBM
 Microsoft
 SAP
 Oltre a queste 4 aziende, 14 altri vendor hanno ricavato
profitti pari a 100 milioni di dollari (ciascuno).
Fonte: IDC
Contenuti del Corso
4th Dimension
Adabas D
Alpha Five
Apache Derby
Aster Data
Altibase
BlackRay
CA-Datacom
Clarion
Clustrix
CSQL
CUBRID
Daffodil database
DataEase
Database Management
Dataphor
Java DB
Ingres
Empress Embedded
InterBase
Database
InterSystems Caché
EnterpriseDB
GT.M
eXtremeDB
Linter
FileMaker Pro
MariaDB
Firebird
MaxDB
Greenplum
Microsoft Access
GroveSite
Microsoft Jet Database
H2
Engine (part of
Helix database
Microsoft Access)
HSQLDB
Microsoft SQL Server
IBM DB2
IBM Lotus Approach
Infobright
Informix
Lista (parziale) dei DBMS piu’ utilizzati.
Contenuti del Corso
Microsoft SQL Server Express
Microsoft Visual FoxPro
Mimer SQL
MonetDB
mSQL
MySQL
Netezza
NonStop SQL
Openbase
OpenLink Virtuoso
OpenLink Virtuoso Server
OpenOffice.org Base
Oracle
Oracle Rdb for OpenVMS
Panorama
PostgreSQL
Progress Software
RDM Server
SAND CDBMS
Sav Zigzag
ScimoreDB
SmallSQL
SQLBase
SQLite
Sybase SQL AdvantageServer
Teradata
TimesTen
txtSQL
Unisys RDMS 2200
UniData
UniVerse
Vertica
Lista (parziale) dei DBMS
VMDS
piu’ utilizzati.
VISTADB
Contenuti del Corso
Numero di righe presenti nel data-base …
Fonte: Winter Corporation, 2005
Contenuti del Corso
Nel corso, forniremo un’introduzione al mondo dei
Sistemi Informativi e delle Basi di dati (DB) da quattro
punti di vista differenti:
Utente  come usare un DB (aggiungere/modificare
informazioni, recuperare informazioni da un DB, etc).
Progettista  come progettare un DB.
Programmatore  come sviluppare applicazioni
Web/stand-alone che si interfaccino con un DB [CENNI].
Progettista di DBMS  come e’ fatto un DBMS [CENNI].
Contenuti del Corso
Nel corso, forniremo un’introduzione al mondo dei
Sistemi Informativi e delle Basi di dati (DB) da quattro
punti di vista differenti:
Utente  come usare un DB (aggiungere/modificare
informazioni, recuperare informazioni da un DB, etc).
Progettista  come progettare un DB.
Programmatore  come sviluppare applicazioni
Web/stand-alone che si interfaccino con un DB [CENNI].
Progettista di DBMS  come e’ fatto un DBMS [CENNI].
Contenuti del Corso
Dato un DB gestito da un DBMS (es. DB che gestisce
i dati di studenti/docenti dell’universita’ di Bologna),
vedremo come si implementano operazioni di:
 Inserimento/modifica (es. inserisci nuovo studente).
 Ricerca (es. trova tutti i docenti di un certo dipartimento).
 Creazione/modifica dello schema (es. estendi il
DB in modo da gestire anche le informazioni dei tecnici)
 Creazione di un nuovo DB
…
Contenuti del Corso
Per conseguire tali competenze, e’ necessario
studiare due aspetti complementari:
1. Come sono strutturati i dati all’interno di un
DBMS, ossia il modello logico dei dati.
1. Come si interagisce con il modello logico per
eseguire operazioni di accesso ai
dati/modifica/ricerca/etc, ossia il linguaggio
per la specifica delle operazioni sui dati.
Contenuti del Corso
Un modello di dati e’ un insieme di concetti utilizzati per
organizzare i dati di interesse e descriverne la struttura in
modo che essa risulti comprensibile ad un elaboratore.
Modello Relazionale  consente di organizzare i dati in
record di dimensione fissa mediante tabelle.
Colonne=Campi del record
Righe=
Record
{
Corso
Codice Corso
Nome Docente
Basi di dati
0121
M. Di Felice
Programmazione
1213
C. Laneve
Sistemi Operativi
1455
D. Sangiorgi
Modello Relazionale: overview
In pratica, una base di dati di medio/grandi dimensioni
puo’ essere costituita da molte tabelle…
CORSI
Nome Corso
Codice
Corso
Codice Docente
Basi di dati
0121
Programmazione
Sistemi Operativi
ESAMI
Corso
Studente
Voto
00
0121
4324235245
30L
1213
01
1213
4324235245
25
1455
02
1213
9854456565
18
STUDENTI
Matricola
Cognome
Nome
Data Nascita
4324235245
Rossi
Giorgio
12/12/1987
6247673587
Bianchi
Michele
04/12/1987
9854456565
Verdi
Marco
11/04/1988
Contenuti del Corso
Ogni DBMS mette a disposizione degli appositi
linguaggi per le operazioni di definizione dello
schema e di manipolazione/accesso ai dati stessi.
 Linguaggi testuali ad hoc, specifici del DBMS in uso.
 Interfacce grafiche (es. Access).
 Linguaggio SQL (Structured Query Language) 
standard di riferimento per il modello dati relazionale.
Contenuti del Corso
Esempio di operazioni sui dati: data la tabella con le
informazioni relative ai corsi attivi per il primo
semestre, implementare una procedura per recuperare in
maniera automatica il codice del corso di “Basi di Dati”.
CORSI
NomeCorso
CodiceCorso
Nome Docente
Basi di dati
0121
M. Di Felice
Programmazione
1213
C. Laneve
Sistemi Operativi
1455
D. Sangiorgi
Contenuti del Corso
Con gli strumenti tradizionali (Java+file):
String s;
BufferedReader reader=new BufferedReader(new
FileReader(“myfile”));
while (s=reader.readLine()) ! =null) {
StringTokenizer token=new StringTokenizer(s);
if (token.nextToken().equals(“Basi di dati”))
System.out.println(token.nextToken());
}
reader.close();
PROBLEMI:
- Codice alquanto elaborato
- Necessario conoscere il path del file
- Accesso sequenziale al file …
Contenuti del Corso
Usando DBMS ed il linguaggio SQL
Select CodiceCorso
From CORSI
Where (NomeCorso=“Basi di dati”);
Completa astrazione da come/dove i dati sono memorizzati su disco!
Programma del Corso
Parte I: Modelli e Linguaggi per Basi di Dati
 Il modello relazionale: concetti di base, vincoli
di integrita' e chiavi.
 Algebra e calcolo relazionali (cenni): operatori
algebrici, calcolo relazionale su domini
 Il linguaggio SQL: definizione dei dati,
modifica dei dati, interrogazioni, definizione
di viste, transazioni.
Contenuti del Corso
Nel corso, forniremo un’introduzione al mondo dei
Sistemi Informativi e delle Basi di dati (DB) da quattro
punti di vista differenti:
Utente  come usare un DB (aggiungere/modificare
informazioni, recuperare informazioni da un DB, etc).
Progettista  come progettare un DB.
Sviluppatore  come sviluppare applicazioni
Web/stand-alone che si interfaccino con un DB [CENNI].
Progettista di DBMS  come e’ fatto un DBMS [CENNI].
Contenuti del Corso
PROBLEMA: Progettazione di un sistema
informativo per un’organizzazione (es.
progettare il sistema informativo di un ente di
formazione che eroga corsi).
 Progettazione dell’applicazione.
 Progettazione della base di dati.
Contenuti del Corso
PROBLEMA: Progettazione di un sistema
informativo per un’organizzazione (es.
progettare il sistema informativo di un ente di
formazione che eroga corsi).
Q. Come procedere?
A. L’implementazione dipende dal caso specifico, tuttavia
esistono aspetti metodologici di natura generale che
possono essere adottati per progettare una “buona base di
dati”.
Contenuti del Corso
{
Studio di fattibilita’
Raccolta/analisi requisiti
Progettazione
Modulo
precedente
Implementazione
Validazione
Funzionamento
Ciclo di vita
di un sistema Informativo
Oggetto di
studio
del
modulo
corrente
Contenuti del Corso
Analisi dei requisiti e progettazione in dettaglio …
Studio/analisi dei requisiti
Risultati
Fasi della progettazione
SCHEMA
CONCETTUALE
Progettazione concettuale
SCHEMA
LOGICO
Progettazione logica
SCHEMA
FISICO
Progettazione fisica
Contenuti del Corso
Analisi dei requisiti e progettazione in dettaglio …
Risultati
Fasi della progettazione
SCHEMA
CONCETTUALE
Progettazione concettuale
SCHEMA
LOGICO
Progettazione logica
SCHEMA
FISICO
Progettazione fisica
Contenuti del Corso
Esempio: Progettazione di una base di dati per un ente che
eroga corsi di formazione.
Si vuole progettare una base di dati per una societa’ che eroga corsi,
di cui si vogliono rappresentare i dati dei docenti e dgli studenti. Per
gli studenti, identificati da un codice, si vuole tenere traccia del
codice fiscale, cognome, eta’, sesso, e corsi che stanno
seguendo/hanno seguito. I corsi hanno un codice, un titolo e
possono avere varie edizioni con date di inizio/fine e numero degli
studenti. Per gli insegnanti, si vuole memorizzare il codice, il
cognome, l’afferenza, il nome del corso che insegnano/hanno
insegnato.
Contenuti del Corso
Esempio: Progettazione di una base di dati per un ente che
eroga corsi di formazione.







Inserimento di un nuovo studente (in media, ogni mese)
Inserimento di un nuovo docente (in media, ogni anno)
Inserimento di un nuovo corso (in media, ogni anno)
Stampa di tutti i corsi attivi (ogni giorno)
Stampa di tutti igli studenti dell’ultimo anno
…
…
Contenuti del Corso
Analisi dei requisiti e progettazione in dettaglio …
Studio/analisi dei requisiti
Risultati
Fasi della progettazione
SCHEMA
LOGICO
Progettazione logica
SCHEMA
FISICO
Progettazione fisica
Contenuti del Corso
Passo1: Produrre uno schema concettuale dei
dati e delle relazioni tra dati che compongono il
sistema informativo.
Codice
…
Studente
Inscrizione
Modello Entita’-Relazione (ER)
Docenza
Corso
Codice
Docente
…
Nome
…
Contenuti del Corso
Analisi dei requisiti e progettazione in dettaglio …
Studio/analisi dei requisiti
Risultati
Fasi della progettazione
SCHEMA
CONCETTUALE
Progettazione concettuale
SCHEMA
FISICO
Progettazione fisica
Contenuti del Corso
Passo2: Traduzione del modello concettuale nel
modello logico relazionale …
 Piu’ soluzioni sono possibili … Quale scegliere?
 Soluzione 1 (pessima). Utilizzo di una sola tabella …
Codice
Studente
Codice
Fiscale
Cogno
me
Eta
Sesso
Codice
Corso
Titolo
Inizio
Fine
Codice
Prof
Cognom
e
Afferenza
323
NULL
Di
Matteo
23
M
212
Basi di
Dati
10/3/20
12
10/5/
2012
1212
DiFelice
Unibo
123
NULL
Poli
24
M
212
Basi di
Dati
10/3/20
12
10/5/
2012
1212
DiFelice
Unibo
143
NULL
Giusti
25
M
212
Basi di
Dati
10/3/20
12
10/5/
2012
1212
DiFelice
Unibo
163
NULL
Di
Cinzio
27
M
214
Sistemi
Operativi
12/3/20
13
13/5/
2013
1215
Sangiorgi
Unibo
Contenuti del Corso
Passo3: Analizzare la qualita’ dello schema DB
prodotto, ed ottimizzarlo/ristrutturarlo …
Codice
Studente
Codice
Fiscale
Cogno
me
Eta
Sesso
Codice
Corso
Titolo
Inizio
Fine
Codice
Prof
Cognom
e
Afferenza
323
NULL
Di
Matteo
23
M
212
Basi di
Dati
10/3/20
12
10/5/
2012
1212
DiFelice
Unibo
123
NULL
Poli
24
M
212
Basi di
Dati
10/3/20
12
10/5/
2012
1212
DiFelice
Unibo
143
NULL
Giusti
25
M
212
Basi di
Dati
10/3/20
12
10/5/
2012
1212
DiFelice
Unibo
163
NULL
Di
Cinzio
27
M
214
Sistemi
Operativi
12/3/20
13
13/5/
2013
1215
Sangiorgi
Unibo
Ridondanze dei dati costi aggiuntivi (memoria utilizzata)
Contenuti del Corso
Passo3: Specificare i vincoli sui dati che devono
essere rispettati dallo schema.
 Il codice dello studente deve essere univoco.
 Il codice del docente deve essere univoco.
 Il codice fiscale di uno studente puo’ non
essere specificato.
 Per un dato corso, identificato dal codice, data
inizio e data fine, deve esistere solo un docente.
…
Contenuti del Corso
Analisi dei requisiti e progettazione in dettaglio …
Studio/analisi dei requisiti
Risultati
Fasi della progettazione
SCHEMA
CONCETTUALE
Progettazione concettuale
SCHEMA
LOGICO
Progettazione logica
Programma del Corso
Parte II: Progettazione di Basi di Dati
 Progettazione concettuale: il modello E/R,
raccolta ed analisi di requisiti, strategie di
progettazione concettuale, verifica di qualita'.
 Progettazione logica: ristrutturazione degli
schemi E/R, traduzione nel modello
relazionale.
 Tecniche di normalizzazione: forme normali
(Boyce-Codd, terza forma normale),
decomposizione in forma normale.
Contenuti del Corso
Nel corso, forniremo un’introduzione al mondo dei
Sistemi Informativi e delle Basi di dati (DB) da quattro
punti di vista differenti:
Utente  come usare un DB (aggiungere/modificare
informazioni, recuperare informazioni da un DB, etc).
Progettista  come progettare un DB.
Sviluppatore  come sviluppare applicazioni
Web/stand-alone che si interfaccino con un DB [CENNI].
Progettista di DBMS  come e’ fatto un DBMS [CENNI].
Programma del Corso
Nel Web, gran parte dei siti di organizzazioni
ed aziende gestiscono i dati attraverso un DB
gestito da un DBMS (Sito web  Applicazione web).
Programma del Corso
Componenti di un’applicazione web:
 Web-server (HTTP-based)
 Linguaggio di scripting server-side
 DBMS (relazionale)
2. Parametri
1. HTTP request
Browser
(client)
6. HTTP response
3. SQL Query
DBMS
Programma del Corso
Il Web Meta-Tier (MT) contiene un interprete di
linguaggi di scripting server side. Tali linguaggi
dispongono di librerie per:
 Interfacciarsi con un DBMS, ed inserire codice
SQL all’interno di uno script.
 Generare dinamicamente il codice HTML, che
deve essere poi visualizzato sul browser del
client.
Programma del Corso
Linguaggi/Tecnologie di scripting server-side







ASP.NET
PHP
Python + Django
Ruby on Rails
Java Server Pages (JSP) and Java Servlet
Common Gateway Interface (CGI)
…
Programma del Corso
In maniera simile, e’ possibile scrivere
applicazioni stand-alone che si interfacciano
con DB gestiti da un DBMS relazionale.
Codice
Java
SQL query
Dati
Libreria Java Database Connection (JDBC)
Programma del Corso
In questo caso, il codice SQL e’ immerso nel
codice del linguaggio ospite (es. Java).
String url = "jdbc:mysql://hostname/database”;
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection c = DriverManager.getConnection(url,
properties);
…
int id = ... get ID from somewhere ...
String sql = "SELECT Name FROM Users WHERE Id = " + id;
ResultSet rs = st.executeQuery(sql);
Programma del Corso
Parte III: SQL per Applicazioni [cenni]
 Esempi di DBMS: PostgreSQL, MySQL.
 Basi di Dati ed Applicazioni Web.
 SQL e Java: Java Database Connectivity
(JDBC)
Contenuti del Corso
Nel corso, forniremo un’introduzione al mondo dei
Sistemi Informativi e delle Basi di dati (DB) da quattro
punti di vista differenti:
Utente  come usare un DB (aggiungere/modificare
informazioni, recuperare informazioni da un DB, etc).
Progettista  come progettare un DB.
Sviluppatore  come sviluppare applicazioni
Web/stand-alone che si interfaccino con un DB [CENNI].
Progettista di DBMS  come e’ fatto un DBMS [CENNI].
Contenuti del Corso
Q. Come memorizzare i dati di una tabella su
memoria secondaria? Quali strutture dati e
metodologie utilizzare?
FILE1.dat
NomeCorso
Codice
Docente
Basi di dati
0121
M. Di Felice
Programmazione
1213
C. Laneve
Sistemi Operativi
1455
D. Sangiorgi
 Struttura sequenziale
 Struttura ad accesso calcolato (hash)
 Struttura ad albero
0001000
111010
101110
Contenuti del Corso
Alcune operazioni su
DB sono
particolarmente
delicate, e devono
essere gestite in
maniera opportuna,
secondo la regola del
tutto o niente.
Contenuti del Corso
Transazione  unita’ elementare di lavoro in un
DBMS (DBMS transazionali).
Proprieta’ ACIDE delle transazioni:
 Atomicita’
 Consistenza
 Isolamento
 Persistenza
Come garantire tali proprieta’ in un DBMS?
Programma del Corso
Parte IV: Progettazione fisica e Struttura di un
DBMS [cenni]
 Strutture dati per la memorizzazione di tuple
su memoria secondaria.
 Transazioni: proprieta' ed implementazione.
Motivazioni del Corso
Q. Come posso utilizzare le competenze del corso?
# di Offerte di Lavoro
Parola Chiave della Ricerca
Oracle
283
Linux
179
Microsoft
232
.NET
135
Java
236
Database
201
SQL
333
0
50
100
150
200
Numero di risultati
250
300
350
Competenze Professionali
Q. Come posso utilizzare le competenze del corso?
 Database Administrator
 Progettista di Database
 Analista/Sviluppatore SQL
 Database Specialist
…
Obiettivi del Corso
Fonte: Gartner, 2012
Esame del Corso
L’esame consiste di:
 Prova scritta (obbligatoria)
 Progetto (obbligatoria)
 Prova orale (facoltativa)
Calcolo del voto finale (senza orale):
Voto_Finale=0.75* Voto_Scritto + 0.25 * Voto_Progetto
Esame del Corso
Vincoli d’esame (pochi):
 NON sono definiti vincoli di validita' temporale sul
voto del progetto e dell'esame scritto.
 NON c'e' alcuna restrizione sul numero di prove che si
possono sostenere.
 Chi si presenta ad una prova, perde l'eventuale voto
precedentemente acquisito.
 NON e' possibile consultare testi, dispense, appunti,
etc durante lo svolgimento della prova.
Esame del Corso
 Il progetto consiste nella progettazione ed
implementazione di un'applicazione (Web) che
integri un piccolo sistema informativo.
 Il progetto puo' essere svolto individualmente o in
gruppi di max 3 unita'.
 Il progetto puo' essere proposto dal gruppo stesso,
previa approvazione della proposta dal docente.
 Inviare email con subject: "[DB1] Proposta Progetto DB
2013”, indicando i nomi dei partecipanti.
Esame del Corso
 Consegna via email con subject: "[DB2] Consegna
Progetto DB 2013”, allegando: (i) tutti i sorgenti del
progetto; (ii) una breve relazione.
 Date di consegna del progetto per l'a.a. 2012/2013:
1 Febbraio 2013, 1 Marzo 2013, 1 Aprile 2013, 1 Giugno 2013, 1
Luglio 2013, 1 Ottobre 2013, 1 Dicembre 2013.
 In seguito alla consegna, si ricevera' una email dal
docente con la convocazione per la discussione del
progetto, che consiste in una presentazione (tenuta da
tutti i componenti del gruppo) del progetto + demo.
Libri di Testo
 P. Atzeni, S. Ceri, S. Paraboschi, R.
Torlone, Basi di dati: Modelli e
Linguaggi di interrogazione, 3ed,
McGraw-Hill
 P. Atzeni, S. Ceri, S. Paraboschi, R.
Torlone, Basi di dati: Architetture ed
evoluzione, 2ed, McGraw-Hill
Suggerimenti
Seguire le lezioni in aula.
Controllare con regolarita’ la mailing
list ed il sito del corso.
Utilizzare gli orari di ricevimento.
Essere propositivi!