LAUREA IN INFORMATICA L’Informatica è una disciplina che si occupa degli aspetti scientifici ed organizzativi relativi alla memorizzazione, rappresentazione ed elaborazione dell’informazione. Poiché l’utilizzo di strumenti informatici si è ormai diffuso in molti e svariati ambiti sia scientifici che applicativi, lo spazio per lo sviluppo di nuove metodologie di analisi e di progettazione di sistemi informatici è sempre più ampio, così come è più che mai attuale l’individuazione di nuove aree applicative emergenti. Tradizionalmente, l’attività di ricerca dell’informatico è stata quella della progettazione, analisi e gestione di complessi sistemi informatici, con particolare enfasi per le problematiche del software. L’informatica ha infatti giocato un ruolo estremamente significativo nell’automazione gestionale ed amministrativa del settore dei servizi (in particolare quelli bancari) e nella gestione e controllo di processi industriali. Sebbene tali attività e settori di applicazione continuino ad avere il ruolo di utenti privilegiati nei confronti dei sistemi informatici, nuovi orizzonti si stanno aprendo sia per l’attività di ricerca e sviluppo che per le attività applicative. La diffusione delle reti informative (ivi compreso il “fenomeno” Internet) ha inoltre aperto nuove e stimolanti problematiche relative allo sviluppo di sistemi in cui gli utenti possono fruire di servizi forniti tramite elaboratori che si trovano in luoghi geograficamente lontani. In quasi tutti i settori, l’impressionante ritmo di crescita della quantità di informazione disponibile, il crescente livello di sofisticazione dei problemi affrontati, e l’allargamento a macchia d’olio delle tipologie di utenti stanno ponendo nuove sfide all’informatica odierna: da un lato, occorrono metodologie in grado di sfruttare appieno una sempre maggiore potenza di calcolo, dall’altro, si richiede che i sistemi informatici passino dal ruolo passivo di semplice memorizzazione ed esecuzione ad un ruolo più attivo, in grado di offrire all’utente strumenti propositivi ed “intelligenti”. Di conseguenza, anche il ruolo dell’informatico tende a mutare: la sua attività, pur mantenendo una fisionomia autonoma, tenderà sempre più a configurarsi come una delle componenti integrate di un progetto pluridisciplinare. Alcuni esempi di settori emergenti sono riportati qui di seguito. Reti Informative e Telecomunicazioni — L’integrazione tra metodologie informatiche e tecnologie di telecomunicazione ha aperto la strada alla diffusione delle reti informative, siano esse locali, nazionali o sovranazionali (per esempio Internet). Questo fenomeno, che sta cambiando radicalmente il modo di comunicare personale ed istituzionale, pone problemi informatici formidabili: dalla sicurezza delle informazioni che transitano nelle reti all’autenticazione delle transazioni, dalla progettazione di agenti intelligenti, che aiutino l’utente nel localizzare e scegliere le informazioni, allo sviluppo di metodi automatici per la creazione di indici, per la categorizzazione di argomenti e per l’estrazione automatica di informazioni da testi o immagini. Supporto alle Decisioni ed Intelligenza Artificiale — Nuove opportunità sono aperte allo sviluppo di strumenti di supporto ad attività decisionali, di progetto ed analisi, che non sono affrontabili in termini puramente algoritmici, ma richiedono adeguate capacità sia di rappresentazione della conoscenza che di rielaborazione “intelligente” della stessa. Interazione Uomo-Macchina — L’uso crescente di strumenti informatici da parte di utenti non informatici (ad esempio dovuto alla ampia diffusione di Internet) ha posto in evidenza la necessità di nuove forme di interazione uomo -macchina e di strumenti di programmazione utilizzabili anche da non esperti. Recenti progressi nello sviluppo di interfacce grafiche e multimediali stanno aprendo nuove possibilità di applicazione e coinvolgendo nuove fasce di utenza. In questo ambito si inquadra anche la problematica della personalizzazione degli strumenti informatici. Elaborazione Parallela — Alcuni settori tecnico-scientifici stanno affrontando problemi la cui soluzione necessita di una grandissima potenza di elaborazione, normalmente non ottenibile con sistemi tradizionali. A questo scopo, lo sviluppo di calcolatori ad architettura parallela, l’utilizzo di reti di calcolatori (ad architettura tradizionale) come piattaforma di esecuzione per applicazioni parallele/distribuite, la progettazione di software in grado di gestire efficacemente sistemi di calcolo ad elevato parallelismo sono aspetti di primaria importanza, non solo per la crescita del settore informatico ma anche di numerose altre discipline. Aree Multidisciplinari Emergenti — Negli ultimi anni si è affermata la necessità. in molti settori scientifici e applicativi, di sviluppare metodologie informatiche mirate, in grado di risolvere classi di problemi specifici, sfruttando in modo efficace conoscenze proprie del settore. Come esempi, possiamo citare lo studio del DNA in Biologia Molecolare, le tematiche relative alle biblioteche digitali, l’analisi del linguaggio naturale per il trattamento automatico di testi, l’elaborazione automatica di attività cognitive umane, la progettazione di metodologie di insegnamento innovative. LA RICERCA IN INFORMATICA Il conseguimento di risultati soddisfacenti nelle aree sopra menzionate è possibile solo se si hanno a disposizione metodologie informatiche di nuova concezione. A questo proposito rivestono notevole importanza lo sviluppo di nuovi linguaggi ed approcci per la programmazione, la formalizzazione di modelli computazionali e la loro valutazione, il raggiungimento di progressi sostanziali nella rappresentazione di dati e conoscenza e nei meccanismi di ragionamento, la progettazione di sistemi adattabili e flessibili, dotati di capacità di apprendimento. SBOCCHI PROFESSIONALI Il nuovo Corso di Laurea forma specialisti nei diversi settori dell’Informatica, con particolare riguardo alle figure di: q Progettisti di sistemi informatici che operano presso enti ed aziende che utilizzano le tecnologie dell’informazione nel loro settore specifico (aziende fornitrici di servizi quali banche ed assicurazioni, industrie manifatturiere, etc.). q Responsabili di servizi informatizzati in aziende ed enti pubblici e privati (centri elaborazione dati — CED, Servizi Informativi, etc. …). q Specialisti nell’area della progettazione e gestione di reti che trovano la loro collocazione sia in aziende dotate di una “intranet” sia in società di consulenza in questo settore. q Progettista e gestore di servizi su Web q Specialisti nell’area della progettazione software, che trovano la loro collocazione presso le aziende costruttrici di software (software house). q Ricercatori che possono operare sia nella ricerca di base che in quella applicata presso Università, Enti di ricerca pubblici e privati, laboratori industriali di ricercasviluppo. La Laurea in Informatica apre anche la strada all’insegnamento di materie informatiche nelle scuole secondarie superiori e dà accesso a concorsi per posti di tecnico di elaborazione dati presso la Pubblica Amministrazione. Il Corso di Laurea in Informatica di Alessandria e di Novara, specificatamente, pone un particolare accento sulle tematiche relative alle reti ed allo sviluppo di sistemi informativi per il trattamento dell’informazione. CORSO DI LAUREA IN INFORMATICA Il nuovo corso di laurea in informatica ha durata triennale, in conformità con il nuovo ordinamento universitario, ed è attivato presso le sedi di Alessandria e Novara. Nell’A.A. 2001/2002 presso la sede di Novara saranno attivati i primi due anni del nuovo corso di laurea. L’organizzazione didattica consiste di un certo numero di moduli, ciascuno dei quali permette di acquisire tra i due e i cinque Crediti Formativi Universitari (CFU). I moduli previsti in ogni anno valgono complessivamente 60 CFU. Alcuni moduli sono fra loro legati, nel senso che l’esito degli esami di questi moduli (solitamente uno di teoria e uno di laboratorio sullo stesso argomento) viene riassunto in un unico voto sul libretto: naturalmente in questo caso il numero di crediti ottenuti con la registrazione del voto sarà uguale alla somma dei crediti dei moduli corrispondenti. Nel terzo anno, 15 CFU sono a scelta dello studente, cioè lo studente può decidere di acquisire tali crediti con corsi a sua scelta, eventualmente anche corsi offerti da altri corsi di laurea, anche in altre facoltà (anche al di fuori dell’Ateneo). Si consiglia di effettuare una scelta che permetta di completare le competenze informatiche già acquis ite, scegliendo uno fra i tanti moduli complementari offerti dal corso di laurea. Infine una parte dei crediti del terzo anno sono riservati allo svolgimento di uno stage, normalmente svolto in una azienda, e alla stesura della tesi di laurea, una dissertazione scritta in cui lo studente presenta i risultati di un lavoro teorico e/o sperimentale svolto sotto la supervisione di un docente e collegato allo stage. Per l'ammissione all'esame di laurea è necessario aver raggiunto 175 crediti. Segue un piano di studi consigliato, che riporta i corsi offerti anno per anno. Nella tabella per ciascun corso è specificato sulla destra il corrispondente numero di crediti (CFU). Lo studente può scegliere di presentare un piano di studi libero diverso da quello consigliato, ma in questo caso deve ottenere l’approvazione da parte del Consiglio di Corso di Laurea. I anno: Algebra Geometria Analisi Matematica I Architettura degli Elaboratori I Architettura degli Elaboratori II e Laboratorio Programmazione I e Laboratorio Programmazione II Fisica Calcolo delle Probabilità Economia aziendale o Sociologia del Lavoro Lingua Straniera II anno: Analisi Matematica II Algoritmi e Strutture Dati I Algoritmi e Strutture Dati II e Laboratorio Sistemi Operativi I e Laboratorio Sistemi Operativi II Basi di Dati e Sistemi Informativi I Basi di Dati e Sistemi Informativi II Basi di Dati e Sistemi Informativi: Sperimentazioni Sistemi di Elaborazione: Reti di Calcolatori I 2 CFU 5 CFU 5 CFU 5 CFU 5 CFU+ 5 CFU Lab 5 CFU+ 5 CFU Lab 5 CFU 5 CFU 4 CFU 5 CFU 5 CFU 5 CFU 5 CFU 5CFU+ 5CFULab 5CFU+ 5CFU Lab 5 CFU 5 CFU 5 CFU 5 CFU 5 CFU Statistica 4 CFU III anno: Laboratorio di informatica: Programmazione ad Oggetti Ingegneria del Software Intelligenza artificiale Sistemi di Elaborazione: Reti di Calcolatori II e Laboratorio Linguaggi di programmazione: Traduttori I 5 CFU 5 CFU 5 CFU 5 CFU+ 5 CFU Lab 5 CFU Nota.1: Il corso di Economia Aziendale (o quello di Sociologia del Lavoro) e’ in fase di definizione. Tale corso dovra’ anche essere seguito dagli studenti iscritti al secondo ano nell’a.a. 2001-2002 (non avendo tali studenti potuto frequentare tale corso al primo anno). Nota.2: Il corso di Statistica non verra’ attivato nell’a.a. 2001-2002 (sara’ attivato nel 2002-2003). I restanti 29 crediti necessari per raggiungere i 180 crediti della laurea di primo livello sono così distribuiti: 15 crediti di corsi a scelta, 9 crediti per lo stage, 5 crediti per la preparazione della tesi di laurea. I corsi a scelta possono essere liberamente indicati dallo studente che può decidere eventualmente di sceglierli anche tra corsi offerti da altre facoltà. È consigliabile usare questi 15 crediti per completare le competenze in informatica, scegliendo tre corsi da 5 crediti tra quelli riportati nel seguito. Non essendo attualmente attivato a Novara il terzo anno della nuova Laurea, e’ possibile che tale elenco di corsi venga modificato (e/o ampliato) il prossimo anno. Intelligenza artificiale: Analisi dati intelligente Linguaggi di Programmazione: Linguaggi per il Web Linguaggi di Programmazione: Servizi Web Sistemi di Elaborazione: Sicurezza degli Elaboratori Sistemi di Elaborazione: Simulazione Ricerca operativa 5 CFU 5 CFU 5 CFU 5 CFU 5 CFU 5 CFU CORSI ATTIVATI NELL’A.A. 2001-2002 E SUDDIVISIONE IN TRIMESTRI Nell’a.a. 2001-2002 verranno attivati a Novara il primo ed il secondo anno del nuovo corso di Laurea in Informatica. I corsi saranno organizzati in trimestri secondo il seguente dettaglio: I ANNO 1º Trimestre 2º Trimestre Analisi Matem I 5 Fisica 5 Algebra 2 Geometria (M) 5 5 Architettura degli Elaboratori – I Programmazione II 5 Programmazione I 3º Trimestre Architettura degli Elaboratori – II Lab. di Informatica: Architettura degli Elaboratori (FAUSER) Calcolo delle Probabilità Lingua straniera 5 5 4 Lab. di 5 5 5 Informatica: Programmazione * E’ previsto al primo anno anche un corso di 5 crediti (40 ore circa) di sociologia del lavoro o economia aziendale, ancora in fase di definizione II ANNO 1º Trimestre 2º Trimestre Basi di Dati e Sistemi Informativi I : Sperimentazioni 3º Trimestre Analisi Matem. II 5 Sistemi Operativi I 5 Lab. di Informatica: Sistemi Operativi Basi di Dati e Sistemi Informativi - I : Fondamenti 5 Sistemi Operativi II 5 5 Basi di Dati e Sistemi Informativi II 5 Algoritmi e Strutture Dati - I 5 5 Algoritmi e Strutture Dati II Lab. di Informatica: Algoritmi e Strutture Dati Sistemi di Elaborazione: Reti di Calcolatori I * E’ previsto al secondo anno anche un corso di 40 ore circa di sociologia del lavoro o economia aziendale, ancora in fase di definizione STAGE E TESI DI LAUREA 5 5 5 Il nuovo corso di laurea prevede che nel terzo anno l’ultimo trimestre sia dedicato ad uno stage, da svolgere preferibilmente in una azienda che abbia stipulato una convenzione con l’università a questo scopo. È comunque possibile svolgere lo stage anche all’interno della struttura universitaria. Al termine dello stage lo studente prepara una dissertazione scritta sugli argomenti affrontati durante lo svolgimento dello stage ed eventualmente approfonditi secondo le indicazioni del relatore. Relatore della tesi può essere qualunque docente ufficiale di un corso offerto dal Corso di Laurea in Informatica. In generale la scelta dell'argomento della tesi viene concordato con il relatore quando lo studente inizia il terzo anno. Si consiglia agli studenti di affrontare la scelta e lo svolgimento della tesi solo dopo aver sostenuto con successo la maggior parte degli esami. In generale la scelta dell'argomento della tesi viene concordato con il relatore quando lo studente inizia il terzo anno. Si consiglia agli studenti di affrontare la scelta e lo svolgimento della tesi solo dopo aver sostenuto con successo la maggior parte degli esami. AVVERTENZE Non esiste ovviamente alcuna ricetta che garantisca il successo negli studi di Informatica (come di qualunque altro corso di laurea). Tuttavia vale la pena di sottolineare che il Corso di Laurea in Informatica (cosí come altri corsi di laurea tecnico-sceintifici) richiede attitudini e interesse per il settore fisico-matematico. Inoltre, il corso di laurea richiede capacità di analisi e organizzazione logica, nonché interesse verso gli aspetti progettuali e realizzativi. Infatti la componente sperimentale volta a sviluppare le capacità di analisi e decomposizione di problemi, di progettazione di una sistema software in grado di risolvere un problema, e l'implementazione e la verifica di tale sistema, svolgono un ruolo importante nel corso di laurea; queste attività, in molti casi svolte all'interno dei laboratori, richiedono un notevole impegno di tempo. L'ordine dei corsi all'interno dei diversi anni di corso è stato studiato in mo do da fornire una visione organica del settore. Tale visione può essere gravemente compromessa se gli studenti non si mantengono al passo con gli esami e i corsi. Al fine di ridurre il piú possibile questa evenienza, è bene seguire con attenzione corsi e laboratori sin dal primo giorno di lezione, acquisendo e approfondendo le nozioni man mano che queste vengono introdotte nei corsi. Una precedente esperienza di uso dei calcolatori e/o conoscenza di linguaggi di programmazione non è necessaria per affrontare il corso di laurea, anche se può facilitare l'attività sperimentale in laboratorio nei primi mesi. Risulta invece indispensabile per lo studente la capacità di leggere testi tecnici in lingua inglese, visto che gran parte del materiale didattico (e la quasi totalità dei manuali) è in lingua inglese. AGGIORNAMENTI ALLA GUIDA DELLO STUDENTE Una versione aggiornata della Guida dello Studente (contenente informazioni relative sia alla sede di Alessandria che di Novara) sarà sempre disponibile su Internet alla URL http://www.mfn.unipmn.it/~informat PROGRAMMA DEI CORSI ALGEBRA (2 CFU) Sede di Novara: Prof. R. Catenacci – I anno, I trimestre Lo scopo del corso è quello di far acquisire agli studenti il linguaggio e i concetti dell'algebra necessari per proseguire gli studi, partendo dalla revisione, l'approfondimento e l'inquadramento dei contenuti studiati nella scuola secondaria per arrivare alle nozioni astratte dell'algebra. Modalità d'esame: sono previste una prova scritta e una orale. La prova scritta può essere sostituita dalle prove intermedie svolte durante il periodo delle lezioni. Richiami di insiemistica, numeri complessi e polinomi; elementi di calcolo combinatorio. Libro di testo: saranno distribuiti appunti del docente. ALGORITMI E STRUTTURE DATI I (5 CFU) Sede di Novara: Prof. P. Terenziani – II anno, II trimestre Teoria dei limiti e crescita asintotica delle funzioni. Notazione O(f(n)). Equazioni di ricorrenza. Algoritmi numerici elementari: algoritmo di Euclide per il calcolo del MCD, algoritmo di Eratostene per la generazione dei numeri primi, algoritmo ricorsivo per il prodotto di polinomi. Algoritmi di "pattern matching" su stringhe. Strutture dati elementari: pile e code. Alberi binari di ricerca. Alberi binari bilanciati. Testo consigliato: T.H. Cormen, C.E. Leiserson, R.L. Rivest, "Introduzione agli algoritmi", Seconda edizione, Jackson libri, Milano 1999. Propedeuticità: Prima di affrontare questo corso gli studenti devono avere seguito i corsi di Programmazione I e Programmazione II. ALGORITMI E STRUTTURE DATI II (5 CFU) E LABORATORIO (5CFU) Sede di Novara: Prof. L. Giordano, II anno, III trimestre Argomenti trattati: Algoritmi su grafi: q rappresentazione di grafi, q visite in ampiezza e profondita’, q ordinamento topologico, q alberi di copertura minima, q calcolo di cammini minimi q applicazioni grafi Programmazione Dinamica: q elementi di base di programmazione dinamica q esempi di algoritmi (prodotto di matrici, parentizzazione ottimale, ecc…) Testo consigliato: T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduction to Algorithms, MIT Press, 1990 (versione italiana, volume 2, Jackson Libri). Laboratorio Sede di Novara: Prof. L. Giordano, II anno, III trimestre Scopo del corso: Il corso ha l'obiettivo di familiarizzare lo studente con l’implementazione pratica di algoritmi e strutture dati. Dopo aver ripreso le nozioni di analisi degli algoritmi, il corso illustrerà alcune strutture dati fondamentali e la loro implementazione in linguaggio C. Si darà anche un cenno sulle tecniche generali di progettazione degli algoritmi. Tutte le lezioni saranno accompagnate da esercitazioni in laboratorio. Argomenti trattati: Tipi di dati astratti: Liste, Alberi, Grafi orientati e non orientati: Definizioni di base, Metodi di rappresentazione, Operazioni. Insiemi e dizionari: Definizioni e operazioni di base, implementazioni semplici (liste, hash table e code di priorità) e avanzate (alberi 2-3). Cenni sugli MF-Set. Tecniche di progettazione (classi di algoritmi): Divide-et-Impera, Programmazione dinamica, Algoritmi Greedy. ANALISI MATEMATICA I (5 CFU) Sede di Novara: Dott. G. Arioli, I anno, I trimestre Il corso si compone di lezioni teoriche e di esercitazioni pratiche svolte dal docente. L'esame consta di una prova scritta e di una orale. Gli argomenti affrontati sono i seguenti. Funzioni reali di variabile reale: terminologia, operazioni e loro effetto sui grafici, composizione; funzioni inverse ed esempi relativi. Limite di una funzione reale di variabile reale; limite destro e sinistro; limite infinito. Limiti e operazioni algebriche; teoremi di permanenza del segno e dei due carabinieri. Funzioni continue; continuità e operazioni algebriche; continuità e composizione; continuità della funzione inversa; continuità delle funzioni trigonometriche e delle loro inverse; continuità di esponenziale e logaritmo. Teoremi di Weierstrass e dei valori intermedi. Derivazione; continuità delle funzioni derivabili. Derivate e operazioni algebriche; derivata della funzione composta e della funzione inversa; derivate successive. Antiderivata e integrale indefinito. Derivazione delle funzioni trigonometriche, esponenziali e loro inverse. Teorema del valor medio e sue conseguenze: molteplicità delle antiderivate; legami tra monotonia e segno della derivata. Estremi assoluti e relativi. Concavità e punti di flesso. Applicazioni alla determinazione del grafico di una funzione. Formula di Taylor con resto di Lagrange. Forme indeterminate e teoremi di de l'Hôpital; infinitesimi e infiniti. Integrazione secondo Riemann (solo per funzioni continue); interpretazione geometrica. Linearità e monotonia dell'integrale; additività sull'intervallo. Teorema della media integrale. Integrabilità delle funzioni continue a tratti. Teorema fondamentale del calcolo integrale; formule di integrazione per sostituzione e per parti; integrazione delle funzioni razionali fratte. Cenni su equazioni differenziali: a variabili separabili, lineari del primo ordine, lineari del second’ordine a coefficienti costanti. Testo consigliato: Robert A. Adams: Calcolo differenziale 1. Casa Editrice Ambrosiana, Milano Bramanti, Pagani, Salsa: Matematica, calcolo infinitesimale e algebra lineare. Ed. Zanichelli Prerequisiti Si richiede che, all'inizio del corso di Analisi Matematica I, lo studente abbia una buona padronanza dei seguenti argomenti: in particolare, conosca il significato degli strumenti usati e i principali risultati relativi, infine sappia applicarli in esercizi concreti. Gli argomenti indicati sono svolti con dettaglio e con dovizia di esercizi sui testi di Matematica per i Licei Scientifici; può essere utilizzato anche il testo seguente: P. Boieri, G. Chiti Precorso di Matematica Ed. Zanichelli. A fine settembre 2001, presso la Facoltà, sarà tenuto un corso di recupero sugli stessi argomenti: per i dettagli, si rimanda alla pagina web della Facoltà. 1.Numeri naturali, interi, razionali, reali, in particolare per quanto riguarda le operazioni e l'ordinamento; valore assoluto. Il problema della completezza (postulato di continuità) nei numeri razionali e nei numeri reali. 2.Geometria euclidea del piano: in particolare, i criteri di uguaglianza e di similitudine dei triangoli, il teorema di Pitagora, le proprietà elementari dei poligoni e dei cerchi. Corrispondenza tra i numeri reali e i punti di una retta; intervalli, semirette; piano cartesiano; distanza tra due punti nel piano. Luoghi geometrici elementari di R2 : retta (condizioni di parallelismo e di perpendicolarità), circonferenza. 3.Potenze con esponente naturale, proprietà delle potenze; polinomi: divisibilità, radici, fattorizzazione; il problema dell'esistenza di radici in campo reale; radici nesime. 4.Potenze con esponente razionale o reale; funzione esponenziale e sue principali proprietà. Logaritmo e sue principali proprietà. 5.Funzioni reali di variabile reale: dominio, codominio, grafico; operazioni algebriche (somma, prodotto, differenza, quoziente) su funzioni e loro effetto sui grafici; intersezioni tra grafici e loro significato algebrico; grafico della funzione valore assoluto. Iperbole equilatera e parabola y=ax2 +bx+c. 6.Equazioni e disequazioni di primo e di secondo grado; sistemi di equazioni e di disequazioni. 7.Equazioni e disequazioni irrazionali; con esponenziali, logaritmi e valore assoluto. 8.Trigonometria: misura in radianti di un angolo; identità e relazioni fondamentali, angoli notevoli; grafici di seno, coseno, tangente; equazioni e disequazioni con funzioni trigonometriche. ANALISI MATEMATICA II (5 CFU) Sede di Novara: Dott. G. Arioli, II anno, I trimestre Il corso si compone di lezioni teoriche e di esercitazioni pratiche svolte dal docente. L'esame consta di una prova scritta ed eventualmente di una prova orale. Gli argomenti affrontati sono i seguenti: Funzioni di più variabili e loro rappresentazione grafica. Continuità e limite in più variabili. Derivate parziali e direzionali. Massimi e minimi relativi liberi. Estremi vincolati: metodo dei moltiplicatori di Lagrange. Integrazione secondo Riemann (solo per funzioni continue); interpretazione geometrica. Linearità e monotonia dell'integrale; additività sull'intervallo. Teorema della media integrale. Integrabilità delle funzioni continue a tratti. Teorema fondamentale del calcolo integrale; formule di integrazione per sostituzione e per parti; integrazione delle funzioni razionali fratte. Misura di un insieme e integrazione. Domini normali e formula di riduzione degli integrali multipli. Cambiamento di variabile negli integrali multipli: coordinate polari in R2 . Coordinate sferiche e cilindriche in R3 . Testo consigliato: Bramanti, Pagani, Salsa: Matematica, calcolo infinitesimale e algebra lineare. Ed. Zanichelli ARCHITETTURA DEGLI ELABORATORI I (5 CFU) Sede di Novara: Prof. A. Bobbio, I anno II trimestre Il corso ha lo scopo di fornire allo studente una prima descrizione dell'architettura di un moderno sistema di elaborazione e delle sue principali componenti hardware e software. L'approccio seguito è quello della scomposizione della macchina in diversi livelli: livello della logica circuitale, livello della microprogrammazione, livello della macchina convenzionale, livello del sistema operativo. Verra` affrontato lo studio di ciascun livello separatamente, e le problematiche relative all'interazione fra i livelli. Poiché il funzionamento dei sistemi di elaborazione si basa sulla manipolazione di segnali logici binari, verrà preliminarmente affrontato lo studio della rappresentazione binaria dei numeri e dell'informazione, dell'aritmetica binaria e della logica binaria (numeri in virgola mobile, codici ridondanti). Verrà trattato lo studio di funzioni logiche binarie con applicazioni a reti combinatorie e sequenziali. Argomenti trattati: Cenni sull'evoluzione storica dei sistemi di elaborazione. Scomposizione della macchina in livelli. Descrizione di un elaboratore e delle sue principali componenti. Cenni sui dispositivi periferici. Rappresentazione binaria dell'informazione. Numeri binari e aritmetica binaria. Codifica di caratteri. Funzioni logiche binarie. Porte e circuiti digitali. Organizzazione circuitale di ALU e Memorie. Organizzazione e interazione CPU memoria. Testo di Riferimento Tanenbaum: "Architettura del Computer: un approccio strutturale", IV Edizione, Utet Universita’, 2000. Testo di approfondimento Luccio, Pagli: "Reti Logiche e Calcolatori", Bollati-Boringhieri. ARCHITETTURA DEGLI ELAB. II (5 CFU) E LABORATORIO (5 CFU) Sede di Novara: Prof. G. Franceschinis, I anno, III trimestre Questo corso può essere visto come la naturale continuazione e l'approfondimento di alcuni concetti visti nel corso di "Architetture degli Elaboratori I" la cui conoscenza è necessaria per la comprensione degli argomenti sviluppati. Scopo del corso è approfondire alcuni aspetti dell'architettura di un elaboratore con particolare attenzione a come una istruzione della macchina a livello convenzionale viene eseguita dai circuiti, e alle diverse linee di tendenza che si sono sviluppate per quanto concerne tipi di istruzione e modalità di indirizzamento. La parte sperimentale collegata a questo corso verrà svolta nel laboratorio di architettura degli elaboratori. Le due unità didattiche (corso di Architetture II + laboratorio) daranno origine ad un unico voto. Argomenti trattati: La CPU e il linguaggio macchina convenzionale. Il linguaggio della macchina convenzionale, e sua interpretazione in una CPU microprogrammata. Gestione dello stack per l'attivazione di procedure. Evoluzione dell’architettura di una CPU: memoria cache e pipeline. Il livello della macchina convenzionale e i modi di indirizzamento. La gerarchia della memoria: organizzazione della memoria gerarchica e interazione fra i vari livelli della gerarchia. Organizzazione delle cache. Gestione dell'I/O: il meccanismo di interruzione. Linee di tendenze che si sono sviluppate per quanto concerne tipi di istruzione, modalità di indirizzamento, architettura generale della CPU. Testo di Riferimento Tanenbaum: "Architettura del Computer: un approccio strutturale", IV Edizione, Utet Universita’, 2000. Laboratorio Sede di Novara: Prof. G. Franceschinis, I anno, III trimestre Il corso di laboratorio ha lo scopo di analizzare dal punto di vista sperimentale alcune delle problematiche di architettura degli elaboratori viste nei due corsi di tale nome. Verrà ripresa l’architettura del processore Mic1, introdotta durante le lezioni di Architettura degli Elaboratori II, con particolare riferimento al funzionamento del datapath, alla gestione della memoria, e all’utilizzo dello stack. Allo studente sarà fornito uno strumento software che simula il funzionamento del processore Mic1. Su tale simulatore lo studente potrà testare alcuni programmi, realizzati durante il corso (essendo un corso di laboratorio, una parte significativa sarà svolta utilizzando le risorse di calcolo del Laboratorio Informatico). In particolare lo studente apprenderà 2 linguaggi assembler: IJVM e MAL; il linguaggio MAL verrà utilizzato anche come strumento per implementare nuove istruzioni IJVM, microprogrammandole per il processore Mic1. Infine, saranno introdotti i concetti di traduzione (e in particolare di assemblaggio), linking, loading e binding. Lo studente dovrà allocare un congruo tempo (al di fuori delle ore del corso di laboratorio) per acquisire padronanza nella programmazione, e quindi per lo sviluppo di un progetto, da realizzare utilizzando i linguaggi IJVM e MAL. La conoscenza delle nozioni introdotte nei due moduli di Architettura degli Elaboratori è necessaria per la comprensione delle nozioni introdotte nel laboratorio e per l'attività sperimentale. BASI DI DATI E SISTEMI INFORMATIVI I : Fondamenti (5 CFU) Sede di Novara: Prof. L. Saitta, II anno, I trimestre Finalita’ del corso: obiettivo del corso e’ quello di fornire gli strumenti metodologici e formali per derivare le strutture logiche e fisiche di una base di dati relazionale a partire dai requisiti del sistema informatico espressi dagli utenti. Argomenti trattati: Dei tre principali modelli dei dati (relazionale, reticolare e gerarchico) adottati dai sistemi di gestione delle basi di dati (DBMS) viene approfondito il modello relazionale, in particolare sono presentati gli aspetti teorici di tale modello e lo standard SQL (formalismi algebrici e logici di definizione dei dati, linguaggi di interrogazione e di specifica dei vincoli di integrita’ dei dati). Le strutture logiche di una base di dati sono progettate con modelli semantici ed analizzate alla luce di opportune forme normali le cui proprieta' sono derivate dalla teoria delle dipendenze. Le prestazioni delle applicazioni che fanno uso di un sistema di gestione di una base di dati sono influenzate dalle strutture fisiche di memorizzazione delle informazioni e dai cammini di accesso previsti dal progettista della base di dati. La scelta di tali strutture richiede una adeguata conoscenza dell'architettura di un DBMS che viene presentata succintamente seguendo lo schema di descrizione generale a tre livelli di astrazione: esterno, logico e fisico. Il corso è abbinato a quello di sperimentazioni. Nel corso di sperimentazione si utilizzeranno strumenti per la progettazione e lo sviluppo di basi di dati. Testo di riferimento P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone "Basi di Dati: concetti, linguaggi, e architetture", McGraw Hill Italia - 1996. Testi complementari: E.Bertino, B.Catania, E.Ferrari, G.Guerrini: "Sistemi di basi di dati", Città Studi Edizioni. Elmasri, Navathe "Fundamentals of Database Systems", Addison Wesley - 1994. BASI DI DATI E SISTEMI INFORMATIVI: Sperimentazioni (5 CFU) Sede di Novara: Prof. L. Saitta, II anno, II trimestre Progettazione Concettuale: modello Entity-Relationships esteso metodologie di progettazione traduzione verso modello relazionale utilizzo di strumenti CASE per la progettazione di una base dati Linguaggio SQL: introduzione costrutti di base operatori di base - costruzione di vincoli in SQL Il corso prevede una serie di esercitazioni pratiche con sistemi relazionali di gestione di basi di dati. BASI DI DATI E SISTEMI INFORMATIVI II (5 CFU) Sede di Novara: Prof. S. Montani, II anno, II trimestre Finalita' del corso: obiettivo del corso e' lo studio degli aspetti architetturali dei sistemi di gestione delle basi di dati (DBMS) e l'analisi delle strutture dati e degli algoritmi connessi messe a punto per gestire le varie funzionalita' di questi sistemi. Anche se il modello logico dei dati a cui si fara' prevalentemente riferimento sara' il modello relazionale, la trattazione avra' carattere generale per poter trasporre gli argomenti di studio anche ai sistemi basati su altri modelli quale il mo dello a oggetti. Argomenti trattati: Si richiama l'architettura di un DBMS seguendo lo schema di descrizione generale a tre livelli di astrazione: esterno, logico e fisico con la definizione delle funzionalita' di tali sistemi. In particolare vengono trattati i seguenti temi: organizzazione fisica degli archivi e metodi di accesso ad indici, hash e misti; tecniche di ottimizzazione delle interrogazioni; nozione di transazione, sue proprieta' e loro ciclo di vita; gestione della concorrenza per sistemi centralizzati di basi di dati con molti utenti; sistemi di ripristino dell'integrita’ dei dati in seguito a guasti o anomalie di funzionamento degli apparati hardware-software. Il corso e’ completato da cenni alle basi di dati distribuite Modalita’ d'esame: esame scritto Testo di riferimento: A.Albano: "Costruire Sistemi per Basi di Dati", 2000, Addison-Wesley. Testi complementari: P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone "Basi di Dati: concetti, linguaggi, e architetture", McGraw Hill Italia - 1996. E.Bertino, B.Catania, E.Ferrari, G.Guerrini: "Sistemi di basi di dati", Città Studi Edizioni. CALCOLO DELLE PROBABILITÀ (4 CFU) Sede di Novara: Prof. M. De Giosa, I anno, III trimestre Si veda il programma del corso di Probabilità 1 e Laboratorio del Corso di laurea in Matematica. FISICA (5 CFU) Sede di Novara: Prof. L. Fava, I anno, II trimestre Finalita' del corso : illustrare la metodologia della scienza galileiana fornendo una base culturale ampia e aperta a successivi aggiornamenti. Argomenti trattati: Meccanica Grandezze fisiche. Unità di misura. Errori. Moti in 1 e 2 dimensioni. Esempi: moto uniforme, uniformemente accelerato, parabolico, circolare. Dinamica (I e II legge di Newton). Studio di moti; moto armonico, armonico smorzato, circolare. Lavoro, energia cinetica, potenza. Forze conservative, energia potenziale, esempi (1 dimensione). Conservazione dell'energia meccanica. Forza gravitazionale, energia gravitazionale. Urti, conservazione del momento lineare. Cinematica rotazionale. Dinamica rotazionale. Conservazione del momento lineare. Fluidi. Idrostatica. Idrodinamica: equazioni di continuità, di Bernoulli. Viscosità. Meccanica - Complementi Moto di una particella in 3 dimensioni. Forze conservative (F =-grad U). Momento angolare e campo di forze centrali. Campo e potenziale gravitazionale. Oscillatori (armonico semplice, smorzato, forzato, accoppiati). Moti relativi. Cinematica relativistica Relatività galileiana. Cenni alla dinamica di sistemi di particelle e alla dinamica del corpo rigido.. Oscillazioni e Onde Onde nei mezzi elastici. Onde sonore. Onde elettromagnetiche. Interferenza delle onde. Energia delle onde. Cenni all'equazione delle onde e alle sua soluzioni. Termodinamica Stato termodinamico. Equilibrio termico. Temperatura. Variabili di stato. Esempio: il gas ideale. Equilibrio termodinamico. Energia interna. I1 I principio della Termodinamica. Gas ideali. Applicazioni del I Principio. Teoria cinetica dei gas ideali. I1 II Principio della Termodinamica. Entropia. Applicazioni del II Principio. Potenziali termodinamici. Elettricita' e magnetismo Carica elettrica - Legge di Coulomb - Campo elettrico E – Potenziale elettrico Legge di Gauss per E - Condensatori, energia elettrostatica in termini di Q,V,C - Corrente elettrica e circuiti elettrici- Campo magnetico B - Legge di Biot-Savart Forza magnetica - Legge di Ampere - Legge di Gauss per B - Moto di particelle cariche sotto l'azione di E e B -Induzione elettromagnetica - Applicazioni - Autoinduzione, energia magnetica in termini di L, M, I- Cicuiti RC, RL, RLC - Circuiti in corrente alternata I1 campo elettrico nella materia: dielettrici - I1 campo magnetico nella materia: paramagnetismo, diamagnetismo, ferromagnetismo. Tesi consigliati: M. Alonso, E.J. Finn: "Elementi di Fisica per l'Università", Vol. I, Ed. Masson, Milano. C. Mencuccini, V. Silvestrini: "Fisica I", Liguori Editore, Napoli. R. Resnick, D. Halliday: "Fisica" Vol. I, Ed. Casa Editrice Ambrosiana, Milano. P. Mazzoldi, M. Nigro, C. Voci "Fisica", Vol. I, Ed. EdiSES, Napoli. D. Halliday, R. Resnick: "Fisica" Vol. II, Ed. Casa Editrice Ambrosiana, Milano. R. Feynman, The Feynman lectures on physics/La fisica di Feynman, vol. I e II, Addison-Wesley, Londra Prerequisiti : i corsi di Analisi Matematica I, Analisi Matematica II, Geometria. Modalita' di esame : il superamento dell'esame scritto e' prerequisito per l'ammissione all'esame finale orale. GEOMETRIA (5 CFU) Sede di Novara: Prof. R. Catenacci, I anno, II trimestre Spazi vettoriali reali e stessi, piani e rette nel Applicazioni lineari e immagine, cambiamenti complessi, generatori e basi, sottospazi e operazioni tra gli piano e nello spazio, prodotto scalare e prodotto hermitiano. matrici associate, determinante, rango e traccia, nucleo e di base. Teoria dei sistemi lineari. Alcune classi notevoli di matrici e loro proprietà Autovalori e autovettori, diagonalizzazione delle matrici simmetriche e hermitiane, polinomio caratteristico, teorema di Cayley-Hamilton e sue applicazioni. Sono previste le dispense. LINGUA STRANIERA: INGLESE (5 CFU) Sede di Novara: Sandra Della Chiara– I anno, III trimestre Il corso ha come obiettivo principale quello di creare una base linguistica generale e di proporre un primo approccio alla comprensione di un testo scritto specializzato proponendo tecniche di lettura di testi specializzati in inglese allo scopo di facilitare lo studio sui testi originali. Una prova scritta di livello è prevista all'inizio di ogni anno accademico per poter consigliare il livello di corso più adatto ad ogni candidato. Testi Consigliati: 1) "English Grammar Practice for Italian Students" with Key. Michael Vince and Lelio Pallini. Heinemann LeMonnier, 1999 2) Un dizionario, vedere la bacheca dell'Istituto dopo l'inizio dei corsi. 3) Titolo del testo da definire - consultare la bacheca dell'Istituto dopo l'inizio dei corsi. PROGRAMMAZIONE I (5 CFU) E LABORATORIO (5CFU) Sede di Novara: Prof. L. Saitta – I anno, I trimestre Scopo del corso: Il corso ha lo scopo di introdurre i fondamenti della programmazione dei calcolatori elettronici, partendo dal concetto di algoritmo e dalla descrizione delle componenti basilari di un programma per il calcolo automatico, per arrivare a concetti avanzati di strutture dati e di controllo dei linguaggi di programmazione. Questi concetti saranno applicati in alcuni algoritmi fondamentali. Il laboratorio associato ha lo scopo di familiarizzare lo studente, soprattutto mediante esercitazioni pratiche, sia con gli ambienti di programmazione, sia con le caratteristiche fondamentali dei linguaggi di programmazione imperativi. Verrà messo l'accento sull'importanza di costruire programmi mediante metodologie ragionate, e sull'effetto che la scelta di opportune strutture dati e di controllo ha sull'efficienza e la comprensibilità del programma ottenuto. Programma: Concetto di algoritmo. Input/Output. Linguaggi di programmazione (sintassi e semantica). Tipi elementari. "Scope" delle variabili. Costrutti di controllo. Funzioni e passaggio di parametri. Vettori e matrici. Interazione con il sistema operativo. Cenni alla complessità computazionale di un algoritmo. Algoritmi di ricerca e ordinamento. Il linguaggi di programmazione C. Tipi elementari, ed arrays. Istruzioni ed espressioni. Costrutti di controllo. Funzioni, e regole di “scope” delle variabili. Un modello di valutazione dei programmi C. Laboratorio Sede di Novara: Prof. L. Saitta I anno, I trimestre Introduzione all'ambiente: elementi del sistema operativo Unix, editor, compilatore e debugger. Tipi elementari e sintassi del Pascal. Metodi di decomposizione di un problema, scelta delle strutture dati e delle strutture di controllo. Osservazioni sull' efficienza, sulla comprensibilità e sulla facilità di debugging e di modifica di un programma. Modalità d'esame: Il laboratorio é legato alla prima unità didattica. Testi consigliatiç Dispense del corso (disponibili su Web). Wirth, "Principi di programmazione strutturata", ISEDI. B.W. Kernighan, R.D. Ritchie, "Linguaggio C, II edizione (ANSI C)", Jackson Libri. PROGRAMMAZIONE II (5 CFU) Sede di Novara: Prof. P. Terenziani, I anno, II trimestre Scopo del corso : Il corso ha lo scopo di proporre alcuni fondamenti della programmazione dei calcolatori elettronici, introducendo concetti quali strutture dati dinamiche e ricorsione. Nel corso verranno sviluppati molti esempi di algoritmi, in modo da familiarizzare gli studenti con le tecniche di base della programmazione. Argomenti trattati : Tipi di dati strutturati. Tipi di dati dinamici (ricorsivi): le liste. Implementazione di liste mediante puntatori. Funzioni ricorsive. Tipi di ricorsione e conversioni. Algoritmi di ricerca e di ordinamento. Il linguaggio di programmazione adottato nel corso e’ il linguaggio C. Modalità d'esame : l'esame prevede una prova scritta (orale facoltativo). Testi Consigliati: Dispense del corso (disponibili presso il docente). "Data Structures and Program Design in C", Robert L. Cruse, Clovis L. Tondo, Bruce P. Leung, II edizione, Prentice Hall International Editions. SISTEMI DI ELABORAZIONE: RETI DI CALCOLATORI I Sede di Novara: Prof. C. Anglano, II anno, III trimestre 1) Introduzione alle reti di calcolatori 2) Meccanismi per la trasmissione dati a livello fisico (trasmissione analogica e digitale, codifica dei dati tramite segnali); 3) Controllo Data Link (controllo di flusso e degli errori) 4) Multiplexing 5) Reti Locali cablate e wireless 6) Cenni su reti geografiche: commutazione di circuito e di pacchetto; Frame Relay, ATM 7) Collegamenti "Small Office Home Office": ISDN ed ADSL Testo di riferimento: W. Stallings: Data and Computer Communications, VI edizione, Prentice Hall. Testi di consultazione: W. Stallings: Local and Metropolitan Area Networks, VI edizione, Prentice Hall. SISTEMI OPERATIVI I (5 CFU) E LABORATORIO (5 CFU) Sede di Novara: Dott. M. Furini, II anno, I trimestre Finalità del corso: Il corso di Sistemi Operativi I ha lo scopo di fornire le nozioni fondamentali sull'architettura del sistema operativo di un elaboratore multiutente in isolamento (non in rete). Al corso è associato quello di Laboratorio di Informatica: Sistemi Operativi. Argomenti trattati: Vengono affrontati i seguenti argomenti principali: - organizzazione del kernel - gestione dei processi - elementi di programmazione concorrente - gestione della memoria - gestione delle periferiche - file system e tecniche di protezione - tecniche di rilevamento e prevenzione dello stallo - elementi di programmazione concorrente Esempi di soluzioni reali verranno tratti dai sistemi operativi correnti (Unix, Windows). Modalità di esame: (per il corso di Alessandria) La valutazione finale delle nozioni acquisite avviene tramite un esame scritto (nei primi due appelli successivi al corso) o orale (nei rimanenti appelli). Prerequisiti: Si consiglia di seguire il corso solo dopo aver seguito i due corsi di Architettura degli Elaboratori I e II. Si consiglia caldamente di non trascurare il Laboratorio o il corso teorico ma di seguirli attivamente entrambi poiché sono stati progettati insieme per facilitare la comprensione della materia (dalla teoria alla pratica e viceversa). Testo consigliato Tanenbaum: "Sistemi Operativi Moderni", Ed. Jackson . Testo di approfondimento: A. Silberschatz, P.B. Galvin: "Operating System Concepts", V ed., Addison-Wesley 1998. Laboratorio Sede di Novara: Prof. M. Furini, II anno, I trimestre Finalità del corso: Il corso ha lo scopo di illustrare in un sistema reale molte delle nozioni generali del corso di Sistemi Operativi I e di introdurre l'ambiente di programmazione del sistema operativo Unix, in particolare per quanto riguarda le chiamate di sistema (system call). Argomenti trattati: Richiami sull'ambiente di programmazione in Unix: comandi, funzioni di libreria, manuale on-line, compilazione separata e utilities di sviluppo (make). Processi e ambiente run-time nel sistema Unix. File system di Unix. Interfaccia tra linguaggio C e Unix. Generalità sull'utilizzo delle chiamate di sistema; chiamate di sistema per gestione di processi e dei threads, sincronizzazione e comunicazione tra processi e threads, gestione di file. Implementazione di interpreti di comandi. Cenni sull'implementazione di Unix. Modalità di esame: Valutazione di esercizi e progetti assegnati durante il corso. Prerequisiti: È indispensabile aver acquisito esperienza di programmazione nel linguaggio C, come nel caso sia già stata svolta l'attività del corso di laboratorio di Programmazione del I anno. Testi consigliati: Oltre alla documentazione on-line si può fare riferimento a: C. Brown: "Unix - Distributed Programming", Prentice-Hall 1994, capitolo 2. J.M. Rifflet, "La programmation sous Unix", 3me Ed., Ediscience International, 1993. V.R. Stevens, "Advanced Programming in the Unix environment", Addison-Wesley 1993. SISTEMI OPERATIVI II (5 CFU) Sede di Novara: Dott. M. Furini, II anno, II trimestre Finalità del corso: Il corso di Sistemi Operativi II è focalizzato sui sistemi operativi di rete e sui sistemi operativi distribuiti. Pertanto, le nozioni base introdotte nel corso di Sistemi Operativi I sono riprese ed estese in riferimento ad architetture di rete e multi-processore. Argomenti trattati: Vengono affrontati i seguenti argomenti principali: - architettura delle reti locali e geografiche - cenni sui protocolli di comunicazione con speciale riferimento al TCP/IP - primitive di comunicazione tra processi - sistemi operativi di rete, file system distribuiti e sistemi operativi distribuiti - architettura client-server e chiamata procedurale remota - comunicazione di gruppo e coordinazione di gruppi di processi cooperanti - algoritmi di sincronizzazione e di elezione - implementazione di un file system di rete: NFS - implementazione di un sistema operativo distribuito Testi consigliati: A. Tanenbaum: "Sistemi Operativi Moderni", Ed. Jackson C. Brown: "Unix - Distributed Programming", Prentice-Hall 1994.