Programmi e siti web dei corsi - Dipartimento di Informatica

annuncio pubblicitario
Algoritmi e strutture di dati Elementi
Crediti: 6
Conoscenze: Concetti fondamentali del progetto ed analisi di algoritmi e di strutture dati efficienti.
Abilità: Analisi e realizzazione di semplici algoritmi
Docente/i: Paola Bonizzoni, Giancarlo Mauri
Programma:
1.
Introduzione
Nozione intuitiva di problema e algoritmo. Insertion sort.
Tecniche di progetto di algoritmi; algoritmi ricorsivi.
L'algoritmo di merge-sort
Analisi di costo degli algoritmi nel caso peggiore e in media.
2.
Gli strumenti matematici
Ordine di grandezza delle funzioni, notazione asintotica
Sommatorie
Equazioni di ricorrenza e relativi metodi risolutivi.
Insiemi, relazioni, funzioni, grafi, alberi
3.
Il problema dell’ordinamento e i principali algoritmi di soluzione
Heapsort
Quicksort
Ordinamento in tempo lineare
Mediano e selezione
4.
Strutture dati elementari e loro implementazioni efficienti
Liste, pile, code
Tabelle hash
Alberi liberi; alberi radicati
Alberi binari di ricerca
Rappresentazione di alberi in memoria
Attraversamento di alberi binari: visita in pre-, post-, inordine
Testi consigliati
T. H. Cormen, C. E. Leiserson, R. L. Rivest, Introduzione agli algoritmi, Jackson Libri.
Modalità di esame: L’esame comprende una prova scritta, il cui superamento è condizione per l’accesso a una
eventuale prova orale.
ANALISI MATEMATICA I (Elementi)
CREDITI: 6
DOCENTI: Gabriella Kuhn , GiancarloTravaglini, Barbara Bacchelli ,
CONOSCENZE:Concetti fondamentali del calcolo differenziale e integrale per funzioni reali di variabile
reale: continuita', derivabilita', approssimazione polinomiale, integrale definito, problema di Cauchy per
equazioni differenziali del primo ordine, a variabili separabili e lineari
ABILITA': Saper utilizzare gli strumenti del calcolo differenziale e integrale: grafico di una funzione,
approssimazione polinomiale, calcolo di integrali definiti e di soluzioni di alcune equazioni differenziali
WEB DEL CORSO:
CONTENUTI:
•
•
•
•
•
•
Funzioni. Dominio, immagine, periodicita', simmetrie, biunivocita', funzione inversa. Limiti di
funzioni. Stime asintotiche. Grafici di funzioni elementari.
Funzioni continue. Teorema degli zeri, proprieta' dei valori intermedi, esistenza di massimi e
minimi. Derivate e regole di derivazione
Teoremi del calcolo differenziale: Fermat, Rolle, Lagrange, De Hopital
Studio del grafico di funzione. La formula di Taylor. Definizione di integrale secondo Riemann.
Teorema della media
Teorema fondamentale del calcolo integrale. Integrazione per parti e per sostituzione, integrazione
di funzioni razionali.
Equazioni differenziali e problema di Cauchy. Equazioni a variabili separabili e lineari del primo
ordine
LIBRI DI TESTO CONSIGLIATI:
•
•
•
•
•
R. Adams - Calcolo differenziale 1, Casa Editrice Ambrosiana
M. Bertsch - Istituzioni di Matematiche, Boringhieri
C.Pagani, S.Salsa - Matematica , Zanichelli
B.Demidovich - Esercizi di Matematica , Zanichelli
S.Salsa, A.Squellati - Esercizi di Matematica, calcolo infinitesimale e algebra lineare, Zanichelli
MODALITA' DI ESAME: Consiste in una prova scritta e una orale. Durante il corso si terranno due prove
scritte parziali, il superamento delle quali fara' accedere direttamente alla prova orale
NOTE: G. Kuhn (corso a: A-D), G. Travaglini (corso b: E-O), B. Bacchelli (corso c: P-Z)
Architettura degli elaboratori 1 (codice 011), anno 2001/02
Crediti
12
Conoscenze
Lo studente apprende nozioni introduttive sul funzionamento dei calcolatori e della catena programmativa
Abilità
Comprendere e valutare gli avanzamenti tecnologici e architetturali. Comprendere le problematiche di valutazione delle
prestazioni di un calcolatore. Programmazione assembly di base.
Docenti
R. Bisiani, M. Dominoni, C. Ferretti, D. G. Sorrenti, con la collaborazione di dr. F. Marchese, S. Gambaré, U. Jocher, P.
Mereghetti, S. Ruocco.
Programma
1.
Concetti
generali
e
basi
di
aritmentica
intera
Questo materiale è già stato in massima parte coperto dal corso di Informatica Generale. Dato cheè critico per
questo corso, verrà brevemente ripreso. Ci si aspetta quindi una conoscenza più approfondita di quella
acquisita in Informatica Generale. Ci si aspetta familiarità con le unità di misura elementari della fisica e con
le rappresentazioni dei numeri usate in informatica: binaria ed esadecimale. Ci si aspetta che lo studente sappia
convertire semplici numeri tra basi diverse e tra rappresentazioni intere e virgola mobile.
2.
Nozioni di logica booleana e rassegna (analisi) di alcune circuiterie di riferimento
In questa parte si spiegano i meccanismi di base di funzionamento dei circuiti che sono usati per costruire i
calcolatori elettronici. Questi circuiti non sono spiegati dal punto di vista elettronico ma come circuiti logici.
Questo materiale è assolutamente necessario per capire la parte seguente che invece spiega il vero e proprio
funzionamento dei calcolatori elettronici. L’enfasi non è sulla sintesi di circuiti, ma nell’analisi. del loro
funzionamento. (Porte logiche e tabelle di verità, circuiti combinatori, clock, circuiti sequenziali, circuiti di
memoria).
3.
Funzionamento
di
un
calcolatore
a
livello
di
registri
In questa parte si inizia ad illustrare la struttura interna dei calcolatori e della cpu. Si passa poi alla
elencazione dei circutiti più rilevanti presenti all'interno della cpu, tra cui spicca il register file.
4.
Rassegna del set di istruzioni della macchina di riferimento del corso (mips r2000/3000)
In questa parte si illustrano i formati delle varie istruzioni, evidenziando le ragioni ed i compromessi adottati
dal progettista e si presentano estesi esempi di uso delle stesse nella compilazione di strutture programmative in
linguaggio di alto livello (C). Particolare attenzione viene data al supporto da parte della cpu alla esecuzione
efficiente dei salti a procedura.
5.
Ciclo
fondamentale
di
funzionamento
della
In questa parte si illustra il ciclo fondamentale di funzionamento della cpu (fetch / decode / execute).
6.
cpu
Percorso dei dati e sua implementazione in versione a singolo ciclo di clock
In questa parte si illustra il control path della macchina di riferimento e si dettaglia una possibile
implementazione semplificata della unità di controllo, caratterizzata dal fatto che tutte le istruzioni hanno la
stessa durata, determinata dalla più lenta tra queste.
7.
Organizzazione
della
memoria
e
gerarchie
Le gerarchie di memoria sono un meccanismo fondamentale per il funzionamento dei calcolatori elettronici.
Questa parte è volta a far comprendere come un solo meccanismo è alla base, con parametri diversi, di molti
componenti di un calcolatore elettronico. Ci si aspetta che gli studenti capiscano il funzionamento di cache,
memoria virtuale e TLB; inoltre si richiede padronanza dei parametri fondamentali che controllano il
funzionamento di queste strutture.
8.
Aritmentica in virgola mobile
Adottando particolari convenzioni standard e' possibile codificare un numero in virgolamobile nei bit di una
parola di memoria. Lo standard preso inconsiderazione è IEEE 754, e lo si presenta descrivendo la notazione
mantissa esponente ed alcuni criteri di approssimazione volti a conservare il maggior numero possibile di cifre
significative nei calcoli.
9.
Tecniche elementari di rilevamento e correzione degli errori
Alcuni dispositivi di memoria contengono circuiti che controllano la correttezza dei dati conservati.
Implementano tecniche di codifica dei dati che utilizzano dei bit di ridondanza. Si presentano le piu' semplici di
queste tecniche, come quella basata sul bit di parità, e alcune formule che definiscono quantitativamente la
bontà di un codice nel rilevare o correggere errori.
10.
Tecniche di gestione dell'ingresso - uscita (controllo di programma, interruzione di programma, accesso diretto
alla memoria)
I dispositivi di ingresso uscita di un calcolatore possono colloquiare con il processore in diversi modi, a
seconda dell'architettura della macchina: nel modo più semplice, a "controllo di programma", il processore
continua ad interrogare la periferica per verificare la possibilità di trasferire dati. Altre modalità più evolute
sono però disponibili, se si dispone di hardware in grado di supportarle: con riconoscimento da parte del
processore di un segnale di interruzione proveniente dalla periferica, e con la possibilità per la periferica di
scambiare i dati direttamente con la memoria. Di queste alternative vengono presentati principi, vantaggi e
svantaggi, e si guida lo studente a capire quale tipo di periferiche è adatto ad ognuna di esse.
11.
Nozioni di base di concorrenza e di servizi al sistema operativo
Alcune parti dell'architettura hardware di un processore, e di un elaboratore nel suo complesso, sono progettate
in modo da assecondare le esigenze di funzionamento di un moderno sistema operativo. Come esempi di questi
servizi, permessi dalla struttura hardware, si delineano: la possibilita' di alternare in esecuzione concorrente
nel processore diversi programmi, la separazione tra l'esecuzione dei programmi degli utenti e l'esecuzione
delle parti del sistema operativo, e alcuni dettagli dei registri di controllo del processore utili all'avvio e al
funzionamento del sistema operativo stesso.
Testi consigliati
•
•
David A. Patterson and John L. Hennessy, "Computer Organization and Design: The
Hardware/Software Interface", 2nd ed., , Morgan & Kaufmann, 1997, ISBN 1-55860-428-6
edizione italiana:
David A. Patterson and John L. Hennessy, "Struttura, Organizzazione e Progetto dei Calcolatori",
Jackson Libri, collana Università, ISBN 8825615175
Andrew S. Tanenbaum, "Structured compter organization", 4th ed., Prentice-Hall International (UK),
1999, ISBN 0-13-020435-8
edizione italiana:
Andrew S. Tanenbaum, "Architettura dei computer. Un approccio strutturato", UTET (Torino), 2000
Modalità di erogazione del corso e degli esami
Il corso è leggermente cambiato di contenuti rispetto allo scorso anno (corso di codice 04n), in particolare nella
trattazione della tematica "Percorso dei dati e sua implementazione in versione a singolo ciclo di clock", che in questo
anno è svolta come sul testo "Computer Organization and Design: The Hardware/Software Interface", capitolo 5,
paragrafo 5.3.
Durante il corso verranno svolte delle prove (compitini); per essere ammessi alle prove è richiesta la frequenza
obbligatoria al 70% delle esercitazioni in laboratorio.
Le lezioni dei due turni hanno contenuti identici, per evitare affollamento si richiede di attenersi ai turni.
Gli argomenti trattati sono tutti coperti a un livello di preparazione medio/alto dai testi indicati. Le lezioni sono quindi
estremamente utili per facilitare lo studio degli argomenti. Le esercitazioni sono critiche per ottenere il livello di
comprensione degli argomenti e la manualità necessari per superare l’esame.
Gli esami (e le prove in corso d'anno) sono costituiti da una serie di domande erogate in aula informatica con un
programma automatico di test. Le domande possono essere sia a risposta multipla che a risposta libera e comprendono
la correzione di semplici programmi nell'assembly della macchina di riferimento.
Link al web del corso
http://old.disco.unimib.it/architettura1
Basi di Dati e Sistemi Informativi (elementi)
Crediti: 6
Conoscenze: Il corso intende presentare i concetti fondamentali sulle basi di dati, sui relativi
sistemi di gestione e elementi introduttivi ai sistemi informativi.
Abilità: Progettare, realizzare e gestire una base di dati collocandola nel contesto più ampio dei
sistemi informativi.
Docenti: Carlo Mereghetti, Raimondo Schettini
Programma
Introduzione. Concetti generali. Sistemi informativi, sistemi organizzativi e sistemi
informatici. Tipologie ed esempi di sistemi informativi. Concetto di informazione e dato.
Introduzione a basi di dati e DBMS, modello dei dati, concetto di schema e istanza.
Indipendenza logica e fisica dei dati e tipologia di linguaggi per basi di dati.
Il modello relazionale. Modelli logici. Modello relazionale: relazioni e tabelle, schemi ed
istanze, informazione incompleta e valori nulli, chiavi, vincoli di integrità.
Linguaggi di interrogazione. Algebra relazionale: operatori di base e operatori derivati.
Interrogazioni in algebra relazionale ed equivalenza di espressioni algebriche.
SQL. Definizione dei dati in SQL. Definizione di interrogazioni in SQL: interrogazioni
semplici, con operatori insiemistici, nidificate e con raggruppamento. Operazioni di
inserimento, modifica e cancellazione. Definizione di viste. Cenni sull’integrazione di SQL
nei linguaggi di programmazione.
La progettazione concettuale. Metodologie di progettazione di basi di dati. Il modello
Entità-Relazione.
La progettazione logica. Ristrutturazione schemi E-R: eliminazione delle gerarchie, degli
attributi composti e multivalore. Traduzione da schemi E-R a schemi relazionali.
Testi consigliati
•
P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, “Basi di Dati: Concetti, Linguaggi e
Architetture”,
Seconda Edizione, McGraw-Hill Italia, 1999.
•
Materiale didattico a disposizione ai siti del corso (vedi link sottostante).
Modalità di esame. L’esame consiste di una prova scritta, eventualmente sostituibile da prove in
itinere, e di una prova orale.
Link al corso: http://old.disco.unimib.it/elementibasidati
Informatica Generale
Crediti: 6
Conoscenze: Organizzazione generale del calcolatore, comprendendo sia l’hardware che il software. Rappresentazione
digitale dell’informazione. Organizzazione delle reti di calcolatori, del protocollo internet e di alcuni protocolli
applicativi.
Abilità: Utilizzo del calcolatore per quanto riguarda i servizi fondamentali offerti dal sistema operativo, alcuni
strumenti di produttività (fogli elettronici e database). Testing (a livello elementare) di programmi.
Docenti: Mauro Pezzè, Giovani Denaro, Luigi Lavazza
Programma:
Parte I:
La struttura del calcolatore e della rete
(come è fatto un calcolatore)
‰
l’evoluzione dell’informatica (cenni)
‰
la struttura modulare di un calcolatore e il concetto di astrazione
o il livello dei dispositivi
o struttura di un calcolatore
o CPU, memoria, periferiche e bus
‰
La rappresentazione dell’informazione
o rappresentazione binaria, ottale e esadecimale
o rappresentazione in modulo e segno
o rappresentazione in complemento a 2
o rappresentazione in eccesso
o rappresentazione in virgola mobile
o lo standard IEEE 754
o rappresentazione di informazione non numerica: caratteri, immagini, suono
‰
La rete
o
o
o
o
o
o
o
o
o
Parte II:
reti e topologie
commutazione a circuito e a pacchetto
protocolli di comunicazione e astrazione
i livelli ISO OSI
Internet
i protocolli IP, TCP e UDP
il modello client/server
protocolli applicativi: Telnet, FTP, HTTP, SMTP
WWW e URL
Il calcolatore come strumento di programmazione
(come si usa il calcolatore per programmare)
‰
uso di base per la programmazione
o struttura del file system
o editor
o compilatori ed interpreti
‰
verifica di un programma
o errori statici e dinamici
o test e debugging
Parte III:
‰
Il calcolatore come strumento di servizio
(come si usa un calcolatore per aumentare la produttività)
principali strumenti di produttività
o foglio elettronico
o base di dati
Testi consigliati:
1. G. Pelagatti, “Fondamenti di Informatica II – Programmazione in ambiente di rete”, Progetto Leonardo, Bologna,
Aprile 1999 (cap. 1, 5, 6)
2. A.S. Tanenbaum, J.R.Goodman, “Architettura dei computer – Un approccio strutturato”, 4° edizione, UTET libreria,
Torino, 2000 (cap. 1 e 2 e appendici)
3. Lucidi presentati a lezione, disponibili su www.lta.disco.unimib.it
Modalità di esame: Prova scritta
Link al corso: www.lta.disco.unimib.it/InfoGen/InfGen.htm
Matematica Discreta (Elementi) 2001-2002
Crediti: 6
Conoscenze: conoscenze di matematica di base (Scuola Superiore)
Abilità: uso delle tecniche di logica in un ragionamento matematico; tecniche di dimostrazione; linguaggio degli
insiemi; nozioni introduttive su relazioni, grafi e reticoli; insieme delle classi di resto modulo n; matrici e sistemi
lineari:
Docenti: Docenti: Proff. M. Cazzola, F. Dalla Volta, M. Rigoli)
Programma:
1. Elementi di logica delle proposizioni:
Cenni di logica formale. Operazioni tra proposizioni: congiunzione, disgiunzione, o esclusivo, implicazione materiale,
doppia implicazione, implicazione contronominale, proposizioni composte. Equivalenza di proposizioni: tautologie e
contraddizioni, dimostrazioni dell'equivalenza di proposizioni. Quantificatori: quantificatore universale e quantificatore
esistenziale; verità e falsità di proposizioni contenenti quantificatori, quantificatori multipli, negazione di un
quantificatore.
Tecniche di dimostrazione: deduzioni logiche fondamentali, dimostrazioni dirette e indirette, dimostrazioni per assurdo,
dimostrazioni per induzione (prima e seconda forma). Esempi di deduzioni errate.
2 Insiemi:
Come si denota un insieme, operazioni tra gli insiemi. Corrispondenze e applicazioni. Prodotto cartesiano,
corrispondenze e relazioni. Applicazioni: iniettività, suriettività, biiettività. Applicazioni composte. Cardinalità di
insiemi .
3 Numeri naturali e numeri interi:
Divisione tra numeri interi, divisori e multipli, numeri primi (teorema fondamentale dell'aritmetica), esistenza di infiniti
primi. Massimo comun divisore e minimo comune multiplo, algoritmo euclideo per il calcolo del MCD, identità di
Bezout. Principio di induzione: prima e seconda forma.
4 Insiemi e relazioni:
Grafo di una relazione. Equivalenze e partizioni, insieme quoziente. Insieme delle classi di resto modulo n.
Ordinamenti: massimo, minimo, elemento massimale, elemento minimale, maggiorante, minorante, estremo inferiore,
estremo superiore..
5 Grafi e strutture algebriche
Reticoli, reticoli booleani. Cammini e circuiti euleriani, alberi e grafi piani. Insiemi dotati di una operazione: gruppi.
Insiemi dotati di più operazioni: anelli, campi. Esempi.
6 Matrici e sistemi lineari:
Matrici a coefficienti in un campo, somma e prodotto di matrici
Sistemi lineari a coefficienti in un campo: Sistemi equivalenti, discussione sull'esistenza delle soluzioni di un sistema
lineare: metodo di triangolazione di Gauss.
Testi consigliati:
A. Facchini, Algebra e matematica discreta, Decibel--Zanichelli''
K. H. Rosen, Discrete Mathematics and Its Applications, McGraw-Hill'' (in particolare per gli elementi di logica)
Modalità di esame: scritto e orale
Link al corso: www.matapp.unimib.it/~marina/did/mdis01
Programmazione (Elementi + Complementi)
Crediti: 12
Conoscenze:
Concetti base di programmazione. Elementi di programmazione ad oggetti, elementi del linguaggio
Java.
Abilità:
Alla fine del corso lo studente dovrà essere capace di progettare e sviluppare semplici programmi
in Java.
Docenti: Francesca Arcelli, Lucia Pomello, Francesco Tisato
Programma:
1.
Struttura logica di un elaboratore e codifica dell'informazione. Gerarchia dei
linguaggi di programmazione, compilatori e interpreti. La Java Virtual Machine. Algoritmi e
programmi, il paradigma ad oggetti.
2.
Tipi di dati primitivi. Variabili, dichiarazioni e assegnamenti. Espressioni e
valutazione. Type checking. Stringhe. Ingresso/uscita.
3.
Strutture di controllo selettive e iterative. Esempi elementari di algoritmi.
4.
Programmazione ad oggetti vs programmazione tradizionale. Information hiding e
incapsulamento. Definizione di classe e creazione di oggetti/istanze.
5.
Metodi, definizione e invocazione. Parametri di tipo primitivo. Modificatore di
visibilita' sui metodi.
6.
Precondizioni e postcondizioni per i metodi. Attributi privati alla classe e
metodi di accesso. Costruttori. Overloading di metodi e di costruttori.
7.
Metodi che accettano in ingresso oggetti e che restituiscono oggetti. Array di tipi
primitivi e di reference.
8.
Ereditarietà singola e multipla. La classe Object. Visibilità per attributi e metodi.
Costruttori.
9.
Le classi astratte e i metodi astratti. Polimorfismo e override di metodi.
10.
Interfacce. Metodi di classe. Attributi di classe.
11.
Lo sviluppo di semplici progetti.
Testi consigliati:
Walter Savitch, Java: An Introduction to Computer Science & Programming, Prentice Hall,
1998
Arnold Gosling, Java - Didattica e Programmazione, Addison Wesley, 1997
J. Lewis, W. Loftus, JAVA, Fondamenti di Progettazione del software, Addison Wesley,
2001.
Modalità di esame:
L'esame si articola in una prova scritta teorico - pratica e in un colloquio orale. Vengono
inoltre svolte prove intermedie il cui superamento con esito positivo comporta l'esonero dalla prova
scritta.
Link al corso: http://mars.sal.disco.unimib.it/~p1-2001/
Scarica