Informatica generale Docenti: Giovanni Denaro, Luigi Lavazza, Mauro Pezzè Concetti di base per l uso del calcolatore e, in particolare, struttura modulare e risorse dei sistemi di elaborazione, funzionamento delle reti di computer e strumenti di produttività e programmazione più diffusi. Abilità: N/A 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 reti e topologie o commutazione a circuito e a pacchetto o protocolli di comunicazione e astrazione o i livelli ISO OSI o Internet o i protocolli IP, TCP e UDP o il modello client/server o protocolli applicativi: Telnet, FTP, HTTP, SMTP o WWW e URL Parte II: 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
Link al sito web: http://www.lta.disco.unimib.it/didattica/infogen/infgen.htm
Matematica Discreta (Elementi) Docenti: Marina Cazzola, Francesca Dalla Volta, Loic Grenie 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: 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.cenni di analisi combinatorica 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. Link al sito web: http://www.matapp.unimib.it/~marina/did/mdis03/
Programmazione (Elementi e Complementi) Docenti: Francesca Arcelli, Felice Cardone, Daniela Micucci, Lucia Pomello, Francesco Tisato Crediti: 12 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. 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. Array di tipi primitivi 5. Metodi, definizione ed invocazione 6. Programmazione ad oggetti vs programmazione tradizionale. Information hiding e incapsulamento. Definizione di classe e creazione di oggetti/istanze. 7. Metodi con tipi di dati complessi: definizione e invocazione. Modificatore di visibilita' sui metodi. 8. Precondizioni e postcondizioni per i metodi. Attributi privati alla classe e metodi di accesso. Costruttori. Overloading di metodi e di costruttori. 9. Array di reference. 10. Ereditarietà singola e multipla. La classe Object. Visibilità per attributi e metodi. 11. Costruttori. 12. Le classi astratte e i metodi astratti. Polimorfismo e override di metodi. 13. Interfacce. Metodi di classe. Attributi di classe. 14. Lo sviluppo di semplici progetti. Link al sito web: http://www.sal.disco.unimib.it/programmazione/
Algoritmi e Strutture Dati (elementi) Docenti: Paola Bonizzoni, Giancarlo Mauri, Claudio Zandron Metodologie di base per progettare algoritmi e analizzarne l efficienza; strutture dati fondamentali Abilità: Progettare e implementare algoritmi efficienti, scegliendo in modo opportuno le strutture dati da utilizzare Programma: 1. Introduzione Nozione intuitiva di problema e algoritmo. Esempio: insertion sort. 2. Tecniche di analisi di algoritmi: Dimensione dei dati di un problema Complessita' computazionale: caso pessimo, ottimo e medio Valutazione dei tempi di esecuzione Pseudocodice e macchina RAM; complessità computazionale dei programmi RAM. 3. Gli strumenti matematici Ordine di grandezza delle funzioni, notazione asintotica, limiti asintotici inferiori e superiori Il principio di induzione Equazioni di ricorrenza e relativi metodi risolutivi per sostituzione, iterazione e tramite il teorema principale. Insiemi, relazioni, funzioni, grafi, alberi 4. Tecniche di progetto di algoritmi La ricorsione e l'approccio Divide-et-Impera Ordinamento di un vettore con algoritmo Merge-Sort 5. Il problema dell ordinamento e i principali algoritmi di soluzione Limiti inferiori per l'ordinamento. Heapsort Quicksort Quick-sort Randomizzato Ordinamento in tempo O(n): counting sort Concetto di stabilita'; Radix sort Mediano e selezione 6. Strutture dati elementari e loro implementazioni efficienti Introduzione e nozioni di base Insiemi dinamici Operazioni fondamentali su insiemi dinamici Liste concatenate Liste semplici e doppie Liste circolari Uso di sentinelle Gestione di liste mediante array multipli Pile (stack) Inserimento (push), cancellazione (pop) Implementazioni: array, lista concatenata Code (queue)
Inserimento (enqueue), cancellazione (dequeue), attraversamento Implementazioni: array, lista concatenata Tabelle hash Indirizzamento diretto Funzioni di hash Risoluzione di collisioni tramite liste concatenate Risoluzione di collisioni tramite indirizzamento aperto Scansione lineare: inserimento, ricerca, cancellazione Scansione quadratica Doppio hashing: inserimento, ricerca, cancellazionealberi liberi; alberi radicati Alberi binari Rappresentazione di alberi in memoria Attraversamento: ordine anticipato, simmetrico, posticipato Alberi binari di ricerca e operazioni fondamentali: inserimento, cancellazione, ricerca, max, min, successore, predecessore Strutture dati astratte: vettori, code, pile, matrici Link al sito web: http://www.bio.disco.unimib.it/~leporati/algoelementi.html
ANALISI MATEMATICA I (Elementi) Docenti : Gabriella Kuhn, Margherita Mauri, Barbara Bacchelli. Concetti fondamentali del calcolo differenziale e integrale per funzioni reali di variabile reale: continuità, derivabilità, approssimazione polinomiale, integrale definito, problema di Cauchy per equazioni differenziali del primo ordine, a variabili separabili e lineari. Abilità: 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. Programma: 1.Funzioni. Dominio, immagine, periodicità, simmetrie, biunivocità, funzione inversa. Limiti di funzioni. Stime asintotiche. Grafici di funzioni elementari. 2.Funzioni continue. Teorema degli zeri, proprietà dei valori intermedi, esistenza di massimi e minimi. Derivate e regole di derivazione. 3.Teoremi del calcolo differenziale: Fermat, Rolle, Lagrange, De L'Hopital. 4.Studio del grafico di funzione. La formula di Taylor. Definizione di integrale secondo Riemann. Teorema della media. 5.Teorema fondamentale del calcolo integrale. Integrazione per parti e per sostituzione, integrazione di funzioni razionali. 6. Equazioni differenziali e problema di Cauchy. Equazioni a variabili separabili e lineari del primo ordine. Link al sito web: http://www.matapp.unimib.it/~bacchelli/
Architettura degli elaboratori Docente: Fabio Marchese, Domenico Sorrenti Obiettivo dell insegnamento: Introdurre lo studente al funzionamento degli elaboratori elettronici; indirizzato a studenti senza alcuna nozione di elettronica. Programma: Codifica dei numeri. Logica booleana e analisi dei circuiti. Funzionamento interno di un calcolatore. Rassegna del set di istruzioni dell architettura MIPS di base. Ciclo di funzionamento della CPU. Rilevamento e correzione degli errori.
Docenti: Roberto Bisiani, Matteo Dominoni Architettura delle reti Obiettivo dell insegnamento: Introdurre lo studente al funzionamento delle reti di calcolatori; indirizzato a studenti senza alcuna nozione di elettronica. Programma: Introduzione alle reti e a Internet con cenni di sicurezza. Application layer. Transport layer. Multimedia networking. Network e link layer: cenni. Link al sito web: http://old.disco.unimib.it/architettura1/
Basi di dati e sistemi informativi (elementi) Docenti: Raimondo Schettini (turno b) Isabella Gagliardi (turno c) Il corso introduce i concetti fondamentali, i linguaggi e le metodologie di progetto per le basi di dati. Abilità: Progettare, realizzare e gestire una base di dati collocandola nel contesto più ampio dei sistemi informativi. 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. Link al sito web http://old.disco.unimib.it/ivl