Corso di laurea

Applied Computer Science and Artificial Intelligence – Informatica Applicata e Intelligenza Artificiale

Università degli Studi di Roma - La Sapienza · 47 materie · 0 file condivisi

Ecco tutti i dettagli sul corso di laurea selezionato. Sul UniDocs troverai gli appunti condivisi dagli altri studenti del tuo corso di laurea, ordinati per materia. Ricordati che per poter visualizzare il materiale devi essere registrato al sito e possedere un numero di crediti sufficiente.

Sfoglia il materiale didattico

Con UniDocs hai l'opportunità di studiare insieme a tutto il tuo corso di laurea. Guadagna subito dei crediti, carica il materiale del tuo ultimo esame!
Più condividi, più tempo avrai per studiare con tutta la community!

Materie del corso

ALGORITHMS 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi L’insegnamento fornisce agli studenti i fondamenti teorici e pratici della progettazione e dell’analisi degli algoritmi. Il corso affronta le principali tecniche di progettazione algoritmica, tra…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
L’insegnamento fornisce agli studenti i fondamenti teorici e pratici della progettazione e dell’analisi degli algoritmi. Il corso affronta le principali tecniche di progettazione algoritmica, tra cui algoritmi greedy, divide et impera e algoritmi per grafi, introducendo inoltre concetti di complessità computazionale e di trattabilità dei problemi. Al termine del corso gli studenti saranno in grado di analizzare la correttezza e l’efficienza degli algoritmi, confrontare diverse strategie risolutive e progettare soluzioni algoritmiche per problemi di media complessità.
Conoscenza e capacità di comprensione
Gli studenti acquisiscono una solida conoscenza dei principali paradigmi di progettazione algoritmica, delle strutture dati fondamentali e degli algoritmi classici per problemi di ottimizzazione, codifica, scheduling e cammini minimi. Comprendono i metodi di analisi della complessità computazionale e i principi di correttezza degli algoritmi.
Capacità di applicare conoscenza e comprensione
Gli studenti sono in grado di modellare problemi computazionali, individuare la strategia algoritmica più appropriata, progettare algoritmi corretti ed efficienti, analizzarne la complessità temporale e spaziale e confrontare soluzioni alternative sulla base delle loro prestazioni.
Autonomia di giudizio
Gli studenti sviluppano la capacità di valutare criticamente algoritmi e strutture dati, individuandone punti di forza, limiti e ambiti di applicabilità. Sono inoltre in grado di motivare le proprie scelte progettuali considerando correttezza, efficienza e vincoli del problema.
Abilità comunicative
Gli studenti acquisiscono la capacità di descrivere algoritmi e dimostrarne la correttezza utilizzando un linguaggio tecnico appropriato, pseudocodice e notazione matematica. Sono inoltre in grado di presentare in modo chiaro il processo di progettazione e l’analisi della complessità delle soluzioni proposte.
Capacità di apprendimento
Gli studenti sviluppano un metodo di studio autonomo che consente loro di approfondire nuovi algoritmi, tecniche di progettazione e risultati teorici, applicando in modo critico le conoscenze acquisite anche a problemi non affrontati direttamente durante il corso.

Programma

Algoritmi

Gale-Shapley

Greedy: Interval Scheduling, Interval Partitioning, Codici di Huffman

Programmazione dinamica: Weighted Interval Scheduling, Segmentation, Subset-Sum

Introduzione agli Algoritmi di approssimazione e ad online learning (problema degli esperti)

  • Introduzione agli algoritmi
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 1
  • L’algoritmo di Gale-Shapley
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 1
  • Limiti di tempo di esecuzione e notazione asintotica
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 2.1, 2.2
  • Strutture dati
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 2.3, 2.4, 2.5
  • Algoritmi greedy
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 4.1
  • Interval Scheduling
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 4.1
  • Interval Partitioning
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 4.1
  • Posizionamento di trasmettitori radio
  • Grafi
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 3
  • Algoritmo di Dijkstra
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 4.4
  • Heap
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 2.5
  • Code di priorità e cammini minimi
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 2.5 , 4.4
  • Codifica con prefisso
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 4.8
  • Algoritmo di Huffman (1)
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 4.8
  • Algoritmo di Huffman (2)
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 4.8
  • Weighted Interval Scheduling
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 6.1, 6.2
  • Segmentazione
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 6.3
  • Subset Sum
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 6.4
  • Bellman-Ford
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 6.8, 6.9
  • Divide-and-Conquer
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 5
  • Moltiplicazione di interi
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 5.5
  • P e NP
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 8
  • Vertex Cover
  • Testi di riferimento: "Design of Algorithms", Jon Kleinberg and Eva Tardos - Capitolo 8

Modalità d'esame

Prova scritta

  • Tipologia: test individuale composto da quesiti a risposta aperta e problemi pratici di analisi e progettazione di algoritmi.
  • Obiettivi: verificare la conoscenza dei concetti teorici di base e la capacità di progettare e analizzare algoritmi.
  • Criteri di valutazione: correttezza delle risposte, chiarezza e completezza delle spiegazioni, correttezza degli algoritmi proposti e capacità di analizzarne complessità e prestazioni.

Valutazione finale

  • Il voto è espresso in trentesimi.
  • Per superare l’esame (18/30), lo studente deve dimostrare di aver acquisito una conoscenza sufficiente dei concetti fondamentali di algoritmi e di saper risolvere problemi pratici con algoritmi corretti e analisi elementari della complessità.
  • Per conseguire il punteggio massimo (30/30 e lode), lo studente deve dimostrare una conoscenza eccellente dei concetti trattati durante il corso, essere in grado di risolvere problemi complessi proponendo algoritmi corretti ed efficienti, in modo coerente e giustificare le scelte progettuali con spiegazioni rigorose e complete.

Testi di riferimento

"Algorithm Design", Kleinberg, Tardos

Dispense fornite dal docente

"Algorithm Design", Kleinberg, Tardos

"Introduction to Algorithms", Cormen, Leiserson, Rivest, Stein

"Automata and computatability", Kozen

Codice insegnamento 1049269

CALCULUS 1° anno · 1° semestre · 12 CFU · MATH-03/A · 0 file

Obiettivi formativi Il corso ha l’obiettivo di fornire le basi del calcolo differenziale e integrale per funzioni di una variabile reale, sviluppando la capacità di comprendere, analizzare e risolvere problemi matematici…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi Il corso ha l’obiettivo di fornire le basi del calcolo differenziale e integrale per funzioni di una variabile reale, sviluppando la capacità di comprendere, analizzare e risolvere problemi matematici fondamentali. Lo studente acquisisce strumenti teorici e pratici utili per lo studio dell’analisi matematica e delle discipline scientifiche affini.
Conoscenza e capacità di comprensione Lo studente acquisisce la comprensione dei concetti fondamentali dell’analisi matematica, inclusi numeri reali e razionali, limiti, derivate, integrali, successioni e serie. Viene sviluppata la capacità di comprendere definizioni, teoremi e proprietà fondamentali del calcolo differenziale e integrale.
Capacità di applicare conoscenza e comprensione Lo studente è in grado di applicare le conoscenze teoriche alla risoluzione di problemi standard di calcolo differenziale e integrale, successioni e serie. È in grado di utilizzare metodi e tecniche apprese per analizzare funzioni e risolvere esercizi di base.
Autonomia di giudizio Lo studente sviluppa la capacità di valutare la correttezza dei procedimenti e dei risultati ottenuti, scegliere metodi appropriati di risoluzione e riflettere sulla struttura logica degli argomenti matematici.
Abilità comunicative Lo studente acquisisce la capacità di esprimere concetti e risultati matematici in modo chiaro, rigoroso e strutturato, utilizzando una notazione corretta e un linguaggio scientifico appropriato sia in forma scritta che orale.
Capacità di apprendimento Lo studente sviluppa solide basi per studi successivi in matematica e discipline scientifiche, acquisendo autonomia nello studio e nella capacità di approfondire strumenti matematici più avanzati.

Programma

UNIT 2
Modulo: UNIT 2
*Successioni numeriche

Successioni di numeri reali

  • Definizioni
  • Esempi fondamentali
  • Convergenza e divergenza
  • Operazioni con le successioni

Teoremi sui limiti

  • Unicità del limite
  • Confronto e permanenza del segno
  • Limiti notevoli
  • Teoremi sulle combinazioni di successioni

Serie numeriche

Serie a termini non negativi

  • Definizione
  • Criteri di convergenza (confronto, rapporto, radice, integrale)

Convergenza assoluta e condizionata

  • Serie a termini di segno variabile
  • Criterio di Leibniz
  • Serie assolutamente convergenti

Serie di potenze in ℝ

Convergenza di una serie di potenze

  • Raggio di convergenza
  • Formula di Cauchy-Hadamard

Serie di Taylor

  • Polinomi di Taylor
  • Calcolo di sviluppi di funzioni elementari
  • Passaggio dal polinomio alla serie
  • Resto di Taylor e stima dell’errore

Integrale di Riemann

Definizione dell’integrale

  • Partizioni e somme di Riemann
  • Funzioni integrabili

Proprietà dell’integrale

  • Linearità
  • Monotonia
  • Additività

Metodi di integrazione

  • Sostituzione (cambio di variabile)
  • Integrazione per parti
  • Esempi applicativi
  • Sostituzioni utili: radici quadrate, sin, cos

Integrazione delle funzioni razionali

  • Decomposizione in fratti semplici

Esercizi e soluzioni (Capitolo 1)

Integrali impropri

Definizioni ed esempi

  • Integrali su intervalli illimitati
  • Integrali con funzioni non limitate

Teoremi di confronto

Esercizi e soluzioni (Capitolo 2)

Equazioni differenziali ordinarie

Equazioni del primo ordine

  • Separazione delle variabili
  • Equazioni lineari
  • Equazioni omogenee
  • Equazioni non omogenee

Equazioni del secondo ordine a coefficienti costanti

  • Caso omogeneo
  • Metodo dei coefficienti indeterminati per il caso non omogeneo

Modulo: UNIT 1
1) Richiami di Matematica Elementare. Notazioni e terminologia. I numeri interi, razionali, reali. Frazioni, proporzioni, percentuali. Equazioni, disequazioni e sistemi. Pratica di potenze e logaritmi. Richiami di trigonometria. Coordinate Cartesiane e distanza tra punti del piano. Coordinate polari. Numeri complessi.

2) Funzioni di Variabile Reale. Estremo superiore e inferiore, massimo e minimo di un sottoinsieme di R e di una funzione. Funzioni elementari. Limiti di funzioni e proprieta. Limiti notevoli. Funzioni continue e proprieta. Teorema della permanenza del segno. Teorema di esistenza degli zeri. Cenni sulle successioni di numeri reali e sulle serie numeriche.

3) Derivazione. Derivata e significato geometrico. Derivate delle funzioni elementari. Derivata di somma, prodotto, rapporto di due funzioni. Derivata della funzione inversa e di funzioni composte. Massimi e minimi relativi e proprieta. Teoremi di Weierstrass, Rolle, Cauchy, Lagrange. Funzioni con derivata nulla. Forme indeterminate e Teoremi di de l'Hopital. Studio del grafico di funzioni. Derivate di ordine superiore; funzioni con derivate di ordine superiore nulle. Polinomio di Taylor di una funzione.

4)Cenni alle funzioni di due variabili. Limiti di funzioni e continuità. Definizione e calcolo delle derivate parziali.

Modulo: UNIT 2

  • Serie di potenze e serie di Taylor
  • Testi di riferimento: Definizione, raggio di convergenza, funzioni analitiche
  • Serie
  • Testi di riferimento: Definizione, convergenza, serie a termini positivi, test della radice n-esima e del rapporto, principio di confronto
  • Successioni
  • Testi di riferimento: Definizione, limiti, limiti notevoli, principio di confronto
  • Integrale di Riemann
  • Testi di riferimento: Definizione, Teorema fondamentale del calcolo.
  • Integrale improprio
  • Testi di riferimento: Definizione e convergenza
  • Equazioni ordinarie lineari del primo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie
  • Equazioni ordinarie del secondo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie

Modulo: UNIT 1
N/D

UNIT 1
Modulo: UNIT 2
*Successioni numeriche

Successioni di numeri reali

  • Definizioni
  • Esempi fondamentali
  • Convergenza e divergenza
  • Operazioni con le successioni

Teoremi sui limiti

  • Unicità del limite
  • Confronto e permanenza del segno
  • Limiti notevoli
  • Teoremi sulle combinazioni di successioni

Serie numeriche

Serie a termini non negativi

  • Definizione
  • Criteri di convergenza (confronto, rapporto, radice, integrale)

Convergenza assoluta e condizionata

  • Serie a termini di segno variabile
  • Criterio di Leibniz
  • Serie assolutamente convergenti

Serie di potenze in ℝ

Convergenza di una serie di potenze

  • Raggio di convergenza
  • Formula di Cauchy-Hadamard

Serie di Taylor

  • Polinomi di Taylor
  • Calcolo di sviluppi di funzioni elementari
  • Passaggio dal polinomio alla serie
  • Resto di Taylor e stima dell’errore

Integrale di Riemann

Definizione dell’integrale

  • Partizioni e somme di Riemann
  • Funzioni integrabili

Proprietà dell’integrale

  • Linearità
  • Monotonia
  • Additività

Metodi di integrazione

  • Sostituzione (cambio di variabile)
  • Integrazione per parti
  • Esempi applicativi
  • Sostituzioni utili: radici quadrate, sin, cos

Integrazione delle funzioni razionali

  • Decomposizione in fratti semplici

Esercizi e soluzioni (Capitolo 1)

Integrali impropri

Definizioni ed esempi

  • Integrali su intervalli illimitati
  • Integrali con funzioni non limitate

Teoremi di confronto

Esercizi e soluzioni (Capitolo 2)

Equazioni differenziali ordinarie

Equazioni del primo ordine

  • Separazione delle variabili
  • Equazioni lineari
  • Equazioni omogenee
  • Equazioni non omogenee

Equazioni del secondo ordine a coefficienti costanti

  • Caso omogeneo
  • Metodo dei coefficienti indeterminati per il caso non omogeneo

Modulo: UNIT 1
1) Richiami di Matematica Elementare. Notazioni e terminologia. I numeri interi, razionali, reali. Frazioni, proporzioni, percentuali. Equazioni, disequazioni e sistemi. Pratica di potenze e logaritmi. Richiami di trigonometria. Coordinate Cartesiane e distanza tra punti del piano. Coordinate polari. Numeri complessi.

2) Funzioni di Variabile Reale. Estremo superiore e inferiore, massimo e minimo di un sottoinsieme di R e di una funzione. Funzioni elementari. Limiti di funzioni e proprieta. Limiti notevoli. Funzioni continue e proprieta. Teorema della permanenza del segno. Teorema di esistenza degli zeri. Cenni sulle successioni di numeri reali e sulle serie numeriche.

3) Derivazione. Derivata e significato geometrico. Derivate delle funzioni elementari. Derivata di somma, prodotto, rapporto di due funzioni. Derivata della funzione inversa e di funzioni composte. Massimi e minimi relativi e proprieta. Teoremi di Weierstrass, Rolle, Cauchy, Lagrange. Funzioni con derivata nulla. Forme indeterminate e Teoremi di de l'Hopital. Studio del grafico di funzioni. Derivate di ordine superiore; funzioni con derivate di ordine superiore nulle. Polinomio di Taylor di una funzione.

4)Cenni alle funzioni di due variabili. Limiti di funzioni e continuità. Definizione e calcolo delle derivate parziali.

Modulo: UNIT 2

  • Serie di potenze e serie di Taylor
  • Testi di riferimento: Definizione, raggio di convergenza, funzioni analitiche
  • Serie
  • Testi di riferimento: Definizione, convergenza, serie a termini positivi, test della radice n-esima e del rapporto, principio di confronto
  • Successioni
  • Testi di riferimento: Definizione, limiti, limiti notevoli, principio di confronto
  • Integrale di Riemann
  • Testi di riferimento: Definizione, Teorema fondamentale del calcolo.
  • Integrale improprio
  • Testi di riferimento: Definizione e convergenza
  • Equazioni ordinarie lineari del primo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie
  • Equazioni ordinarie del secondo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie

Modulo: UNIT 1
N/D

Modalità d'esame

UNIT 2
Modulo: UNIT 2
N/D
Modulo: UNIT 1
L’esame mira a valutare l’apprendimento tramite una prova scritta e una prova orale (facoltativa). La prova scritta dura due ore e può essere sostituita da due prove intermedie, entrambe della durata di due ore, la prima delle quali si svolge a meta' corso e la seconda a fine corso.

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti di tutte le parti del programma e di essere in grado di svolgere almeno i più semplici tra gli esercizi assegnati.

Per conseguire il punteggio massimo, pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso.

Maggiori informazioni sulla pagine del corso sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

UNIT 1
Modulo: UNIT 2
N/D
Modulo: UNIT 1
L’esame mira a valutare l’apprendimento tramite una prova scritta e una prova orale (facoltativa). La prova scritta dura due ore e può essere sostituita da due prove intermedie, entrambe della durata di due ore, la prima delle quali si svolge a meta' corso e la seconda a fine corso.

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti di tutte le parti del programma e di essere in grado di svolgere almeno i più semplici tra gli esercizi assegnati.

Per conseguire il punteggio massimo, pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso.

Maggiori informazioni sulla pagine del corso sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Testi di riferimento

UNIT 2
Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

UNIT 1
Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Codice insegnamento 10595099

COMPUTER ARCHITECTURE 1° anno · 1° semestre · 12 CFU · INFO-01/A · 0 file

Obiettivi formativi: Il corso si propone di fornire le competenze fondamentali relative all'architettura dei calcolatori moderni e alla programmazione a basso livello. L'obiettivo è guidare lo studente nella comprensione…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi: Il corso si propone di fornire le competenze fondamentali relative all'architettura dei calcolatori moderni e alla programmazione a basso livello. L'obiettivo è guidare lo studente nella comprensione della codifica dati, dell'algebra booleana e dei circuiti logici, fino all'analisi dettagliata di un microprocessore (architettura MIPS) e allo sviluppo di software in linguaggio assembly, ponendo le basi metodologiche per lo studio dei sistemi operativi.
Conoscenza e capacità di comprensione: Al termine dell'insegnamento, lo studente sarà in grado di conoscere i principi dei calcolatori moderni (pipelining, caching, branch prediction, multi-processing), le metodologie di codifica binaria, l'Algebra Booleana e i circuiti logici, l'organizzazione del microprocessore con focus sull'architettura MIPS, nonché la struttura e i paradigmi della programmazione assembly (gestione dati e ricorsione).
Capacità di applicare conoscenza e comprensione: Lo studente sarà in grado di applicare l'Algebra Booleana per analizzare e sintetizzare circuiti combinatori e sequenziali, utilizzare l'architettura MIPS per valutare l'impatto delle scelte di programmazione sulle prestazioni hardware, sviluppare programmi in assembly per algoritmi e strutture dati, e progettare sistemi basati su registri e moduli interconnessi.
Autonomia di giudizio: Lo studente sarà in grado di valutare criticamente le diverse tecniche di progettazione di circuiti e ottimizzazione del microprocessore per scegliere la soluzione più efficiente, comprendendo e valutando in modo autonomo le problematiche relative alle prestazioni del software su hardware specifico.
Abilità comunicative: Lo studente sarà in grado di motivare e argomentare con rigore tecnico le scelte effettuate nella progettazione di circuiti logici o nell'implementazione di programmi in assembly, esponendo in modo chiaro argomenti tecnici complessi legati all'architettura dei calcolatori.
Capacità di apprendimento: Lo studente sarà in grado di identificare differenze e vantaggi delle varie tecniche di progettazione del calcolatore, acquisendo la base concettuale e metodologica necessaria per affrontare e approfondire autonomamente discipline correlate come i Sistemi Operativi.

Programma

UNIT 2
Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Sistemi numerici, operazioni sui numeri binari, porte logiche
  • Progettazione della logica combinatoria: algebra booleana, mappe di Karnaugh, blocchi combinatori, temporizzazione
  • Progettazione della logica sequenziale: latch e flip-flop, progettazione logica sincrona, macchine a stati finiti, temporizzazione della logica sequenziale
  • Blocchi digitali di base: circuiti aritmetici, blocchi sequenziali, array di memoria, array logici

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Number Systems
  • Testi di riferimento: Harris & Harris (Ch. 1.1-1.4, 5.2-5.3)
  • Boolean Algebra and Combinational Circuits
  • Testi di riferimento: Harris & Harris (Ch. 1.5, 2)
  • Sequential Circuits
  • Testi di riferimento: Harris & Harris (Ch. 3)
  • Common Circuits
  • Testi di riferimento: Harris & Harris (Ch. 5)

UNIT 1
Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Sistemi numerici, operazioni sui numeri binari, porte logiche
  • Progettazione della logica combinatoria: algebra booleana, mappe di Karnaugh, blocchi combinatori, temporizzazione
  • Progettazione della logica sequenziale: latch e flip-flop, progettazione logica sincrona, macchine a stati finiti, temporizzazione della logica sequenziale
  • Blocchi digitali di base: circuiti aritmetici, blocchi sequenziali, array di memoria, array logici

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Number Systems
  • Testi di riferimento: Harris & Harris (Ch. 1.1-1.4, 5.2-5.3)
  • Boolean Algebra and Combinational Circuits
  • Testi di riferimento: Harris & Harris (Ch. 1.5, 2)
  • Sequential Circuits
  • Testi di riferimento: Harris & Harris (Ch. 3)
  • Common Circuits
  • Testi di riferimento: Harris & Harris (Ch. 5)

Modalità d'esame

UNIT 2
Per superare l'esame occorre conseguire un voto non inferiore a 18/30. La prova orale è opzionale. Se sostenuta, il voto finale sarà la media fra la prova scritta e la prova orale.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti relativi alla rappresentazione binaria, alla logica booleana, alle reti combinatorie e sequenziali e all'architettura di un elaboratore.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo in grado di raccordarli in modo logico e coerente.

UNIT 1
Per superare l'esame occorre conseguire un voto non inferiore a 18/30. La prova orale è opzionale. Se sostenuta, il voto finale sarà la media fra la prova scritta e la prova orale.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti relativi alla rappresentazione binaria, alla logica booleana, alle reti combinatorie e sequenziali e all'architettura di un elaboratore.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo in grado di raccordarli in modo logico e coerente.

Testi di riferimento

UNIT 2
Modulo: UNIT 2
N/D
Modulo: UNIT 1
Digital Design and Computer Architecture, ARM Edition, by Sarah Harris and David Harris (ISBN: 978-0-12-800056-4)

Modulo: UNIT 2
N/D
Modulo: UNIT 1
N/D

UNIT 1
Modulo: UNIT 2
N/D
Modulo: UNIT 1
Digital Design and Computer Architecture, ARM Edition, by Sarah Harris and David Harris (ISBN: 978-0-12-800056-4)

Modulo: UNIT 2
N/D
Modulo: UNIT 1
N/D

Codice insegnamento 10595546

LINEAR ALGEBRA 1° anno · 1° semestre · 6 CFU · MATH-02/A · 0 file

Obiettivi formativi Apprendimento dei concetti fondamentali dell’algebra lineare e delle principali tecniche di calcolo matriciale. Spazi vettoriali, sottospazi, basi e dimensione. Sistemi lineari e matrici.…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi Apprendimento dei concetti fondamentali dell’algebra lineare e delle principali tecniche di calcolo matriciale. Spazi vettoriali, sottospazi, basi e dimensione. Sistemi lineari e matrici. Determinanti, rango e invertibilità. Applicazioni lineari e loro rappresentazione matriciale. Autovalori, autovettori e diagonalizzazione. Prodotti scalari, ortogonalità e proiezioni.
Conoscenza e capacità di comprensione Conoscenza dei concetti fondamentali dell’algebra lineare. Comprensione del ruolo di vettori, matrici e applicazioni lineari nella formulazione e risoluzione di problemi matematici. Capacità di interpretare e utilizzare le principali proprietà algebriche e geometriche degli spazi vettoriali.
Capacità di applicare conoscenza e comprensione Essere in grado di risolvere sistemi lineari, calcolare rango, determinanti, basi, dimensioni, autovalori e autovettori. Saper applicare le tecniche dell’algebra lineare a problemi di geometria, modellazione matematica e analisi di sistemi lineari.
Autonomia di giudizio Capacità di scegliere gli strumenti più adeguati per affrontare un problema di algebra lineare e di valutare la correttezza dei procedimenti e dei risultati ottenuti.
Abilità comunicative Capacità di esporre in modo chiaro definizioni, risultati teorici e procedimenti di calcolo relativi all’algebra lineare.
Capacità di apprendimento Capacità di apprendere e applicare ulteriori strumenti matematici a partire dai concetti e dalle tecniche apprese durante il corso.

Programma

Sistemi Lineari, Spazi Vettoriali, Applicazioni tra Spazi, Determinanti, Similarita, Autovettore e Autovalore, Applicazioni. Si veda il libro di Jim Hefferon.

Modalità d'esame

L’esame consiste in una prova scritta.

La prova comprende esercizi e domande teoriche riguardanti l’intero programma del corso. I problemi possono includere calcoli, brevi spiegazioni di concetti teorici e applicazioni dei metodi dell’algebra lineare.

Il voto finale è determinato dal risultato della prova.

Testi di riferimento

Linear Algebra by Jim Hefferon. URL: https://hefferon.net/linearalgebra/

Codice insegnamento 10595524

PHYSICS 1° anno · 2° semestre · 6 CFU · PHYS-01/A · 0 file

OBIETTIVI GENERALI Insegnare agli studenti le leggi fondamentali della fisica e la loro applicazione a situazioni del mondo reale. Sviluppare le abilità di problem solving, descrivendo i fenomeni fisici sia attraverso la…

Scheda dell'insegnamento

Scheda ripresa da un altro corso di laurea dello stesso ateneo.

Obiettivi formativi

OBIETTIVI GENERALI
Insegnare agli studenti le leggi fondamentali della fisica e la loro applicazione a situazioni del mondo reale.
Sviluppare le abilità di problem solving, descrivendo i fenomeni fisici sia attraverso la formulazione matematica sia mediante l’intuizione fisica.
OBIETTIVI SPECIFICI Conoscenza e comprensione
Conoscere le nozioni di base della meccanica newtoniana, della fisica dei fluidi, della termodinamica, dell’elettricità e del magnetismo.
Conoscere i concetti fondamentali di forza, momento della forza, lavoro, energia potenziale, energia cinetica, energia meccanica, potenza, impulso, quantità di moto e momento angolare.
Conoscere alcune leggi di conservazione della fisica e la loro importanza.
Conoscere i concetti di temperatura, calore ed entropia applicati a semplici sistemi termodinamici.
Conoscere i concetti di campo elettrico e potenziale, campo magnetico e correnti elettriche.
Comprendere il testo di un esercizio di fisica.
Capacità applicative
Lo studente sarà in grado di risolvere una grande varietà di problemi di fisica, formalizzando la loro soluzione dal punto di vista matematico.
Sarà inoltre in grado di risolvere problemi in modo coerente, sia dal punto di vista formale che quantitativo, e di valutare gli effetti dominanti in un problema fisico.
Saprà applicare le leggi di Newton per descrivere il moto di un punto materiale, di sistemi di punti e la rotazione dei corpi rigidi.
Sarà in grado di risolvere problemi di dinamica utilizzando i concetti di lavoro, energia cinetica, energia potenziale ed energia meccanica.
Saprà utilizzare la conservazione dell’energia, della quantità di moto e del momento angolare in un’ampia gamma di situazioni.
Sarà in grado di risolvere semplici problemi di statica e dinamica dei fluidi.
Saprà affrontare semplici problemi riguardanti l’energia termica utilizzando il primo principio della termodinamica.
Sarà in grado di descrivere il significato del concetto di entropia e della seconda legge della termodinamica.
Saprà descrivere i campi elettrici e il loro potenziale nel caso di cariche stazionarie.
Sarà in grado di descrivere i campi magnetici generati da correnti stazionarie e i fenomeni legati all’induzione elettromagnetica.
Capacità critiche e di giudizio
Sarà in grado di stabilire se una relazione tra grandezze fisiche o una legge sia corretta anche dal punto di vista dimensionale.
Svilupperà capacità di ragionamento quantitativo e analitico utili per studiare, modellizzare e comprendere problemi di fisica.
Capacità comunicative
Sarà in grado di parlare di fisica utilizzando una terminologia appropriata.
Saprà descrivere un problema complesso, isolandone i contributi più rilevanti.
Capacità di apprendimento
Avrà la capacità di consultare testi di fisica e comprenderne i contenuti.

Programma

Programma del modulo:

Grandezze fisiche e unità di misura. Il sistema SI. Cinematica del punto materiale. Scalari e vettori. Moto in 2D. Le leggi di Newton e della dinamica. Lavoro ed energia. Conservazione dell'energia. Il centro di massa di un corpo solido. Quantità di moto del punto materiale. Quantità di moto di un sistema di particelle. Conservazione della quantità di moto. Equilibrio di corpi solidi. Principi di statica applicati al corpo umano. Momento meccanico e il suo utilizzo nel corpo umano. Statica dei fluidi. Dinamica dei fluidi. Concetti generali sul moto dei fluidi. Equazione di continuità legge di Bernoulli. Pompa e cuore. Stenosi e aneurisma. TIA. Tensione superficiale e legge di Laplace. Fluidi reali Moto laminare e turbolento. Hagen-Poiseuille. Misurazione della pressione sanguigna. Fisica dell'apparato circolatorio e respiratorio. Lavoro cardiaco e potenza. Fenomeni ondulatori. Onde meccaniche Esempio di onde. La propagazione delle onde. La velocità delle onde. Intensità delle onde e potenza delle onde. Principio di sovrapposizione. Temperatura. Equilibrio termico e legge Zero della termodinamica. Dilatazione termica. Le leggi del gas e la temperatura assoluta. L’equazione di stato del gas ideale. Calore ed energia interna. Calore specifico. Calorimetria. Conduzione di calore. Capacità di calore e calore specifico. La prima legge della termodinamica. Entropia e seconda legge della termodinamica. Ciclo termodinamico di una fase cardiaca. Metabolismo umano e prima legge. Carica elettrica e legge di Coulomb. Campo elettrico. Flusso del campo elettrico e legge di Gauss. Conduttore e isolante carico isolato. Forze elettrostatiche e gravitazionali. Energia potenziale elettrica. Superfici equipotenziali. Condensatore e dielettrico. Corrente elettrica. Densità corrente. Resistenza, resistività e conducibilità. Legge di Ohm. Circuito. Fenomeni elettrici del cuore: ECG. Il campo magnetico, movimento di una carica in un campo magnetico. Legge di Biot-Savart. La legge di Ampere. La legge dell'induzione di Faraday. La legge di Lenz. Forza elettromotrice derivante dal movimento. Campo elettrico indotto. Variazione di campi elettrici produce campi magnetici. Equazioni di Maxwell. Produzione di onde elettromagnetiche. La luce come onda elettromagnetica. Lo spettro elettromagnetico e le relative applicazioni alla medicina: ossimetria, termografia, diagnostica a raggi X. Ottica geometrica. Il modello di luce del raggio. Riflessione. Formazione dell'immagine da uno specchio sferico e piano. Indice di Rifrazione. La legge di Snell. Riflessione interna totale. Fibra ottica. Lenti sottili. L'equazione da lente sottile. Ingrandimento. L'occhio umano. Lenti correttive. Riso1uzione dell'occhio umano e ingrandimento utile. Fibre ottiche ed endoscopia. Modello atomico Spettro a raggi X. La scoperta del nucleo. Proprietà di alcuni nuclei. Decadimento radioattivo. Radiazione ionizzante.

  • Lezione 1

Grandezze fisiche e unità di misura

Sistema Internazionale (SI)

Analisi dimensionale e ordini di grandezza

  • Testi di riferimento: NA
  • Lezione 2

Scalari e vettori

Operazioni tra vettori

Esempi di grandezze vettoriali in fisiologia (forza muscolare, velocità del sangue)

  • Lezione 3

Cinematica del punto materiale: posizione, velocità, accelerazione

Moto uniforme e uniformemente accelerato

  • Lezione 4

Moto in due dimensioni: moto parabolico, moto circolare

Applicazioni biomediche (movimento articolare, rotazione dell’arto)

  • Lezione 5

Le leggi di Newton

Concetti di forza e massa

Applicazioni: postura, equilibrio, movimenti nel corpo umano

  • Lezione 6

Lavoro ed energia

Energia cinetica e potenziale

Conservazione dell’energia

  • Lezione 7

Quantità di moto e sua conservazione

Centro di massa

Applicazioni al corpo umano e al passo

  • Lezione 8

Equilibrio dei corpi solidi

Momento meccanico

Statica applicata al corpo umano (leve e articolazioni)

  • Lezione 9

Statica dei fluidi

Pressione e principio di Pascal

Legge di Archimede

  • Lezione 10

Dinamica dei fluidi

Equazione di continuità e legge di Bernoulli

Applicazioni: pompa cardiaca, stenosi, aneurisma

  • Lezione 11

Tensione superficiale e legge di Laplace

Moto laminare e turbolento

Legge di Hagen–Poiseuille

  • Lezione 12

Misurazione della pressione sanguigna

Fisica dell’apparato circolatorio e respiratorio

Lavoro e potenza cardiaca

  • Lezione 13

Temperatura e equilibrio termico

Legge zero della termodinamica

Dilatazione termica

  • Lezione 14

Gas ideali e legge dei gas

Equazione di stato del gas perfetto

Calore, energia interna e calore specifico

  • Lezione 15

Calorimetria

Conduzione del calore e capacità termica

Prima legge della termodinamica

Applicazioni al metabolismo umano

  • Lezione 16

Entropia e seconda legge della termodinamica

Ciclo termodinamico di una fase cardiaca

Lavoro meccanico e rendimento nel corpo umano

  • Lezione 17

Carica elettrica e legge di Coulomb

Campo elettrico

Flusso del campo e legge di Gauss

  • Lezione 18

Conduttori e isolanti

Energia potenziale elettrica e superfici equipotenziali

Condensatore e dielettrico

  • Lezione 19

Corrente elettrica, densità di corrente

Resistenza, resistività e legge di Ohm

Circuiti elettrici semplici

Applicazione: fenomeni elettrici del cuore, ECG

  • Lezione 20

Campo magnetico

Moto di una carica in un campo magnetico

Leggi di Biot–Savart, Ampère, Faraday e Lenz

Forza elettromotrice e induzione

  • Lezione 21

Fenomeni ondulatori

Onde meccaniche: propagazione, velocità, intensità

Principio di sovrapposizione

  • Lezione 22

Onde elettromagnetiche e spettro EM

Applicazioni mediche: ossimetria, termografia, raggi X

  • Lezione 23

Ottica geometrica

Riflessione, rifrazione, legge di Snell

Lenti sottili, ingrandimento, occhio umano e lenti correttive

Fibre ottiche ed endoscopia

  • Lezione 24

Modello atomico e spettro a raggi X

Proprietà dei nuclei, decadimento radioattivo

Radiazione ionizzante e sicurezza in diagnostica medica

Modalità d'esame

Per superare l'esame occorre conseguire un voto non inferiore a 18/30 in ciascun modulo. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti trattati durante il corso

Per conseguire un punteggio pari a 30/30 e lode lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, argomentando un ragionamento lineare con l’impiego di termini tecnici ed avvalendosi di espressioni linguistiche corrette

Testi di riferimento

Fisica per scienze ed ingegneria: Raymond A. Serway and John W. Jewett

Fondamenti di Fisica: David Halliday, Robert Resnick, Jearl Walker John Wiley & Sons

Codice insegnamento 10595523

PROGRAMMING 1° anno · 1° semestre · 12 CFU · INFO-01/A · 0 file

Obiettivi generali Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.
Obiettivi specifici:
Conoscenza e comprensione Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.
Applicare conoscenza e comprensione: Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.
Capacità critiche e di giudizio Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.
Capacità comunicative Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.
Capacità di apprendimento Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

Programma

UNIT 2
Modulo: UNIT 2
Introduzione alla programmazione in linguaggio Python (4 ore).

Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore).

Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore).

Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore).

Debugging e testing di programmi (2 ore).

Differenza tra algoritmi ricorsivi e iterativi (12 ore).

Moduli Python per grafica, manipolazione file, testi e accesso a internet (12 ore).

Modulo: UNIT 1
Introduzione alla programmazione in linguaggio Python (4 ore).

Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore).

Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore).

Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore).

Debugging e testing di programmi (2 ore).

Differenza tra algoritmi ricorsivi e iterativi (12 ore).

Moduli Python per grafica, manipolazone file, testi e accesso a internet (12 ore).

Modulo: UNIT 2

  • Introduction to programming through the Python language (4 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Leverage the basic data structures to design and develop programs

through procedural programming and object-oriented programming (4 hours)

  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Program debugging and testing (2 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Differences between recursive and iterative algorithms (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Python libraries for graphics, file handling (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey

Modulo: UNIT 1

  • Introduction to programming through the Python language (4 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Leverage the basic data structures to design and develop programs

through procedural programming and object-oriented programming (4 hours)

  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Program debugging and testing (2 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Differences between recursive and iterative algorithms (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Python libraries for graphics, file handling(12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey

UNIT 1
Modulo: UNIT 2
Introduzione alla programmazione in linguaggio Python (4 ore).

Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore).

Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore).

Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore).

Debugging e testing di programmi (2 ore).

Differenza tra algoritmi ricorsivi e iterativi (12 ore).

Moduli Python per grafica, manipolazione file, testi e accesso a internet (12 ore).

Modulo: UNIT 1
Introduzione alla programmazione in linguaggio Python (4 ore).

Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore).

Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore).

Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore).

Debugging e testing di programmi (2 ore).

Differenza tra algoritmi ricorsivi e iterativi (12 ore).

Moduli Python per grafica, manipolazone file, testi e accesso a internet (12 ore).

Modulo: UNIT 2

  • Introduction to programming through the Python language (4 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Leverage the basic data structures to design and develop programs

through procedural programming and object-oriented programming (4 hours)

  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Program debugging and testing (2 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Differences between recursive and iterative algorithms (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Python libraries for graphics, file handling (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey

Modulo: UNIT 1

  • Introduction to programming through the Python language (4 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Leverage the basic data structures to design and develop programs

through procedural programming and object-oriented programming (4 hours)

  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Program debugging and testing (2 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Differences between recursive and iterative algorithms (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Python libraries for graphics, file handling(12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey

Modalità d'esame

UNIT 2
L'esame si articolerà in due prove scritte indipendenti, una su carta e una al computer.

UNIT 1
L'esame si articolerà in due prove scritte indipendenti, una su carta e una al computer.

Testi di riferimento

UNIT 2
Modulo: UNIT 2
Think Python 2nd Edition by Allen B. Downey

INTRODUZIONE ALLA PROGRAMMAZIONE CON PYTHON, John V. Guttag

Modulo: UNIT 1
Think Python 2nd Edition by Allen B. Downey

Modulo: UNIT 2
Altri testi utili:

Guido van Rossum, Python Tutorial

Josh Cogliati, Non-Programmers Tutorial For Python

F. Pellacini, Fondamenti di Programmazione in Python

F. Pellacini, Codice di Fondamenti di Programmazione in Python

Modulo: UNIT 1

  • M. Lutz, Programming Python, O'Reilly Media, Inc.
  • Guido van Rossum, Python Tutorial
  • Josh Cogliati, Non-Programmers Tutorial For Python
  • F. Pellacini, Fondamenti di Programmazione in Python
  • F. Pellacini, Codice di Fondamenti di Programmazione in Python

UNIT 1
Modulo: UNIT 2
Think Python 2nd Edition by Allen B. Downey

INTRODUZIONE ALLA PROGRAMMAZIONE CON PYTHON, John V. Guttag

Modulo: UNIT 1
Think Python 2nd Edition by Allen B. Downey

Modulo: UNIT 2
Altri testi utili:

Guido van Rossum, Python Tutorial

Josh Cogliati, Non-Programmers Tutorial For Python

F. Pellacini, Fondamenti di Programmazione in Python

F. Pellacini, Codice di Fondamenti di Programmazione in Python

Modulo: UNIT 1

  • M. Lutz, Programming Python, O'Reilly Media, Inc.
  • Guido van Rossum, Python Tutorial
  • Josh Cogliati, Non-Programmers Tutorial For Python
  • F. Pellacini, Fondamenti di Programmazione in Python
  • F. Pellacini, Codice di Fondamenti di Programmazione in Python

Codice insegnamento 10595102

PROGRAMMING 2 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Apprendimento delle nozioni fondamentali della programmazione orientata agli oggetti attraverso il linguaggio Java. Obiettivi specifici: Nozioni di programmazione orientata agli oggetti: classi e…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Apprendimento delle nozioni fondamentali della programmazione orientata agli oggetti attraverso il linguaggio Java.
Obiettivi specifici: Nozioni di programmazione orientata agli oggetti: classi e oggetti, incapsulamento, ereditarietà, polimorfismo, binding statico e dinamico, design pattern. Programmazione funzionale. Strumenti e metodologie per lo sviluppo software. Il linguaggio Java.
Conoscenza e capacità di comprensione: Conoscenza dei costrutti della programmazione orientata agli oggetti, con particolare attenzione al linguaggio Java. Comprensione di programmi Java. Capacità di sviluppare programmi Java di piccole e medie dimensioni.
Capacità di applicare conoscenza e comprensione: Capacità di applicare metodologie di sviluppo di base per sistemi software di piccole e medie dimensioni. Esperienza nell’utilizzo di strumenti per lo sviluppo di tali sistemi in Java.
Autonomia di giudizio: Capacità critica nel distinguere istruzioni, costrutti di programmazione e pattern errati o inefficienti da quelli appropriati ed efficienti.
Abilità comunicative: Presentazione del progetto sviluppato.
Capacità di apprendimento: Capacità di apprendere e applicare nuove tecniche di programmazione partendo da quelle affrontate durante il corso.

Codice insegnamento 10600241

UNIT 1 1° anno · 1° semestre · 6 CFU · MATH-03/A · 0 file

Obiettivi generali: Acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni; fornire strumenti di…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni; fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.

Il corso e' organizzato in due unita': Calculus Unit 1 e Calculus Unit 2. Si rimanda a queste unita' per gli Obiettivi Specifici.

Modulo: UNIT 2
N/D
Modulo: UNIT 1
Obiettivi generali:

acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni.

Obiettivi specifici:

Conoscenza e comprensione: al termine del corso lo studente avrà' acquisito le nozioni e i risultati di base del Calcolo Differenziale con particolare attenzione ai concetti di funzione, limite di funzione e derivata.

Applicare conoscenza e comprensione: al termine del corso lo studente sarà in grado di risolvere semplici problemi del Calcolo Differenziale, quali il calcolo esplicito di derivate, il calcolo del massimo e minimo locale e globale di funzioni di una variabile, e il disegno approssimativo del grafico di funzioni.

Autonomia di giudizio: lo studente avra' le basi per utilizzare un grafico come strumento di analisi di una situazione concreta descrivibile matematicamente.

Abilità comunicative: lo studente sarà in grado di comprendere un testo scientifico di complessità' non elevata e di riassumerne i concetti principali.

Capacita' di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso, relativo ad aspetti piu' avanzati del Calcolo Differenziale.

Programma

Modulo: UNIT 2
*Successioni numeriche

Successioni di numeri reali

  • Definizioni
  • Esempi fondamentali
  • Convergenza e divergenza
  • Operazioni con le successioni

Teoremi sui limiti

  • Unicità del limite
  • Confronto e permanenza del segno
  • Limiti notevoli
  • Teoremi sulle combinazioni di successioni

Serie numeriche

Serie a termini non negativi

  • Definizione
  • Criteri di convergenza (confronto, rapporto, radice, integrale)

Convergenza assoluta e condizionata

  • Serie a termini di segno variabile
  • Criterio di Leibniz
  • Serie assolutamente convergenti

Serie di potenze in ℝ

Convergenza di una serie di potenze

  • Raggio di convergenza
  • Formula di Cauchy-Hadamard

Serie di Taylor

  • Polinomi di Taylor
  • Calcolo di sviluppi di funzioni elementari
  • Passaggio dal polinomio alla serie
  • Resto di Taylor e stima dell’errore

Integrale di Riemann

Definizione dell’integrale

  • Partizioni e somme di Riemann
  • Funzioni integrabili

Proprietà dell’integrale

  • Linearità
  • Monotonia
  • Additività

Metodi di integrazione

  • Sostituzione (cambio di variabile)
  • Integrazione per parti
  • Esempi applicativi
  • Sostituzioni utili: radici quadrate, sin, cos

Integrazione delle funzioni razionali

  • Decomposizione in fratti semplici

Esercizi e soluzioni (Capitolo 1)

Integrali impropri

Definizioni ed esempi

  • Integrali su intervalli illimitati
  • Integrali con funzioni non limitate

Teoremi di confronto

Esercizi e soluzioni (Capitolo 2)

Equazioni differenziali ordinarie

Equazioni del primo ordine

  • Separazione delle variabili
  • Equazioni lineari
  • Equazioni omogenee
  • Equazioni non omogenee

Equazioni del secondo ordine a coefficienti costanti

  • Caso omogeneo
  • Metodo dei coefficienti indeterminati per il caso non omogeneo

Modulo: UNIT 1
1) Richiami di Matematica Elementare. Notazioni e terminologia. I numeri interi, razionali, reali. Frazioni, proporzioni, percentuali. Equazioni, disequazioni e sistemi. Pratica di potenze e logaritmi. Richiami di trigonometria. Coordinate Cartesiane e distanza tra punti del piano. Coordinate polari. Numeri complessi.

2) Funzioni di Variabile Reale. Estremo superiore e inferiore, massimo e minimo di un sottoinsieme di R e di una funzione. Funzioni elementari. Limiti di funzioni e proprieta. Limiti notevoli. Funzioni continue e proprieta. Teorema della permanenza del segno. Teorema di esistenza degli zeri. Cenni sulle successioni di numeri reali e sulle serie numeriche.

3) Derivazione. Derivata e significato geometrico. Derivate delle funzioni elementari. Derivata di somma, prodotto, rapporto di due funzioni. Derivata della funzione inversa e di funzioni composte. Massimi e minimi relativi e proprieta. Teoremi di Weierstrass, Rolle, Cauchy, Lagrange. Funzioni con derivata nulla. Forme indeterminate e Teoremi di de l'Hopital. Studio del grafico di funzioni. Derivate di ordine superiore; funzioni con derivate di ordine superiore nulle. Polinomio di Taylor di una funzione.

4)Cenni alle funzioni di due variabili. Limiti di funzioni e continuità. Definizione e calcolo delle derivate parziali.

Modulo: UNIT 2

  • Serie di potenze e serie di Taylor
  • Testi di riferimento: Definizione, raggio di convergenza, funzioni analitiche
  • Serie
  • Testi di riferimento: Definizione, convergenza, serie a termini positivi, test della radice n-esima e del rapporto, principio di confronto
  • Successioni
  • Testi di riferimento: Definizione, limiti, limiti notevoli, principio di confronto
  • Integrale di Riemann
  • Testi di riferimento: Definizione, Teorema fondamentale del calcolo.
  • Integrale improprio
  • Testi di riferimento: Definizione e convergenza
  • Equazioni ordinarie lineari del primo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie
  • Equazioni ordinarie del secondo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie

Modulo: UNIT 1
N/D

Modalità d'esame

Modulo: UNIT 2
N/D
Modulo: UNIT 1
L’esame mira a valutare l’apprendimento tramite una prova scritta e una prova orale (facoltativa). La prova scritta dura due ore e può essere sostituita da due prove intermedie, entrambe della durata di due ore, la prima delle quali si svolge a meta' corso e la seconda a fine corso.

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti di tutte le parti del programma e di essere in grado di svolgere almeno i più semplici tra gli esercizi assegnati.

Per conseguire il punteggio massimo, pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso.

Maggiori informazioni sulla pagine del corso sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Testi di riferimento

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Codice insegnamento AID-eb6f8265-6e2

UNIT 1 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.

Obiettivi specifici:

codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli. Inoltre, il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.

Conoscenza e comprensione:

Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione. Inoltre, lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.

Applicare conoscenza e comprensione:

Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti. Inoltre, le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.

Capacità critiche e di giudizio:

saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito. Inoltre,

lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.

Capacità comunicative:

essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito. Formare all'esposizione rigorosa degli argomenti tecnici.

Capacità di apprendimento:

Capire le differenze e i vantaggi delle varie tecniche di progettazione. Inoltre, il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

A. Conoscenza e comprensione (Knowledge and understanding)

Al termine dell'insegnamento, lo studente sarà in grado di:

Conoscere i principi fondamentali dell'architettura dei calcolatori moderni, compresi i concetti chiave di pipelining, caching, branch prediction e multi-processing.

Comprendere le metodologie di codifica binaria per diversi tipi di dati.

Conoscere e comprendere l'Algebra Booleana, i circuiti combinatori e sequenziali, i flip-flop e la loro interconnessione in moduli logici.

Conoscere l'organizzazione del microprocessore, in particolare l'architettura MIPS, come modello concreto delle idee generali del corso.

Comprendere la struttura e i paradigmi di base della programmazione assembly, incluse la gestione delle strutture dati e l'implementazione della ricorsione.

B. Capacità di applicare conoscenza e comprensione (Applying knowledge and understanding)

Al termine dell'insegnamento, lo studente sarà in grado di:

Applicare le leggi dell'Algebra Booleana per analizzare e sintetizzare semplici circuiti combinatori e sequenziali che realizzino specifiche funzionalità.

Utilizzare i concetti appresi sull'architettura MIPS per analizzare le implicazioni delle scelte di programmazione sulla performance su hardware specifico (tramite esercizi di programmazione e valutazione delle prestazioni).

Sviluppare semplici programmi in linguaggio assembly per implementare algoritmi e manipolare strutture dati di base.

Progettare semplici sistemi basati su registri e moduli interconnessi per specifici compiti di elaborazione.

C. Autonomia di giudizio (Making judgements)

Al termine dell'insegnamento, lo studente sarà in grado di:

Valutare criticamente le diverse tecniche e approcci di progettazione studiati (es. per circuiti o per ottimizzazione del microprocessore) per scegliere la soluzione più efficiente e adeguata a un determinato compito.

Comprendere autonomamente le problematiche relative alle prestazioni del software su hardware specifico e di valutarne in modo critico le caratteristiche.

D. Abilità comunicative (Communication skills)

Al termine dell'insegnamento, lo studente sarà in grado di:

Motivare e argomentare con rigore tecnico le scelte effettuate nella progettazione di circuiti logici o nell'implementazione di programmi in assembly.

Esporre in modo chiaro e rigoroso argomenti tecnici complessi legati all'architettura dei calcolatori.

E. Capacità di apprendere (Learning skills)

Al termine dell'insegnamento, lo studente sarà in grado di:

Identificare le differenze e i vantaggi delle varie tecniche di progettazione e organizzazione del calcolatore.

Acquisire la base concettuale e metodologica necessaria per affrontare e approfondire autonomamente discipline correlate, come i Sistemi Operativi e la programmazione di sistemi paralleli.

Programma

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Sistemi numerici, operazioni sui numeri binari, porte logiche
  • Progettazione della logica combinatoria: algebra booleana, mappe di Karnaugh, blocchi combinatori, temporizzazione
  • Progettazione della logica sequenziale: latch e flip-flop, progettazione logica sincrona, macchine a stati finiti, temporizzazione della logica sequenziale
  • Blocchi digitali di base: circuiti aritmetici, blocchi sequenziali, array di memoria, array logici

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Number Systems
  • Testi di riferimento: Harris & Harris (Ch. 1.1-1.4, 5.2-5.3)
  • Boolean Algebra and Combinational Circuits
  • Testi di riferimento: Harris & Harris (Ch. 1.5, 2)
  • Sequential Circuits
  • Testi di riferimento: Harris & Harris (Ch. 3)
  • Common Circuits
  • Testi di riferimento: Harris & Harris (Ch. 5)

Modalità d'esame

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. La prova orale è opzionale. Se sostenuta, il voto finale sarà la media fra la prova scritta e la prova orale.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti relativi alla rappresentazione binaria, alla logica booleana, alle reti combinatorie e sequenziali e all'architettura di un elaboratore.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo in grado di raccordarli in modo logico e coerente.

Testi di riferimento

Modulo: UNIT 2
N/D
Modulo: UNIT 1
Digital Design and Computer Architecture, ARM Edition, by Sarah Harris and David Harris (ISBN: 978-0-12-800056-4)

Modulo: UNIT 2
N/D
Modulo: UNIT 1
N/D

Codice insegnamento AID-23674834-926

UNIT 1 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali

Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.

Obiettivi specifici:

Conoscenza e comprensione

Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.

Applicare conoscenza e comprensione:

Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati

utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.

Capacità critiche e di giudizio

Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.

Capacità comunicative

Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.

Capacità di apprendimento

Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

Obiettivi generali

Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.

Obiettivi specifici:

Conoscenza e comprensione

Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.

Applicare conoscenza e comprensione:

Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati

utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.

Capacità critiche e di giudizio

Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.

Capacità comunicative

Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.

Capacità di apprendimento

Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

Programma

Modulo: UNIT 2
Introduzione alla programmazione in linguaggio Python (4 ore).

Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore).

Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore).

Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore).

Debugging e testing di programmi (2 ore).

Differenza tra algoritmi ricorsivi e iterativi (12 ore).

Moduli Python per grafica, manipolazione file, testi e accesso a internet (12 ore).

Modulo: UNIT 1
Introduzione alla programmazione in linguaggio Python (4 ore).

Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore).

Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore).

Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore).

Debugging e testing di programmi (2 ore).

Differenza tra algoritmi ricorsivi e iterativi (12 ore).

Moduli Python per grafica, manipolazone file, testi e accesso a internet (12 ore).

Modulo: UNIT 2

  • Introduction to programming through the Python language (4 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Leverage the basic data structures to design and develop programs

through procedural programming and object-oriented programming (4 hours)

  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Program debugging and testing (2 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Differences between recursive and iterative algorithms (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Python libraries for graphics, file handling (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey

Modulo: UNIT 1

  • Introduction to programming through the Python language (4 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Leverage the basic data structures to design and develop programs

through procedural programming and object-oriented programming (4 hours)

  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Program debugging and testing (2 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Differences between recursive and iterative algorithms (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Python libraries for graphics, file handling(12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey

Modalità d'esame

L'esame si articolerà in due prove scritte indipendenti, una su carta e una al computer.

Testi di riferimento

Modulo: UNIT 2
Think Python 2nd Edition by Allen B. Downey

INTRODUZIONE ALLA PROGRAMMAZIONE CON PYTHON, John V. Guttag

Modulo: UNIT 1
Think Python 2nd Edition by Allen B. Downey

Modulo: UNIT 2
Altri testi utili:

Guido van Rossum, Python Tutorial

Josh Cogliati, Non-Programmers Tutorial For Python

F. Pellacini, Fondamenti di Programmazione in Python

F. Pellacini, Codice di Fondamenti di Programmazione in Python

Modulo: UNIT 1

  • M. Lutz, Programming Python, O'Reilly Media, Inc.
  • Guido van Rossum, Python Tutorial
  • Josh Cogliati, Non-Programmers Tutorial For Python
  • F. Pellacini, Fondamenti di Programmazione in Python
  • F. Pellacini, Codice di Fondamenti di Programmazione in Python

Codice insegnamento AID-307b5019-9fe

UNIT 1 1° anno · 2° semestre · 6 CFU · MATH-03/A · 0 file

Obiettivi generali: Acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni; fornire strumenti di…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni; fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.

Il corso e' organizzato in due unita': Calculus Unit 1 e Calculus Unit 2. Si rimanda a queste unita' per gli Obiettivi Specifici.

Modulo: UNIT 2
N/D
Modulo: UNIT 1
Obiettivi generali:

acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni.

Obiettivi specifici:

Conoscenza e comprensione: al termine del corso lo studente avrà' acquisito le nozioni e i risultati di base del Calcolo Differenziale con particolare attenzione ai concetti di funzione, limite di funzione e derivata.

Applicare conoscenza e comprensione: al termine del corso lo studente sarà in grado di risolvere semplici problemi del Calcolo Differenziale, quali il calcolo esplicito di derivate, il calcolo del massimo e minimo locale e globale di funzioni di una variabile, e il disegno approssimativo del grafico di funzioni.

Autonomia di giudizio: lo studente avra' le basi per utilizzare un grafico come strumento di analisi di una situazione concreta descrivibile matematicamente.

Abilità comunicative: lo studente sarà in grado di comprendere un testo scientifico di complessità' non elevata e di riassumerne i concetti principali.

Capacita' di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso, relativo ad aspetti piu' avanzati del Calcolo Differenziale.

Programma

Modulo: UNIT 2
*Successioni numeriche

Successioni di numeri reali

  • Definizioni
  • Esempi fondamentali
  • Convergenza e divergenza
  • Operazioni con le successioni

Teoremi sui limiti

  • Unicità del limite
  • Confronto e permanenza del segno
  • Limiti notevoli
  • Teoremi sulle combinazioni di successioni

Serie numeriche

Serie a termini non negativi

  • Definizione
  • Criteri di convergenza (confronto, rapporto, radice, integrale)

Convergenza assoluta e condizionata

  • Serie a termini di segno variabile
  • Criterio di Leibniz
  • Serie assolutamente convergenti

Serie di potenze in ℝ

Convergenza di una serie di potenze

  • Raggio di convergenza
  • Formula di Cauchy-Hadamard

Serie di Taylor

  • Polinomi di Taylor
  • Calcolo di sviluppi di funzioni elementari
  • Passaggio dal polinomio alla serie
  • Resto di Taylor e stima dell’errore

Integrale di Riemann

Definizione dell’integrale

  • Partizioni e somme di Riemann
  • Funzioni integrabili

Proprietà dell’integrale

  • Linearità
  • Monotonia
  • Additività

Metodi di integrazione

  • Sostituzione (cambio di variabile)
  • Integrazione per parti
  • Esempi applicativi
  • Sostituzioni utili: radici quadrate, sin, cos

Integrazione delle funzioni razionali

  • Decomposizione in fratti semplici

Esercizi e soluzioni (Capitolo 1)

Integrali impropri

Definizioni ed esempi

  • Integrali su intervalli illimitati
  • Integrali con funzioni non limitate

Teoremi di confronto

Esercizi e soluzioni (Capitolo 2)

Equazioni differenziali ordinarie

Equazioni del primo ordine

  • Separazione delle variabili
  • Equazioni lineari
  • Equazioni omogenee
  • Equazioni non omogenee

Equazioni del secondo ordine a coefficienti costanti

  • Caso omogeneo
  • Metodo dei coefficienti indeterminati per il caso non omogeneo

Modulo: UNIT 1
1) Richiami di Matematica Elementare. Notazioni e terminologia. I numeri interi, razionali, reali. Frazioni, proporzioni, percentuali. Equazioni, disequazioni e sistemi. Pratica di potenze e logaritmi. Richiami di trigonometria. Coordinate Cartesiane e distanza tra punti del piano. Coordinate polari. Numeri complessi.

2) Funzioni di Variabile Reale. Estremo superiore e inferiore, massimo e minimo di un sottoinsieme di R e di una funzione. Funzioni elementari. Limiti di funzioni e proprieta. Limiti notevoli. Funzioni continue e proprieta. Teorema della permanenza del segno. Teorema di esistenza degli zeri. Cenni sulle successioni di numeri reali e sulle serie numeriche.

3) Derivazione. Derivata e significato geometrico. Derivate delle funzioni elementari. Derivata di somma, prodotto, rapporto di due funzioni. Derivata della funzione inversa e di funzioni composte. Massimi e minimi relativi e proprieta. Teoremi di Weierstrass, Rolle, Cauchy, Lagrange. Funzioni con derivata nulla. Forme indeterminate e Teoremi di de l'Hopital. Studio del grafico di funzioni. Derivate di ordine superiore; funzioni con derivate di ordine superiore nulle. Polinomio di Taylor di una funzione.

4)Cenni alle funzioni di due variabili. Limiti di funzioni e continuità. Definizione e calcolo delle derivate parziali.

Modulo: UNIT 2

  • Serie di potenze e serie di Taylor
  • Testi di riferimento: Definizione, raggio di convergenza, funzioni analitiche
  • Serie
  • Testi di riferimento: Definizione, convergenza, serie a termini positivi, test della radice n-esima e del rapporto, principio di confronto
  • Successioni
  • Testi di riferimento: Definizione, limiti, limiti notevoli, principio di confronto
  • Integrale di Riemann
  • Testi di riferimento: Definizione, Teorema fondamentale del calcolo.
  • Integrale improprio
  • Testi di riferimento: Definizione e convergenza
  • Equazioni ordinarie lineari del primo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie
  • Equazioni ordinarie del secondo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie

Modulo: UNIT 1
N/D

Modalità d'esame

Modulo: UNIT 2
N/D
Modulo: UNIT 1
L’esame mira a valutare l’apprendimento tramite una prova scritta e una prova orale (facoltativa). La prova scritta dura due ore e può essere sostituita da due prove intermedie, entrambe della durata di due ore, la prima delle quali si svolge a meta' corso e la seconda a fine corso.

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti di tutte le parti del programma e di essere in grado di svolgere almeno i più semplici tra gli esercizi assegnati.

Per conseguire il punteggio massimo, pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso.

Maggiori informazioni sulla pagine del corso sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Testi di riferimento

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Codice insegnamento AID-9de0f386-f27

UNIT 1 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.

Obiettivi specifici:

codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli. Inoltre, il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.

Conoscenza e comprensione:

Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione. Inoltre, lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.

Applicare conoscenza e comprensione:

Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti. Inoltre, le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.

Capacità critiche e di giudizio:

saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito. Inoltre,

lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.

Capacità comunicative:

essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito. Formare all'esposizione rigorosa degli argomenti tecnici.

Capacità di apprendimento:

Capire le differenze e i vantaggi delle varie tecniche di progettazione. Inoltre, il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

A. Conoscenza e comprensione (Knowledge and understanding)

Al termine dell'insegnamento, lo studente sarà in grado di:

Conoscere i principi fondamentali dell'architettura dei calcolatori moderni, compresi i concetti chiave di pipelining, caching, branch prediction e multi-processing.

Comprendere le metodologie di codifica binaria per diversi tipi di dati.

Conoscere e comprendere l'Algebra Booleana, i circuiti combinatori e sequenziali, i flip-flop e la loro interconnessione in moduli logici.

Conoscere l'organizzazione del microprocessore, in particolare l'architettura MIPS, come modello concreto delle idee generali del corso.

Comprendere la struttura e i paradigmi di base della programmazione assembly, incluse la gestione delle strutture dati e l'implementazione della ricorsione.

B. Capacità di applicare conoscenza e comprensione (Applying knowledge and understanding)

Al termine dell'insegnamento, lo studente sarà in grado di:

Applicare le leggi dell'Algebra Booleana per analizzare e sintetizzare semplici circuiti combinatori e sequenziali che realizzino specifiche funzionalità.

Utilizzare i concetti appresi sull'architettura MIPS per analizzare le implicazioni delle scelte di programmazione sulla performance su hardware specifico (tramite esercizi di programmazione e valutazione delle prestazioni).

Sviluppare semplici programmi in linguaggio assembly per implementare algoritmi e manipolare strutture dati di base.

Progettare semplici sistemi basati su registri e moduli interconnessi per specifici compiti di elaborazione.

C. Autonomia di giudizio (Making judgements)

Al termine dell'insegnamento, lo studente sarà in grado di:

Valutare criticamente le diverse tecniche e approcci di progettazione studiati (es. per circuiti o per ottimizzazione del microprocessore) per scegliere la soluzione più efficiente e adeguata a un determinato compito.

Comprendere autonomamente le problematiche relative alle prestazioni del software su hardware specifico e di valutarne in modo critico le caratteristiche.

D. Abilità comunicative (Communication skills)

Al termine dell'insegnamento, lo studente sarà in grado di:

Motivare e argomentare con rigore tecnico le scelte effettuate nella progettazione di circuiti logici o nell'implementazione di programmi in assembly.

Esporre in modo chiaro e rigoroso argomenti tecnici complessi legati all'architettura dei calcolatori.

E. Capacità di apprendere (Learning skills)

Al termine dell'insegnamento, lo studente sarà in grado di:

Identificare le differenze e i vantaggi delle varie tecniche di progettazione e organizzazione del calcolatore.

Acquisire la base concettuale e metodologica necessaria per affrontare e approfondire autonomamente discipline correlate, come i Sistemi Operativi e la programmazione di sistemi paralleli.

Programma

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Sistemi numerici, operazioni sui numeri binari, porte logiche
  • Progettazione della logica combinatoria: algebra booleana, mappe di Karnaugh, blocchi combinatori, temporizzazione
  • Progettazione della logica sequenziale: latch e flip-flop, progettazione logica sincrona, macchine a stati finiti, temporizzazione della logica sequenziale
  • Blocchi digitali di base: circuiti aritmetici, blocchi sequenziali, array di memoria, array logici

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Number Systems
  • Testi di riferimento: Harris & Harris (Ch. 1.1-1.4, 5.2-5.3)
  • Boolean Algebra and Combinational Circuits
  • Testi di riferimento: Harris & Harris (Ch. 1.5, 2)
  • Sequential Circuits
  • Testi di riferimento: Harris & Harris (Ch. 3)
  • Common Circuits
  • Testi di riferimento: Harris & Harris (Ch. 5)

Modalità d'esame

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. La prova orale è opzionale. Se sostenuta, il voto finale sarà la media fra la prova scritta e la prova orale.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti relativi alla rappresentazione binaria, alla logica booleana, alle reti combinatorie e sequenziali e all'architettura di un elaboratore.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo in grado di raccordarli in modo logico e coerente.

Testi di riferimento

Modulo: UNIT 2
N/D
Modulo: UNIT 1
Digital Design and Computer Architecture, ARM Edition, by Sarah Harris and David Harris (ISBN: 978-0-12-800056-4)

Modulo: UNIT 2
N/D
Modulo: UNIT 1
N/D

Codice insegnamento AID-db08d018-4c6

UNIT 2 1° anno · 1° semestre · 6 CFU · MATH-03/A · 0 file

Obiettivi generali: Acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni; fornire strumenti di…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni; fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.

Il corso e' organizzato in due unita': Calculus Unit 1 e Calculus Unit 2. Si rimanda a queste unita' per gli Obiettivi Specifici.

Modulo: UNIT 2
N/D
Modulo: UNIT 1
Obiettivi generali:

acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni.

Obiettivi specifici:

Conoscenza e comprensione: al termine del corso lo studente avrà' acquisito le nozioni e i risultati di base del Calcolo Differenziale con particolare attenzione ai concetti di funzione, limite di funzione e derivata.

Applicare conoscenza e comprensione: al termine del corso lo studente sarà in grado di risolvere semplici problemi del Calcolo Differenziale, quali il calcolo esplicito di derivate, il calcolo del massimo e minimo locale e globale di funzioni di una variabile, e il disegno approssimativo del grafico di funzioni.

Autonomia di giudizio: lo studente avra' le basi per utilizzare un grafico come strumento di analisi di una situazione concreta descrivibile matematicamente.

Abilità comunicative: lo studente sarà in grado di comprendere un testo scientifico di complessità' non elevata e di riassumerne i concetti principali.

Capacita' di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso, relativo ad aspetti piu' avanzati del Calcolo Differenziale.

Programma

Modulo: UNIT 2
*Successioni numeriche

Successioni di numeri reali

  • Definizioni
  • Esempi fondamentali
  • Convergenza e divergenza
  • Operazioni con le successioni

Teoremi sui limiti

  • Unicità del limite
  • Confronto e permanenza del segno
  • Limiti notevoli
  • Teoremi sulle combinazioni di successioni

Serie numeriche

Serie a termini non negativi

  • Definizione
  • Criteri di convergenza (confronto, rapporto, radice, integrale)

Convergenza assoluta e condizionata

  • Serie a termini di segno variabile
  • Criterio di Leibniz
  • Serie assolutamente convergenti

Serie di potenze in ℝ

Convergenza di una serie di potenze

  • Raggio di convergenza
  • Formula di Cauchy-Hadamard

Serie di Taylor

  • Polinomi di Taylor
  • Calcolo di sviluppi di funzioni elementari
  • Passaggio dal polinomio alla serie
  • Resto di Taylor e stima dell’errore

Integrale di Riemann

Definizione dell’integrale

  • Partizioni e somme di Riemann
  • Funzioni integrabili

Proprietà dell’integrale

  • Linearità
  • Monotonia
  • Additività

Metodi di integrazione

  • Sostituzione (cambio di variabile)
  • Integrazione per parti
  • Esempi applicativi
  • Sostituzioni utili: radici quadrate, sin, cos

Integrazione delle funzioni razionali

  • Decomposizione in fratti semplici

Esercizi e soluzioni (Capitolo 1)

Integrali impropri

Definizioni ed esempi

  • Integrali su intervalli illimitati
  • Integrali con funzioni non limitate

Teoremi di confronto

Esercizi e soluzioni (Capitolo 2)

Equazioni differenziali ordinarie

Equazioni del primo ordine

  • Separazione delle variabili
  • Equazioni lineari
  • Equazioni omogenee
  • Equazioni non omogenee

Equazioni del secondo ordine a coefficienti costanti

  • Caso omogeneo
  • Metodo dei coefficienti indeterminati per il caso non omogeneo

Modulo: UNIT 1
1) Richiami di Matematica Elementare. Notazioni e terminologia. I numeri interi, razionali, reali. Frazioni, proporzioni, percentuali. Equazioni, disequazioni e sistemi. Pratica di potenze e logaritmi. Richiami di trigonometria. Coordinate Cartesiane e distanza tra punti del piano. Coordinate polari. Numeri complessi.

2) Funzioni di Variabile Reale. Estremo superiore e inferiore, massimo e minimo di un sottoinsieme di R e di una funzione. Funzioni elementari. Limiti di funzioni e proprieta. Limiti notevoli. Funzioni continue e proprieta. Teorema della permanenza del segno. Teorema di esistenza degli zeri. Cenni sulle successioni di numeri reali e sulle serie numeriche.

3) Derivazione. Derivata e significato geometrico. Derivate delle funzioni elementari. Derivata di somma, prodotto, rapporto di due funzioni. Derivata della funzione inversa e di funzioni composte. Massimi e minimi relativi e proprieta. Teoremi di Weierstrass, Rolle, Cauchy, Lagrange. Funzioni con derivata nulla. Forme indeterminate e Teoremi di de l'Hopital. Studio del grafico di funzioni. Derivate di ordine superiore; funzioni con derivate di ordine superiore nulle. Polinomio di Taylor di una funzione.

4)Cenni alle funzioni di due variabili. Limiti di funzioni e continuità. Definizione e calcolo delle derivate parziali.

Modulo: UNIT 2

  • Serie di potenze e serie di Taylor
  • Testi di riferimento: Definizione, raggio di convergenza, funzioni analitiche
  • Serie
  • Testi di riferimento: Definizione, convergenza, serie a termini positivi, test della radice n-esima e del rapporto, principio di confronto
  • Successioni
  • Testi di riferimento: Definizione, limiti, limiti notevoli, principio di confronto
  • Integrale di Riemann
  • Testi di riferimento: Definizione, Teorema fondamentale del calcolo.
  • Integrale improprio
  • Testi di riferimento: Definizione e convergenza
  • Equazioni ordinarie lineari del primo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie
  • Equazioni ordinarie del secondo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie

Modulo: UNIT 1
N/D

Modalità d'esame

Modulo: UNIT 2
N/D
Modulo: UNIT 1
L’esame mira a valutare l’apprendimento tramite una prova scritta e una prova orale (facoltativa). La prova scritta dura due ore e può essere sostituita da due prove intermedie, entrambe della durata di due ore, la prima delle quali si svolge a meta' corso e la seconda a fine corso.

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti di tutte le parti del programma e di essere in grado di svolgere almeno i più semplici tra gli esercizi assegnati.

Per conseguire il punteggio massimo, pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso.

Maggiori informazioni sulla pagine del corso sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Testi di riferimento

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Codice insegnamento AID-2a218665-5ba

UNIT 2 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.

Obiettivi specifici:

codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli. Inoltre, il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.

Conoscenza e comprensione:

Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione. Inoltre, lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.

Applicare conoscenza e comprensione:

Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti. Inoltre, le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.

Capacità critiche e di giudizio:

saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito. Inoltre,

lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.

Capacità comunicative:

essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito. Formare all'esposizione rigorosa degli argomenti tecnici.

Capacità di apprendimento:

Capire le differenze e i vantaggi delle varie tecniche di progettazione. Inoltre, il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

A. Conoscenza e comprensione (Knowledge and understanding)

Al termine dell'insegnamento, lo studente sarà in grado di:

Conoscere i principi fondamentali dell'architettura dei calcolatori moderni, compresi i concetti chiave di pipelining, caching, branch prediction e multi-processing.

Comprendere le metodologie di codifica binaria per diversi tipi di dati.

Conoscere e comprendere l'Algebra Booleana, i circuiti combinatori e sequenziali, i flip-flop e la loro interconnessione in moduli logici.

Conoscere l'organizzazione del microprocessore, in particolare l'architettura MIPS, come modello concreto delle idee generali del corso.

Comprendere la struttura e i paradigmi di base della programmazione assembly, incluse la gestione delle strutture dati e l'implementazione della ricorsione.

B. Capacità di applicare conoscenza e comprensione (Applying knowledge and understanding)

Al termine dell'insegnamento, lo studente sarà in grado di:

Applicare le leggi dell'Algebra Booleana per analizzare e sintetizzare semplici circuiti combinatori e sequenziali che realizzino specifiche funzionalità.

Utilizzare i concetti appresi sull'architettura MIPS per analizzare le implicazioni delle scelte di programmazione sulla performance su hardware specifico (tramite esercizi di programmazione e valutazione delle prestazioni).

Sviluppare semplici programmi in linguaggio assembly per implementare algoritmi e manipolare strutture dati di base.

Progettare semplici sistemi basati su registri e moduli interconnessi per specifici compiti di elaborazione.

C. Autonomia di giudizio (Making judgements)

Al termine dell'insegnamento, lo studente sarà in grado di:

Valutare criticamente le diverse tecniche e approcci di progettazione studiati (es. per circuiti o per ottimizzazione del microprocessore) per scegliere la soluzione più efficiente e adeguata a un determinato compito.

Comprendere autonomamente le problematiche relative alle prestazioni del software su hardware specifico e di valutarne in modo critico le caratteristiche.

D. Abilità comunicative (Communication skills)

Al termine dell'insegnamento, lo studente sarà in grado di:

Motivare e argomentare con rigore tecnico le scelte effettuate nella progettazione di circuiti logici o nell'implementazione di programmi in assembly.

Esporre in modo chiaro e rigoroso argomenti tecnici complessi legati all'architettura dei calcolatori.

E. Capacità di apprendere (Learning skills)

Al termine dell'insegnamento, lo studente sarà in grado di:

Identificare le differenze e i vantaggi delle varie tecniche di progettazione e organizzazione del calcolatore.

Acquisire la base concettuale e metodologica necessaria per affrontare e approfondire autonomamente discipline correlate, come i Sistemi Operativi e la programmazione di sistemi paralleli.

Programma

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Sistemi numerici, operazioni sui numeri binari, porte logiche
  • Progettazione della logica combinatoria: algebra booleana, mappe di Karnaugh, blocchi combinatori, temporizzazione
  • Progettazione della logica sequenziale: latch e flip-flop, progettazione logica sincrona, macchine a stati finiti, temporizzazione della logica sequenziale
  • Blocchi digitali di base: circuiti aritmetici, blocchi sequenziali, array di memoria, array logici

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Number Systems
  • Testi di riferimento: Harris & Harris (Ch. 1.1-1.4, 5.2-5.3)
  • Boolean Algebra and Combinational Circuits
  • Testi di riferimento: Harris & Harris (Ch. 1.5, 2)
  • Sequential Circuits
  • Testi di riferimento: Harris & Harris (Ch. 3)
  • Common Circuits
  • Testi di riferimento: Harris & Harris (Ch. 5)

Modalità d'esame

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. La prova orale è opzionale. Se sostenuta, il voto finale sarà la media fra la prova scritta e la prova orale.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti relativi alla rappresentazione binaria, alla logica booleana, alle reti combinatorie e sequenziali e all'architettura di un elaboratore.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo in grado di raccordarli in modo logico e coerente.

Testi di riferimento

Modulo: UNIT 2
N/D
Modulo: UNIT 1
Digital Design and Computer Architecture, ARM Edition, by Sarah Harris and David Harris (ISBN: 978-0-12-800056-4)

Modulo: UNIT 2
N/D
Modulo: UNIT 1
N/D

Codice insegnamento AID-832e5b61-b93

UNIT 2 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali

Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.

Obiettivi specifici:

Conoscenza e comprensione

Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.

Applicare conoscenza e comprensione:

Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati

utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.

Capacità critiche e di giudizio

Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.

Capacità comunicative

Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.

Capacità di apprendimento

Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

Obiettivi generali

Questo corso introduce agli studenti i metodi di base per la progettazione e l’analisi degli algoritmi. Studieranno vari ben noti algoritmi che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.

Obiettivi specifici:

Conoscenza e comprensione

Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.

Applicare conoscenza e comprensione:

Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati

utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.

Capacità critiche e di giudizio

Lo studente avrà le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.

Capacità comunicative

Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.

Capacità di apprendimento

Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

Programma

Modulo: UNIT 2
Introduzione alla programmazione in linguaggio Python (4 ore).

Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore).

Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore).

Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore).

Debugging e testing di programmi (2 ore).

Differenza tra algoritmi ricorsivi e iterativi (12 ore).

Moduli Python per grafica, manipolazione file, testi e accesso a internet (12 ore).

Modulo: UNIT 1
Introduzione alla programmazione in linguaggio Python (4 ore).

Tipi di dato, variabili, assegnazioni, strutture di controllo, funzioni, classi, moduli, input/output (10 ore).

Strutture dati di base: array, stringhe, liste, tuple e dizionari (16 ore).

Utilizzo delle strutture dati di base nella creazione di programmi con tecniche procedurali e object-oriented (4 ore).

Debugging e testing di programmi (2 ore).

Differenza tra algoritmi ricorsivi e iterativi (12 ore).

Moduli Python per grafica, manipolazone file, testi e accesso a internet (12 ore).

Modulo: UNIT 2

  • Introduction to programming through the Python language (4 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Leverage the basic data structures to design and develop programs

through procedural programming and object-oriented programming (4 hours)

  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Program debugging and testing (2 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Differences between recursive and iterative algorithms (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Python libraries for graphics, file handling (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey

Modulo: UNIT 1

  • Introduction to programming through the Python language (4 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Leverage the basic data structures to design and develop programs

through procedural programming and object-oriented programming (4 hours)

  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Program debugging and testing (2 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Differences between recursive and iterative algorithms (12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey
  • Python libraries for graphics, file handling(12 hours)
  • Testi di riferimento: Think Python 2nd Edition by Allen B. Downey

Modalità d'esame

L'esame si articolerà in due prove scritte indipendenti, una su carta e una al computer.

Testi di riferimento

Modulo: UNIT 2
Think Python 2nd Edition by Allen B. Downey

INTRODUZIONE ALLA PROGRAMMAZIONE CON PYTHON, John V. Guttag

Modulo: UNIT 1
Think Python 2nd Edition by Allen B. Downey

Modulo: UNIT 2
Altri testi utili:

Guido van Rossum, Python Tutorial

Josh Cogliati, Non-Programmers Tutorial For Python

F. Pellacini, Fondamenti di Programmazione in Python

F. Pellacini, Codice di Fondamenti di Programmazione in Python

Modulo: UNIT 1

  • M. Lutz, Programming Python, O'Reilly Media, Inc.
  • Guido van Rossum, Python Tutorial
  • Josh Cogliati, Non-Programmers Tutorial For Python
  • F. Pellacini, Fondamenti di Programmazione in Python
  • F. Pellacini, Codice di Fondamenti di Programmazione in Python

Codice insegnamento AID-1f13493e-74c

UNIT 2 1° anno · 2° semestre · 6 CFU · MATH-03/A · 0 file

Obiettivi generali: Acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni; fornire strumenti di…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni; fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.

Il corso e' organizzato in due unita': Calculus Unit 1 e Calculus Unit 2. Si rimanda a queste unita' per gli Obiettivi Specifici.

Modulo: UNIT 2
N/D
Modulo: UNIT 1
Obiettivi generali:

acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni.

Obiettivi specifici:

Conoscenza e comprensione: al termine del corso lo studente avrà' acquisito le nozioni e i risultati di base del Calcolo Differenziale con particolare attenzione ai concetti di funzione, limite di funzione e derivata.

Applicare conoscenza e comprensione: al termine del corso lo studente sarà in grado di risolvere semplici problemi del Calcolo Differenziale, quali il calcolo esplicito di derivate, il calcolo del massimo e minimo locale e globale di funzioni di una variabile, e il disegno approssimativo del grafico di funzioni.

Autonomia di giudizio: lo studente avra' le basi per utilizzare un grafico come strumento di analisi di una situazione concreta descrivibile matematicamente.

Abilità comunicative: lo studente sarà in grado di comprendere un testo scientifico di complessità' non elevata e di riassumerne i concetti principali.

Capacita' di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso, relativo ad aspetti piu' avanzati del Calcolo Differenziale.

Programma

Modulo: UNIT 2
*Successioni numeriche

Successioni di numeri reali

  • Definizioni
  • Esempi fondamentali
  • Convergenza e divergenza
  • Operazioni con le successioni

Teoremi sui limiti

  • Unicità del limite
  • Confronto e permanenza del segno
  • Limiti notevoli
  • Teoremi sulle combinazioni di successioni

Serie numeriche

Serie a termini non negativi

  • Definizione
  • Criteri di convergenza (confronto, rapporto, radice, integrale)

Convergenza assoluta e condizionata

  • Serie a termini di segno variabile
  • Criterio di Leibniz
  • Serie assolutamente convergenti

Serie di potenze in ℝ

Convergenza di una serie di potenze

  • Raggio di convergenza
  • Formula di Cauchy-Hadamard

Serie di Taylor

  • Polinomi di Taylor
  • Calcolo di sviluppi di funzioni elementari
  • Passaggio dal polinomio alla serie
  • Resto di Taylor e stima dell’errore

Integrale di Riemann

Definizione dell’integrale

  • Partizioni e somme di Riemann
  • Funzioni integrabili

Proprietà dell’integrale

  • Linearità
  • Monotonia
  • Additività

Metodi di integrazione

  • Sostituzione (cambio di variabile)
  • Integrazione per parti
  • Esempi applicativi
  • Sostituzioni utili: radici quadrate, sin, cos

Integrazione delle funzioni razionali

  • Decomposizione in fratti semplici

Esercizi e soluzioni (Capitolo 1)

Integrali impropri

Definizioni ed esempi

  • Integrali su intervalli illimitati
  • Integrali con funzioni non limitate

Teoremi di confronto

Esercizi e soluzioni (Capitolo 2)

Equazioni differenziali ordinarie

Equazioni del primo ordine

  • Separazione delle variabili
  • Equazioni lineari
  • Equazioni omogenee
  • Equazioni non omogenee

Equazioni del secondo ordine a coefficienti costanti

  • Caso omogeneo
  • Metodo dei coefficienti indeterminati per il caso non omogeneo

Modulo: UNIT 1
1) Richiami di Matematica Elementare. Notazioni e terminologia. I numeri interi, razionali, reali. Frazioni, proporzioni, percentuali. Equazioni, disequazioni e sistemi. Pratica di potenze e logaritmi. Richiami di trigonometria. Coordinate Cartesiane e distanza tra punti del piano. Coordinate polari. Numeri complessi.

2) Funzioni di Variabile Reale. Estremo superiore e inferiore, massimo e minimo di un sottoinsieme di R e di una funzione. Funzioni elementari. Limiti di funzioni e proprieta. Limiti notevoli. Funzioni continue e proprieta. Teorema della permanenza del segno. Teorema di esistenza degli zeri. Cenni sulle successioni di numeri reali e sulle serie numeriche.

3) Derivazione. Derivata e significato geometrico. Derivate delle funzioni elementari. Derivata di somma, prodotto, rapporto di due funzioni. Derivata della funzione inversa e di funzioni composte. Massimi e minimi relativi e proprieta. Teoremi di Weierstrass, Rolle, Cauchy, Lagrange. Funzioni con derivata nulla. Forme indeterminate e Teoremi di de l'Hopital. Studio del grafico di funzioni. Derivate di ordine superiore; funzioni con derivate di ordine superiore nulle. Polinomio di Taylor di una funzione.

4)Cenni alle funzioni di due variabili. Limiti di funzioni e continuità. Definizione e calcolo delle derivate parziali.

Modulo: UNIT 2

  • Serie di potenze e serie di Taylor
  • Testi di riferimento: Definizione, raggio di convergenza, funzioni analitiche
  • Serie
  • Testi di riferimento: Definizione, convergenza, serie a termini positivi, test della radice n-esima e del rapporto, principio di confronto
  • Successioni
  • Testi di riferimento: Definizione, limiti, limiti notevoli, principio di confronto
  • Integrale di Riemann
  • Testi di riferimento: Definizione, Teorema fondamentale del calcolo.
  • Integrale improprio
  • Testi di riferimento: Definizione e convergenza
  • Equazioni ordinarie lineari del primo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie
  • Equazioni ordinarie del secondo ordine
  • Testi di riferimento: Teorema di Cauchy, metodi di risoluzione, variazione del parametro per Equazioni differenziali ordinarie

Modulo: UNIT 1
N/D

Modalità d'esame

Modulo: UNIT 2
N/D
Modulo: UNIT 1
L’esame mira a valutare l’apprendimento tramite una prova scritta e una prova orale (facoltativa). La prova scritta dura due ore e può essere sostituita da due prove intermedie, entrambe della durata di due ore, la prima delle quali si svolge a meta' corso e la seconda a fine corso.

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti di tutte le parti del programma e di essere in grado di svolgere almeno i più semplici tra gli esercizi assegnati.

Per conseguire il punteggio massimo, pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso.

Maggiori informazioni sulla pagine del corso sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Testi di riferimento

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Modulo: UNIT 2
Note della professoressa Ansini disponibili su Moodle

"Real Analysis" A long form Mathematics Text Book di Jay Cummings

Modulo: UNIT 1
La pagina del corso con il materiale scaricabile (note del corso e schede di esercizi) sara' accessibile iscrivendosi sulla piattaforma e-learning all'indirizzo https://elearning.uniroma1.it

Codice insegnamento AID-9bfee695-256

UNIT 2 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Metodologie di progettazione di circuiti combinatori e sequenziali e far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.

Obiettivi specifici:

codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli. Inoltre, il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.

Conoscenza e comprensione:

Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione. Inoltre, lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.

Applicare conoscenza e comprensione:

Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti. Inoltre, le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.

Capacità critiche e di giudizio:

saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito. Inoltre,

lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.

Capacità comunicative:

essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito. Formare all'esposizione rigorosa degli argomenti tecnici.

Capacità di apprendimento:

Capire le differenze e i vantaggi delle varie tecniche di progettazione. Inoltre, il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

A. Conoscenza e comprensione (Knowledge and understanding)

Al termine dell'insegnamento, lo studente sarà in grado di:

Conoscere i principi fondamentali dell'architettura dei calcolatori moderni, compresi i concetti chiave di pipelining, caching, branch prediction e multi-processing.

Comprendere le metodologie di codifica binaria per diversi tipi di dati.

Conoscere e comprendere l'Algebra Booleana, i circuiti combinatori e sequenziali, i flip-flop e la loro interconnessione in moduli logici.

Conoscere l'organizzazione del microprocessore, in particolare l'architettura MIPS, come modello concreto delle idee generali del corso.

Comprendere la struttura e i paradigmi di base della programmazione assembly, incluse la gestione delle strutture dati e l'implementazione della ricorsione.

B. Capacità di applicare conoscenza e comprensione (Applying knowledge and understanding)

Al termine dell'insegnamento, lo studente sarà in grado di:

Applicare le leggi dell'Algebra Booleana per analizzare e sintetizzare semplici circuiti combinatori e sequenziali che realizzino specifiche funzionalità.

Utilizzare i concetti appresi sull'architettura MIPS per analizzare le implicazioni delle scelte di programmazione sulla performance su hardware specifico (tramite esercizi di programmazione e valutazione delle prestazioni).

Sviluppare semplici programmi in linguaggio assembly per implementare algoritmi e manipolare strutture dati di base.

Progettare semplici sistemi basati su registri e moduli interconnessi per specifici compiti di elaborazione.

C. Autonomia di giudizio (Making judgements)

Al termine dell'insegnamento, lo studente sarà in grado di:

Valutare criticamente le diverse tecniche e approcci di progettazione studiati (es. per circuiti o per ottimizzazione del microprocessore) per scegliere la soluzione più efficiente e adeguata a un determinato compito.

Comprendere autonomamente le problematiche relative alle prestazioni del software su hardware specifico e di valutarne in modo critico le caratteristiche.

D. Abilità comunicative (Communication skills)

Al termine dell'insegnamento, lo studente sarà in grado di:

Motivare e argomentare con rigore tecnico le scelte effettuate nella progettazione di circuiti logici o nell'implementazione di programmi in assembly.

Esporre in modo chiaro e rigoroso argomenti tecnici complessi legati all'architettura dei calcolatori.

E. Capacità di apprendere (Learning skills)

Al termine dell'insegnamento, lo studente sarà in grado di:

Identificare le differenze e i vantaggi delle varie tecniche di progettazione e organizzazione del calcolatore.

Acquisire la base concettuale e metodologica necessaria per affrontare e approfondire autonomamente discipline correlate, come i Sistemi Operativi e la programmazione di sistemi paralleli.

Programma

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Sistemi numerici, operazioni sui numeri binari, porte logiche
  • Progettazione della logica combinatoria: algebra booleana, mappe di Karnaugh, blocchi combinatori, temporizzazione
  • Progettazione della logica sequenziale: latch e flip-flop, progettazione logica sincrona, macchine a stati finiti, temporizzazione della logica sequenziale
  • Blocchi digitali di base: circuiti aritmetici, blocchi sequenziali, array di memoria, array logici

Modulo: UNIT 2
N/D
Modulo: UNIT 1

  • Number Systems
  • Testi di riferimento: Harris & Harris (Ch. 1.1-1.4, 5.2-5.3)
  • Boolean Algebra and Combinational Circuits
  • Testi di riferimento: Harris & Harris (Ch. 1.5, 2)
  • Sequential Circuits
  • Testi di riferimento: Harris & Harris (Ch. 3)
  • Common Circuits
  • Testi di riferimento: Harris & Harris (Ch. 5)

Modalità d'esame

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. La prova orale è opzionale. Se sostenuta, il voto finale sarà la media fra la prova scritta e la prova orale.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti relativi alla rappresentazione binaria, alla logica booleana, alle reti combinatorie e sequenziali e all'architettura di un elaboratore.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo in grado di raccordarli in modo logico e coerente.

Testi di riferimento

Modulo: UNIT 2
N/D
Modulo: UNIT 1
Digital Design and Computer Architecture, ARM Edition, by Sarah Harris and David Harris (ISBN: 978-0-12-800056-4)

Modulo: UNIT 2
N/D
Modulo: UNIT 1
N/D

Codice insegnamento AID-e757cc43-5a0

AI LAB: COMPUTER VISION AND NLP 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso, denominato AI Lab: Computer Vision & NLP e indicato di seguito, per semplicità, come AI Lab, ha l'obiettivo di fornire agli studenti una preparazione avanzata sulla progettazione, lo…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi Il corso, denominato AI Lab: Computer Vision & NLP e indicato di seguito, per semplicità, come AI Lab, ha l'obiettivo di fornire agli studenti una preparazione avanzata sulla progettazione, lo sviluppo e la valutazione di sistemi intelligenti di Artificial Perception, basati sulle più moderne tecniche di Intelligenza Artificiale. Pur richiamando nel titolo la Computer Vision e il Natural Language Processing (NLP), il corso deve essere interpretato in una prospettiva più ampia come un laboratorio avanzato di Intelligenza Artificiale applicata alla comprensione di immagini, video, linguaggio e segnali eterogenei, nel quale convergono Computer Vision, analisi dei segnali, Machine Learning, Deep Learning e modelli di Intelligenza Artificiale di ultima generazione.
Il corso considera la Computer Vision come disciplina portante, estendendone tuttavia metodologie e principi all'analisi di altre sorgenti informative quali EEG, Wi-Fi sensing, segnali fisiologici e dati provenienti da sensori eterogenei, mostrando come numerosi paradigmi dell'Intelligenza Artificiale possano essere trasferiti tra differenti domini percettivi. Parallelamente vengono introdotti elementi di Natural Language Processing, evidenziando come immagini, video, linguaggio e segnali costituiscano differenti modalità attraverso cui un sistema intelligente può percepire, interpretare e comprendere il mondo circostante. Particolare attenzione viene dedicata ai principali problemi della moderna percezione artificiale, tra cui image classification, object detection, semantic e instance segmentation, image registration, tracking, change detection, saliency detection, anomaly detection, action recognition, action anticipation, scene understanding, image captioning, visual reasoning, visual grounding, image retrieval e altri problemi avanzati della moderna Computer Vision. Il corso affronta inoltre metodologie per l'analisi avanzata dei segnali e introduce concetti fondamentali per l'elaborazione intelligente di dati non strettamente visivi. Per affrontare tali problematiche vengono presentati sia approcci classici di Computer Vision ed elaborazione dei segnali, sia i più recenti paradigmi dell'Intelligenza Artificiale. Il corso introduce algoritmi hand-crafted, tecniche di Machine Learning, architetture di Deep Learning e modelli di ultima generazione, illustrando esempi rappresentativi quali Convolutional Neural Networks (CNNs), Residual Networks (ResNet), U-Net e relative varianti, Siamese Networks, Teacher–Student architectures, Graph Neural Networks (GNNs), Vision Transformers (ViTs), Foundation Models, Vision-Language Models e Large Language Models (LLMs). L'obiettivo non consiste esclusivamente nell'apprendere il funzionamento di tali modelli, ma soprattutto nello sviluppare la capacità di comprenderne criticamente principi, vantaggi, limiti e scenari di applicazione.
Un principio fondamentale del corso consiste nello sviluppare una visione critica della progettazione di sistemi intelligenti. Lo studente apprenderà che non esiste un algoritmo universalmente migliore, ma che la scelta tra approcci classici, algoritmi hand-crafted, Machine Learning, Deep Learning o Foundation Models dipende dalla natura del problema, dalla disponibilità dei dati, dai vincoli computazionali, dai requisiti di interpretabilità, dalle prestazioni richieste e dal contesto applicativo. Il corso promuove pertanto un approccio problem-driven, orientato alla selezione consapevole della metodologia più appropriata piuttosto che all'utilizzo indiscriminato di una specifica tecnologia. Il corso mantiene una forte prospettiva applicativa, mostrando come le metodologie presentate possano essere impiegate nello sviluppo di sistemi intelligenti per robotica autonoma, robot umanoidi, droni UAV, rover terrestri, robot mobili, robot subacquei (AUV/UUV), veicoli autonomi, immagini satellitari e telerilevamento, Human–Computer Interaction, biometria, medicina, monitoraggio ambientale, monitoraggio industriale, smart cities, sicurezza, difesa, ambient intelligence e numerosi altri scenari scientifici e industriali nei quali la capacità di percepire, interpretare e comprendere automaticamente il mondo circostante rappresenta un requisito fondamentale. Particolare enfasi viene infine dedicata allo sviluppo di una mentalità progettuale e scientifica. Il corso non si limita alla presentazione di tecniche consolidate, ma mira a formare studenti capaci di analizzare criticamente la letteratura scientifica internazionale, comprendere lo stato dell'arte, confrontare metodologie differenti, progettare soluzioni originali e valutarne rigorosamente le prestazioni sperimentali. L'obiettivo finale è formare professionisti e ricercatori in grado di sviluppare sistemi intelligenti innovativi, scientificamente fondati e competitivi rispetto allo stato dell'arte internazionale.
Conoscenza e capacità di comprensione Al termine del corso lo studente avrà acquisito una conoscenza approfondita dei principali fondamenti teorici e metodologici della moderna Artificial Perception, comprendendo come immagini, video, linguaggio e segnali eterogenei possano essere elaborati mediante tecniche avanzate di Intelligenza Artificiale per estrarre informazione utile alla comprensione dell'uomo, dell'ambiente e del contesto operativo. Lo studente comprenderà i principali problemi affrontati dalla moderna Computer Vision e dall'analisi avanzata dei segnali, acquisendo conoscenze relative a classificazione, rilevamento, segmentazione, registrazione, riconoscimento di azioni, analisi del movimento, change detection, saliency detection, anomaly detection, visual reasoning, image captioning, scene understanding e altri problemi di percezione artificiale. Comprenderà inoltre i principi teorici alla base dell'elaborazione di segnali quali EEG, Wi-Fi sensing e altri segnali provenienti da sensori intelligenti, riconoscendone analogie e differenze rispetto all'elaborazione di dati visivi. Lo studente acquisirà inoltre una conoscenza approfondita delle principali famiglie di algoritmi utilizzate nella moderna Intelligenza Artificiale, comprendendo sia approcci classici e tecniche hand-crafted, sia metodi di Machine Learning, Deep Learning e modelli di ultima generazione. In particolare comprenderà i principi di funzionamento delle principali architetture neurali, tra cui CNN, ResNet, U-Net, Siamese Networks, Teacher–Student architectures, Graph Neural Networks, Vision Transformers, Foundation Models, Vision-Language Models e Large Language Models, analizzandone punti di forza, limiti e principali ambiti applicativi. Particolare attenzione sarà dedicata alla comprensione critica delle diverse metodologie, evidenziando come la scelta della soluzione più appropriata dipenda dalla natura del problema affrontato, dalla disponibilità dei dati, dalla complessità computazionale, dai vincoli hardware e dagli obiettivi applicativi. Lo studente comprenderà pertanto come algoritmi classici, approcci hand-crafted, Machine Learning, Deep Learning e Foundation Models rappresentino strumenti complementari piuttosto che soluzioni alternative universalmente valide. Infine, lo studente acquisirà una conoscenza approfondita dei principali scenari applicativi della moderna percezione artificiale, comprendendo come le tecnologie studiate possano essere utilizzate nello sviluppo di sistemi intelligenti per robotica, droni, rover, robot subacquei, immagini satellitari, Human–Computer Interaction, biometria, medicina, monitoraggio ambientale, sicurezza, difesa, smart cities e numerosi altri contesti nei quali la capacità di percepire, interpretare e comprendere automaticamente dati complessi costituisce un elemento centrale.
Capacità di applicare conoscenza e comprensione Al termine del corso lo studente sarà in grado di progettare, sviluppare, implementare e valutare sistemi intelligenti per la percezione artificiale, applicando criticamente le conoscenze acquisite all'analisi di immagini, video, linguaggio e segnali eterogenei. Sarà in grado di affrontare problemi complessi di Computer Vision e Artificial Intelligence attraverso la progettazione di pipeline complete che comprendano acquisizione dei dati, pre-processing, rappresentazione dell'informazione, estrazione di caratteristiche, scelta del paradigma algoritmico, addestramento dei modelli, validazione sperimentale e valutazione delle prestazioni. Lo studente saprà selezionare in modo consapevole la metodologia più appropriata rispetto allo specifico problema affrontato, scegliendo criticamente tra approcci classici di Computer Vision ed elaborazione dei segnali, algoritmi hand-crafted, tecniche di Machine Learning, architetture Deep Learning e modelli di Intelligenza Artificiale di ultima generazione. Sarà inoltre in grado di motivare tale scelta sulla base delle caratteristiche del problema, della disponibilità dei dati, dei vincoli computazionali, dei requisiti di interpretabilità, della robustezza richiesta e dello scenario applicativo.
Lo studente acquisirà la capacità di progettare e implementare sistemi intelligenti per numerosi problemi della moderna percezione artificiale, quali classificazione, object detection, segmentazione, change detection, saliency detection, anomaly detection, tracking, action recognition, scene understanding, image captioning, visual reasoning, image retrieval e analisi avanzata dei segnali. Sarà inoltre in grado di applicare metodologie analoghe all'analisi di segnali EEG, Wi-Fi sensing e altri dati provenienti da sensori intelligenti, comprendendo come differenti tipologie di informazione possano essere elaborate mediante paradigmi comuni di Intelligenza Artificiale. Particolare attenzione sarà dedicata anche allo sviluppo di sistemi intelligenti per applicazioni reali quali robotica autonoma, robot umanoidi, droni UAV, rover terrestri, robot subacquei, immagini satellitari, telerilevamento, Human–Computer Interaction, biometria, medicina, sicurezza, difesa, monitoraggio ambientale e industriale, favorendo la capacità dello studente di trasferire le metodologie apprese a nuovi domini applicativi. Una parte sostanziale della verifica finale consiste nella progettazione e nello sviluppo di un progetto originale, realizzato individualmente o in gruppo, attraverso il quale lo studente dovrà dimostrare la capacità di trasformare concetti teorici in una soluzione completa, funzionante e scientificamente motivata. Il progetto prevede inoltre la redazione di una relazione tecnica in stile scientifico e la presentazione pubblica dei risultati ottenuti, favorendo l'acquisizione di competenze progettuali, sperimentali e metodologiche tipiche della ricerca moderna.
Autonomia di giudizio Il corso mira a sviluppare nello studente una solida capacità di analisi critica e di valutazione scientifica dei sistemi intelligenti di percezione artificiale. Al termine del percorso formativo lo studente sarà in grado di analizzare criticamente algoritmi, modelli e architetture di Intelligenza Artificiale, valutandone accuratezza, robustezza, generalizzazione, interpretabilità, complessità computazionale, scalabilità e adeguatezza rispetto allo specifico scenario applicativo. Lo studente svilupperà la capacità di comprendere che non esiste una soluzione universalmente ottimale, ma che la scelta della metodologia più appropriata richiede una valutazione critica del problema, della qualità e quantità dei dati disponibili, dei vincoli tecnologici e degli obiettivi progettuali. Sarà pertanto in grado di confrontare approcci differenti, comprendendone vantaggi e limiti e motivando razionalmente le proprie decisioni progettuali. Particolare enfasi sarà posta sulla capacità di consultare autonomamente la letteratura scientifica internazionale, comprendere lo stato dell'arte, analizzare criticamente articoli scientifici e individuare possibili direzioni di miglioramento rispetto alle metodologie esistenti. Lo studente sarà pertanto in grado di distinguere tra contributi consolidati, metodologie emergenti e soluzioni sperimentali, sviluppando una mentalità orientata alla ricerca e all'innovazione.
Il corso promuove inoltre una riflessione critica sugli aspetti metodologici, sperimentali ed etici dell'Intelligenza Artificiale, affrontando temi quali qualità dei dati, bias, robustezza dei modelli, interpretabilità, riproducibilità degli esperimenti, affidabilità dei sistemi intelligenti e corretto utilizzo delle tecnologie nei diversi contesti applicativi. Tali competenze consentiranno allo studente di valutare non soltanto le prestazioni quantitative di un sistema, ma anche la sua effettiva sostenibilità scientifica, tecnologica e applicativa. Infine, il corso mira a sviluppare nello studente la capacità di proporre autonomamente nuove idee progettuali, identificare problemi di ricerca ancora aperti e progettare soluzioni innovative basate su solide motivazioni scientifiche, favorendo un approccio critico, creativo e rigoroso tipico dell'attività di ricerca e sviluppo.
Abilità comunicative Al termine del corso lo studente sarà in grado di comunicare in modo chiaro, rigoroso e scientificamente corretto problemi, metodologie, modelli, risultati sperimentali e scelte progettuali relativi ai sistemi di percezione artificiale basati su Intelligenza Artificiale. Sarà capace di descrivere l'intero processo di progettazione di un sistema intelligente, dalla definizione del problema fino alla validazione sperimentale, illustrando criticamente le motivazioni alla base delle soluzioni adottate e discutendone vantaggi, limiti e possibili sviluppi futuri. Lo studente acquisirà la capacità di presentare e confrontare differenti paradigmi computazionali, spiegando in modo appropriato quando sia preferibile adottare algoritmi classici di Computer Vision ed elaborazione dei segnali, approcci hand-crafted, tecniche di Machine Learning, architetture Deep Learning o modelli di Intelligenza Artificiale di ultima generazione. Sarà inoltre in grado di motivare criticamente le proprie scelte progettuali sulla base delle caratteristiche del problema, dei dati disponibili, dei vincoli computazionali e degli obiettivi applicativi. Particolare attenzione sarà dedicata alla capacità di comunicare risultati sperimentali attraverso l'utilizzo di metriche di valutazione, confronti quantitativi con lo stato dell'arte, analisi statistiche, rappresentazioni grafiche e protocolli sperimentali riproducibili. Lo studente svilupperà inoltre la capacità di interpretare criticamente tali risultati, distinguendo tra miglioramenti significativi e variazioni dovute a fattori sperimentali.
Tali competenze verranno verificate principalmente attraverso la presentazione e discussione del progetto sviluppato durante il corso. Lo studente dovrà dimostrare di saper illustrare in modo chiaro e rigoroso il problema affrontato, descrivere l'architettura proposta, motivare le scelte metodologiche, confrontare criticamente la soluzione realizzata con la letteratura scientifica esistente e discutere risultati, limiti e possibili evoluzioni del lavoro svolto. Particolare attenzione sarà dedicata anche alla capacità di redigere una relazione tecnica in stile scientifico, organizzata secondo gli standard tipici della moderna ricerca internazionale nel settore dell'Artificial Intelligence.
Capacità di apprendimento Al termine del corso lo studente avrà acquisito gli strumenti metodologici necessari per approfondire autonomamente nuove tecniche, modelli e paradigmi dell'Intelligenza Artificiale applicata alla percezione artificiale, mantenendosi costantemente aggiornato rispetto alla rapida evoluzione dello stato dell'arte. Lo studente sarà in grado di leggere, comprendere e analizzare criticamente articoli scientifici, documentazione tecnica e contributi di ricerca riguardanti Computer Vision, analisi dei segnali, Machine Learning, Deep Learning, Foundation Models, Vision-Language Models, Large Language Models e più in generale le moderne tecnologie di Artificial Intelligence. Acquisirà inoltre la capacità di trasferire metodologie consolidate verso nuovi problemi applicativi, adattando modelli e algoritmi a differenti domini percettivi e a differenti tipologie di dati.
Il corso intende fornire non soltanto conoscenze specifiche relative agli argomenti trattati durante le lezioni, ma soprattutto una metodologia di lavoro utile ad affrontare problemi complessi di progettazione, sperimentazione e ricerca. Lo studente svilupperà quindi la capacità di identificare autonomamente nuovi problemi scientifici, formulare ipotesi progettuali, selezionare criticamente le tecnologie più appropriate, progettare protocolli sperimentali rigorosi e valutare oggettivamente i risultati ottenuti. Particolare enfasi sarà dedicata allo sviluppo di una mentalità orientata all'innovazione, nella quale l'apprendimento continuo rappresenta uno strumento fondamentale per affrontare l'evoluzione estremamente rapida delle tecnologie di Intelligenza Artificiale. Lo studente acquisirà pertanto la capacità di integrare nuovi algoritmi, nuove architetture e nuovi paradigmi computazionali all'interno delle proprie competenze, mantenendo un approccio scientificamente rigoroso e criticamente consapevole. Al termine del percorso formativo lo studente sarà quindi in grado di proseguire autonomamente il proprio percorso di aggiornamento scientifico e professionale, affrontando con competenza sia attività di ricerca sia attività di sviluppo industriale nell'ambito della Computer Vision, dell'analisi avanzata dei segnali e, più in generale, della moderna Artificial Intelligence.

Codice insegnamento 10595610

ARTIFICIAL INTELLIGENCE AND MACHINE LEARNING 2° anno · 2° semestre · 12 CFU · INFO-01/A · 0 file

Obiettivi formativi I fondamenti dell'Intelligenza Artificiale e del Machine Learning. Logica formale e ragionamento automatico, ricerca su alberi e grafi (A*), reinforcement learning. Modelli supervisionati e non…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi I fondamenti dell'Intelligenza Artificiale e del Machine Learning. Logica formale e ragionamento automatico, ricerca su alberi e grafi (A*), reinforcement learning. Modelli supervisionati e non supervisionati, fondamenti dell'apprendimento automatico parametrico.
Conoscenza e capacità di comprensione Conoscenza della logica formale (proposizionale e del primo ordine), delle euristiche di ricerca, dell'algoritmo A* e del reinforcement learning. Comprensione dei modelli di Machine Learning supervisionati e non supervisionati e degli strumenti del Deep Learning (grafi computazionali e backpropagation).
Capacità di applicare conoscenza e comprensione Essere in grado di formalizzare e risolvere problemi di IA mediante algoritmi di ricerca e soddisfacimento di vincoli, e di progettare agenti e modelli di Machine Learning con librerie standard (NumPy, scikit-learn, PyTorch), addestrando piccole reti neurali su dati reali o sintetici.
Autonomia di giudizio Capacità di selezionare la tecnica di IA più efficace in base al contesto, di valutare algoritmi ed euristiche, di analizzare le prestazioni dei modelli (accuratezza, precisione/recall, curve ROC) diagnosticando l'overfitting, e di bilanciare esplorazione e sfruttamento nel Reinforcement Learning.
Abilità comunicative Capacità di comunicare con rigore logico le scelte progettuali, formalizzando i problemi e discutendo le soluzioni con esperti del settore.
Capacità di apprendimento Capacità di consultare la letteratura scientifica e di intraprendere percorsi specialistici in robotica, visione artificiale e NLP.

Programma

UNIT II
Modulo: UNIT II
Programma di massima

Introduzione:

Che cosa è l'apprendimento automatico (machine learning, ML)?

Dai sistemi basati su regole a prendere decisioni tramite apprendimento

I tipi di problemi che può risolvere ML

Statistica di base, Riassunto di Algebra Lineare e Teoria delle Probabilità

The curse of dimensionality e l'assunzione che i dati siano su una varietà

Distribuzione normale multivariata, distanza di Mahalanobis, norma L_p

Correlazione vs Causalità

Apprendimento con Supervisione:

Regressione vs Classificazione

Modelli parametrici linear: regressione lineare, minimi quadrati, Logistic regression, Perceptron, Discesa del gradiente

Complessità dei modelli, compromesso Bias-Variance. Overfitting e underfitting; Empirical Risk minimization, teoria dell'apprendimento, regolarizzazione;

Support Vector Machines: Optimal hyperplane, margin, kernels

“Deep Learning”: Modelli Profondi (DNN), Nonlineari e Differential Programming:

Multilayer Perceptron

Algoritmo backpropagation

Computational Graph e Automatic Differentiation

Stochastic Gradient Descent (SGD) su mini-batches

Modelli non-parametrici: The Nearest Neighbour (NN) Classifier, Decision Trees/Random Forest

Apprendimento senza Supervisione:

Riduzione delle dimensioni: Principal Components Analysis (PCA), t-SNE

Clustering, Kmeans, Expectation-Maximization (EM)

Gaussian Mixture Model (GMM)

Sistemi basati su ML:

Visualizzare i dati e analisi

Da ingegnerizzare le feature ad apprenderle

Model selection

Cross-validation

Hyperparameter tuning

Error analysis and Valutazione (Accuracy, Error-rate, Precision/Recall, ROC and CMC curves, confusion matrix).

Toolsets: Python, NumPy (matrix manipulation and linear algebra), scikit learn (basic ML), PyTorch (automatic differentiation and neural nets).

Modulo: UNIT I
Introduzione all'Intelligenza Artificiale, panoramica delle diverse sottodiscipline, aspetti storici

Agenti intelligenti, razionalità, tipologie di ambienti e di agenti

Strategie di ricerca non informata: in ampiezza, a costo uniforme, in profondità, a profondità limitata, ad approfondimento iterativo

Strategie di ricerca informata: best-first greedy, A*; funzioni euristiche: ammissibilità e consistenza

Problemi di soddisfacimento di vincoli: definizione, varianti, propagazione di vincoli (nodo-, arco-, cammino-, K-consistenza), backtracking, backjumping, ricerca locale

Conoscenza e ragionamento, agenti basati sulla logica proposizionale, SAT

Processi Decisionali di Markov, Value iteration, Policy Iteration

Reinforcement learning passivo (model-based e model-free), Reinforcement Learning attivo ( Q-learning)

Modulo: UNIT II

  • General Concepts of Machine Learning, Linear Algebra, Geometry [20 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”
  • Advanced Concepts of Machine Learning [25 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”
  • Exercising and coding of Artificial Intelligence and Machine Learning [15 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”

Modulo: UNIT I

  • General Concepts of Artificial Intelligence and Machine Learning [20 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition
  • Advanced Concepts of Artificial Intelligence and Machine Learning [25 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition
  • Exercising and coding of Artificial Intelligence and Machine Learning [15 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition

UNIT I
Modulo: UNIT II
Programma di massima

Introduzione:

Che cosa è l'apprendimento automatico (machine learning, ML)?

Dai sistemi basati su regole a prendere decisioni tramite apprendimento

I tipi di problemi che può risolvere ML

Statistica di base, Riassunto di Algebra Lineare e Teoria delle Probabilità

The curse of dimensionality e l'assunzione che i dati siano su una varietà

Distribuzione normale multivariata, distanza di Mahalanobis, norma L_p

Correlazione vs Causalità

Apprendimento con Supervisione:

Regressione vs Classificazione

Modelli parametrici linear: regressione lineare, minimi quadrati, Logistic regression, Perceptron, Discesa del gradiente

Complessità dei modelli, compromesso Bias-Variance. Overfitting e underfitting; Empirical Risk minimization, teoria dell'apprendimento, regolarizzazione;

Support Vector Machines: Optimal hyperplane, margin, kernels

“Deep Learning”: Modelli Profondi (DNN), Nonlineari e Differential Programming:

Multilayer Perceptron

Algoritmo backpropagation

Computational Graph e Automatic Differentiation

Stochastic Gradient Descent (SGD) su mini-batches

Modelli non-parametrici: The Nearest Neighbour (NN) Classifier, Decision Trees/Random Forest

Apprendimento senza Supervisione:

Riduzione delle dimensioni: Principal Components Analysis (PCA), t-SNE

Clustering, Kmeans, Expectation-Maximization (EM)

Gaussian Mixture Model (GMM)

Sistemi basati su ML:

Visualizzare i dati e analisi

Da ingegnerizzare le feature ad apprenderle

Model selection

Cross-validation

Hyperparameter tuning

Error analysis and Valutazione (Accuracy, Error-rate, Precision/Recall, ROC and CMC curves, confusion matrix).

Toolsets: Python, NumPy (matrix manipulation and linear algebra), scikit learn (basic ML), PyTorch (automatic differentiation and neural nets).

Modulo: UNIT I
Introduzione all'Intelligenza Artificiale, panoramica delle diverse sottodiscipline, aspetti storici

Agenti intelligenti, razionalità, tipologie di ambienti e di agenti

Strategie di ricerca non informata: in ampiezza, a costo uniforme, in profondità, a profondità limitata, ad approfondimento iterativo

Strategie di ricerca informata: best-first greedy, A*; funzioni euristiche: ammissibilità e consistenza

Problemi di soddisfacimento di vincoli: definizione, varianti, propagazione di vincoli (nodo-, arco-, cammino-, K-consistenza), backtracking, backjumping, ricerca locale

Conoscenza e ragionamento, agenti basati sulla logica proposizionale, SAT

Processi Decisionali di Markov, Value iteration, Policy Iteration

Reinforcement learning passivo (model-based e model-free), Reinforcement Learning attivo ( Q-learning)

Modulo: UNIT II

  • General Concepts of Machine Learning, Linear Algebra, Geometry [20 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”
  • Advanced Concepts of Machine Learning [25 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”
  • Exercising and coding of Artificial Intelligence and Machine Learning [15 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”

Modulo: UNIT I

  • General Concepts of Artificial Intelligence and Machine Learning [20 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition
  • Advanced Concepts of Artificial Intelligence and Machine Learning [25 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition
  • Exercising and coding of Artificial Intelligence and Machine Learning [15 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition

Modalità d'esame

UNIT II
Test con quiz da 17 punti per ogni unità. Quindi, ogni unità fornisce un massimo di 15 punti, più 2 punti di bonus per tollerare eventuali sviste.

I test sono a quiz, ma sono volti a simulare domande aperte: è necessario consegnare anche i calcoli o le brevi dimostrazioni/ragionamenti per rispondere.

Il punteggio per superare la prova su un'Unit è maggiore o uguale a 8,5.

Il voto di esame finale è la somma dei voti su 17 punti per Unit 1 e di quelli su 17 punti per Unit 2. Voto massimo 34.

La lode e' assegnata con questa regola:

AND(round(Unit1) >= 15,round(Unit2) >= 15,

round(Unit1+Unit2 grade) >= 32)

Verrà fatta autovalutazione in classe per abituare gli studenti all'esame

UNIT I
Test con quiz da 17 punti per ogni unità. Quindi, ogni unità fornisce un massimo di 15 punti, più 2 punti di bonus per tollerare eventuali sviste.

I test sono a quiz, ma sono volti a simulare domande aperte: è necessario consegnare anche i calcoli o le brevi dimostrazioni/ragionamenti per rispondere.

Il punteggio per superare la prova su un'Unit è maggiore o uguale a 8,5.

Il voto di esame finale è la somma dei voti su 17 punti per Unit 1 e di quelli su 17 punti per Unit 2. Voto massimo 34.

La lode e' assegnata con questa regola:

AND(round(Unit1) >= 15,round(Unit2) >= 15,

round(Unit1+Unit2 grade) >= 32)

Verrà fatta autovalutazione in classe per abituare gli studenti all'esame

Testi di riferimento

UNIT II
Modulo: UNIT II
I primi tre libri coprono la parte di base di machine learning. Gli altri due coprono la parte di Deep Learning.

Jerome H. Friedman, Robert Tibshirani, and Trevor Hastie, “The Elements of Statistical Learning”, Springer,

PDF from https://hastie.su.domains/ElemStatLearn/

Kevin P. Murphy, “Probabilistic Machine Learning: An introduction", MIT Press, 2021

Christopher M. Bishop, “Pattern Recognition and Machine Learning”

Ian Goodfellow and Yoshua Bengio and Aaron Courville, “Deep Learning”, MIT Press 2016

Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola, “Dive into Deep Learning”

Deep Learning Simone Scardapane (from Sapienza!) “Alice’s Adventures in a differentiable wonderland”

Modulo: UNIT I
Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition. Pearson Education 2022, ISBN 978-1292401133

Modulo: UNIT II
N/D
Modulo: UNIT I
Il libro di testo ed il materiale didattico fornito dal docente coprono bene il programma e nessun altro riferimento bibliografico è necessario.

UNIT I
Modulo: UNIT II
I primi tre libri coprono la parte di base di machine learning. Gli altri due coprono la parte di Deep Learning.

Jerome H. Friedman, Robert Tibshirani, and Trevor Hastie, “The Elements of Statistical Learning”, Springer,

PDF from https://hastie.su.domains/ElemStatLearn/

Kevin P. Murphy, “Probabilistic Machine Learning: An introduction", MIT Press, 2021

Christopher M. Bishop, “Pattern Recognition and Machine Learning”

Ian Goodfellow and Yoshua Bengio and Aaron Courville, “Deep Learning”, MIT Press 2016

Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola, “Dive into Deep Learning”

Deep Learning Simone Scardapane (from Sapienza!) “Alice’s Adventures in a differentiable wonderland”

Modulo: UNIT I
Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition. Pearson Education 2022, ISBN 978-1292401133

Modulo: UNIT II
N/D
Modulo: UNIT I
Il libro di testo ed il materiale didattico fornito dal docente coprono bene il programma e nessun altro riferimento bibliografico è necessario.

Codice insegnamento 10595618

CALCULUS 2 2° anno · 1° semestre · 6 CFU · MATH-03/A · 0 file

Obiettivi Formativi L'obiettivo principale del corso è estendere gli elementi fondamentali del calcolo differenziale ed integrale, appresi nel corso di Calculus I per funzioni di una singola variabile reale, alle…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Formativi
L'obiettivo principale del corso è estendere gli elementi fondamentali del calcolo differenziale ed integrale, appresi nel corso di Calculus I per funzioni di una singola variabile reale, alle funzioni di più variabili reali e ai campi vettoriali, fornendo agli studenti le basi analitiche necessarie per la comprensione delle principali discipline scientifiche, con particolare attenzione alle scienze informatiche.
Conoscenza e Capacità di Comprensione
Il corso intende estendere i seguenti concetti fondamentali del calcolo nel contesto di funzioni dipendenti da più variabili reali: il concetto di limite e continuità; gli elementi fondamentali del calcolo differenziale, incluse derivate parziali e direzionali, la matrice jacobiana e la matrice hessiana; gli elementi fondamentali del calcolo integrale, limitandosi principalmente al caso di due o tre variabili, ovvero integrali doppi e tripli. Nella parte finale del corso verranno introdotti gli elementi essenziali e i teoremi fondamentali del calcolo vettoriale, ovvero: campi vettoriali; gradiente, divergenza e rotore; integrali di linea e superficie; Teorema di Green; Teorema di Stokes; Teorema della divergenza.
Capacità di Applicare Conoscenza e Comprensione
Al termine del corso gli studenti avranno appreso come applicare le tecniche del calcolo differenziale ed integrale nello studio di funzioni di più variabili reali: sapranno calcolare limiti e derivate (parziali e direzionali), determinare differenziali e piano tangente al grafico in un punto, identificare massimi e minimi locali e globali. Gli studenti avranno inoltre appreso come impostare e calcolare integrali multipli per determinare aree e volumi, come parametrizzare curve e superfici e come calcolare integrali di linea e di superficie, come applicare i teoremi fondamentali del calcolo vettoriale nello studio di integrali multipli e campi vettoriali.
Autonomia di Giudizio
Gli studenti svilupperanno la capacità di valutare criticamente i problemi matematici e scegliere le tecniche più appropriate per risolverli. Saranno inoltre in grado di valutare in modo critico la validità e i limiti di un modello matematica quando applicato a una situazione concreta.
Abilità Comunicative
Al temine del corso gli studenti dovranno saper esporre in modo chiaro e con rigore matematico i concetti fondamentali del calcolo differenziale ed integrale per funzioni di più variabili reali, utilizzando in modo corretto la terminologia e la notazione matematica. Dovranno inoltre saper ripetere alcune delle dimostrazioni più importanti, presentando la sequenza logica dei passaggi e delle argomentazioni in modo coerente ed evidenziandone i punti salienti. Ci si aspetta d'altra parte che siano in grado di esporre i concetti appresi anche a un livello più informale, avendo chiara l'intuizione fisica e geometrica alla base dei concetti matematici astratti.
Capacità di Apprendimento
Il corso favorirà le capacità di apprendimento autonomo degli studenti, essenziali per il loro continuo sviluppo professionale e scientifico. Al termine del corso gli studenti saranno in grado di leggere, comprendere ed estrarre informazioni in modo indipendente da testi matematici avanzati, articoli scientifici e documentazione tecnica. Sapranno inoltre riconoscere i prerequisiti matematici necessari per comprendere argomenti avanzati di informatica, e colmare autonomamente eventuali lacune di conoscenza.

Programma

Programma di massima:

1) Funzioni di più variabili: dominio, limiti, differenziabilità, derivate parziali, derivate direzionali e piano tangente

2) Massimo e minimo per funzioni con più variabili,

3) Integrali doppi e tripli,

4) Curve ed integrali curvilinei

Modalità d'esame

La prova sara' scritta. Eventuale prova orale a discrezione del docente

Testi di riferimento

Lezioni del docente

James Stewart, Calculus

George B. Thomas, Calculus early trascendentals

M. Bramanti, C. Pagani, S. Salsa: Analisi matematica 2, Zanichelli

M. Bertsch, R. Dal Passo, L. Giacomelli: Analisi Matematica 2nd Ed., McGraw-Hill

Codice insegnamento 10595529

DATA MANAGEMENT AND ANALYSIS 2° anno · 1° semestre · 12 CFU · INFO-01/A · 0 file

Obiettivi formativi L'insegnamento fornisce le conoscenze e gli strumenti fondamentali per la gestione, l'analisi e l'interpretazione dei dati. Il corso introduce le principali fasi di una pipeline di analisi dei dati,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi L'insegnamento fornisce le conoscenze e gli strumenti fondamentali per la gestione, l'analisi e l'interpretazione dei dati. Il corso introduce le principali fasi di una pipeline di analisi dei dati, dalla raccolta e preparazione dei dati fino alla modellazione, visualizzazione e comunicazione dei risultati. Particolare attenzione è dedicata alle metodologie di data mining, alle tecniche di segmentazione, clustering e classificazione, nonché ai concetti fondamentali della network science. Il corso affronta inoltre le principali problematiche etiche e di privacy associate all'utilizzo dei dati digitali.
Conoscenza e capacità di comprensione Al termine dell'insegnamento lo studente conoscerà i principi fondamentali dell'analisi dei dati, le principali tecniche di data mining e i concetti di base relativi alla rappresentazione, gestione e visualizzazione dei dati. Lo studente comprenderà il ruolo delle diverse fasi della pipeline di analisi e i fondamenti dell'analisi delle reti complesse.
Capacità di applicare conoscenza e comprensione Lo studente sarà in grado di raccogliere, preparare e analizzare dati provenienti da differenti fonti, applicare tecniche di segmentazione, clustering e classificazione, utilizzare strumenti software per l'analisi e la visualizzazione dei dati e interpretare correttamente i risultati ottenuti. Sarà inoltre in grado di applicare metriche e strumenti di base della network science per l'analisi di sistemi interconnessi.
Autonomia di giudizio Lo studente svilupperà la capacità di valutare criticamente la qualità dei dati, selezionare metodologie appropriate per specifici problemi analitici e interpretare i risultati alla luce dei limiti e delle assunzioni dei modelli utilizzati. Sarà inoltre in grado di considerare le implicazioni etiche e di privacy connesse alla raccolta e all'utilizzo dei dati.
Abilità comunicative Lo studente sarà in grado di comunicare efficacemente risultati quantitativi mediante visualizzazioni appropriate, relazioni tecniche e presentazioni orali, utilizzando una terminologia corretta e adeguata al contesto applicativo.
Capacità di apprendimento Lo studente acquisirà le basi metodologiche necessarie per approfondire autonomamente tecniche avanzate di analisi dei dati, machine learning e network science, nonché per affrontare successivi insegnamenti e applicazioni professionali nel campo della data science.

Programma

UNIT II
Modulo: UNIT II

  • Course Introduction
  • Introduction to the issues of analyzing large volumes of data
  • Overview of Complex Systems
  • Introduction to specific languages for data analysis (R - Python)
  • SQL
  • Segmentation
  • Clustering
  • Classification
  • Introduction to Random and Scale-Free Networks
  • Network Centrality Metrics
  • Algorithms for Community Partitioning
  • Pipelines for Data Analysis
  • Features Extraction
  • Data Gathering
  • Data Modeling
  • Data Visualization

Modulo: UNIT I
Algebra relazionale (12 ore): Introduzione, Definizioni, Operatori relazionali.

Teoria relazionale (18 ore): Schemi di relazione, Dipendenze funzionali, Chiusure, Chiavi, Forme normali (3NF), Decomposizioni

Organizzazione fisica (20 ore): Indici, B-trees, Implementazione fisica di query, Query optimization

Concorrenza (10 ore): Gestione delle transazioni, Lock, Two-phase lock, Timestamp

Modulo: UNIT II

  • Principles of Data Analysis
  • Data Descriptives and Pipelines
  • Introduction to Data-Driven Modeling
  • Introduction to Network Science and Data Driven Modeling

Modulo: UNIT I

  • Algebra Relazionale
  • Teoria Relazionale
  • Organizzazione Fisica

UNIT I
Modulo: UNIT II

  • Course Introduction
  • Introduction to the issues of analyzing large volumes of data
  • Overview of Complex Systems
  • Introduction to specific languages for data analysis (R - Python)
  • SQL
  • Segmentation
  • Clustering
  • Classification
  • Introduction to Random and Scale-Free Networks
  • Network Centrality Metrics
  • Algorithms for Community Partitioning
  • Pipelines for Data Analysis
  • Features Extraction
  • Data Gathering
  • Data Modeling
  • Data Visualization

Modulo: UNIT I
Algebra relazionale (12 ore): Introduzione, Definizioni, Operatori relazionali.

Teoria relazionale (18 ore): Schemi di relazione, Dipendenze funzionali, Chiusure, Chiavi, Forme normali (3NF), Decomposizioni

Organizzazione fisica (20 ore): Indici, B-trees, Implementazione fisica di query, Query optimization

Concorrenza (10 ore): Gestione delle transazioni, Lock, Two-phase lock, Timestamp

Modulo: UNIT II

  • Principles of Data Analysis
  • Data Descriptives and Pipelines
  • Introduction to Data-Driven Modeling
  • Introduction to Network Science and Data Driven Modeling

Modulo: UNIT I

  • Algebra Relazionale
  • Teoria Relazionale
  • Organizzazione Fisica

Modalità d'esame

UNIT II
Unit 1 - L'esame consiste in una parte scritta e una parte orale facoltativa.

La parte scritta (2 ore e mezza) consiste in una sezione di domande a risposta multipla sulla teoria e una sezione di tre esercizi su: Algebra Relazionale, Teoria Relazionale, Organizzazione Fisica. La parte orale consiste in domande su: Definizioni e nozioni di base sulla Teoria Relazionale, Dimostrazioni di teoremi in Teoria Relazionale, Organizzazione fisica

Unit 2 - L'esame consiste nell'elaborazione di un progetto, successivamente discusso durante un'interrogazione orale.

UNIT I
Unit 1 - L'esame consiste in una parte scritta e una parte orale facoltativa.

La parte scritta (2 ore e mezza) consiste in una sezione di domande a risposta multipla sulla teoria e una sezione di tre esercizi su: Algebra Relazionale, Teoria Relazionale, Organizzazione Fisica. La parte orale consiste in domande su: Definizioni e nozioni di base sulla Teoria Relazionale, Dimostrazioni di teoremi in Teoria Relazionale, Organizzazione fisica

Unit 2 - L'esame consiste nell'elaborazione di un progetto, successivamente discusso durante un'interrogazione orale.

Testi di riferimento

UNIT II
Modulo: UNIT II
Materials provided by the Professor

Modulo: UNIT I
Lemahieu, W., vanden Broucke, S., & Baesens, B. (2018). Principles of Database Management: The Practical Guide to Storing, Managing and Analyzing Big and Small Data. Cambridge University Press.

Modulo: UNIT II
N/D
Modulo: UNIT I

  • Abraham Silberschatz, Henry F. Korth, S. Sudarshan: Database System Concepts. - P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone: Database Systems - Concepts, Languages and Architectures, The McGraw-Hill Companies - J. D. Ullman: Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems - Course material

UNIT I
Modulo: UNIT II
Materials provided by the Professor

Modulo: UNIT I
Lemahieu, W., vanden Broucke, S., & Baesens, B. (2018). Principles of Database Management: The Practical Guide to Storing, Managing and Analyzing Big and Small Data. Cambridge University Press.

Modulo: UNIT II
N/D
Modulo: UNIT I

  • Abraham Silberschatz, Henry F. Korth, S. Sudarshan: Database System Concepts. - P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone: Database Systems - Concepts, Languages and Architectures, The McGraw-Hill Companies - J. D. Ullman: Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems - Course material

Codice insegnamento 10595617

PROBABILITY 2° anno · 1° semestre · 6 CFU · MATH-03/B · 0 file

Obiettivi formativi Apprendimento dei concetti di probabilità di base. Distribuzioni di probabilità discrete, calcolo combinatorio, attesa e varianza. Indipendenza e correlazione, probabilità condizionata. Variabili…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi Apprendimento dei concetti di probabilità di base. Distribuzioni di probabilità discrete, calcolo combinatorio, attesa e varianza. Indipendenza e correlazione, probabilità condizionata. Variabili aleatorie, funzioni di variabili aleatorie, distribuzioni congiunte e marginali. Fondamenti di probabilità continua.
Conoscenza e capacità di comprensione Gli studenti acquisiranno familiarità con i concetti di base della probabilità discreta e continua.
Capacità di applicare conoscenza e comprensione Gli studenti impareranno ad applicare la teoria della probabilità a esempi concreti.
Autonomia di giudizio Capacità di valutare la correttezza di un ragionamento matematico riguardante temi di probabilità.
Abilità comunicative Capacità di produrre argomentazioni matematiche chiare e rigorose.
Capacità di apprendimento Capacità di apprendere e applicare la teoria della probabilità.

Codice insegnamento 10595525

STATISTICS 2° anno · 2° semestre · 6 CFU · STAT-01/A · 0 file

Conoscenza e capacità di comprensione Lo studente acquisirà le conoscenze fondamentali della statistica descrittiva, del calcolo delle probabilità e dell'inferenza statistica. Comprenderà i principali modelli…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza e capacità di comprensione Lo studente acquisirà le conoscenze fondamentali della statistica descrittiva, del calcolo delle probabilità e dell'inferenza statistica. Comprenderà i principali modelli statistici — regressione lineare semplice e multipla, regressione logistica — e sarà in grado di interpretarne i risultati in modo rigoroso.
Capacità di applicare conoscenza e comprensione Lo studente sarà in grado di applicare le tecniche statistiche apprese all'analisi di dati reali, scegliendo le misure di sintesi, i test di ipotesi e i modelli di regressione più appropriati al contesto. Utilizzerà il software R per l'implementazione pratica delle metodologie studiate.
Autonomia di giudizio Lo studente svilupperà la capacità di valutare criticamente i risultati di un'analisi statistica, riconoscendo i limiti dei modelli, verificando le assunzioni e interpretando correttamente indici, stime e test in relazione al problema applicativo.
Abilità comunicative Lo studente acquisirà la capacità di presentare e comunicare i risultati di un'analisi statistica in modo chiaro e preciso, sia in forma scritta che orale, utilizzando la terminologia tecnica appropriata e adattando il livello di dettaglio all'interlocutore.
Capacità di apprendimento Lo studente svilupperà strumenti metodologici che gli consentiranno di approfondire autonomamente argomenti avanzati di statistica e di affrontare nuovi problemi di analisi dei dati, anche in contesti interdisciplinari come l'informatica e l'intelligenza artificiale.

Programma

First part: Descriptive Statistics Types of variables Graphical representations Location measures Variability measures Dependence measures Correlation coefficient

Second part: Refresher in Probability calculus, Statistical inference Basic concepts of probability Discrete random variables and continuous random variables Central Limit Theorem Sampling distributions for the mean and the variance Maximum likelihood estimation method Point estimates (mean, variance, proportion, means of two populations, proportions of two populations, variance of two populations) Confidence Intervals (mean, variance, proportion, means of two populations, proportions of two populations, variance of two populations) Hypothesis tests (mean, proportion)

Third part: Statistical Models Simple Linear Regression model (definition, estimation and statistical inference on the model parameters) Multiple Linear Regression model (definition, estimation, statistical inference on the model parameters, variable selection) Logistic Regression (definition, estimation and statistical inference on the model parameters)

Modalità d'esame

La valutazione dell’apprendimento avviene tramite esame scritto in presenza. La prova è finalizzata a verificare la comprensione dei concetti teorici e la capacità di applicare metodi e tecniche statistiche alla risoluzione di esercizi e quesiti.

Testi di riferimento

1. Lassy Wasserman. All of Statistics: A Concise Course in Statistical Inference. Springer

2. Alan Agresti, Christine Franklin, Bernhard Klingenberg. Statistics: The Art and Science of Learning From Data. Pearson; 4th International Edition, ISBN 9781292164779.

3. Course material

4. R codes

Codice insegnamento 1055043

SYSTEMS AND NETWORKING 2° anno · 1° semestre · 12 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso fornisce agli studenti le conoscenze fondamentali sul funzionamento dei sistemi di elaborazione moderni, dal software di base che gestisce le risorse di un singolo calcolatore fino ai…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso fornisce agli studenti le conoscenze fondamentali sul funzionamento dei sistemi di elaborazione moderni, dal software di base che gestisce le risorse di un singolo calcolatore fino ai protocolli che permettono la comunicazione tra host attraverso Internet. Il corso è articolato in due parti integrate. La prima parte è dedicata ai sistemi operativi e affronta l'organizzazione e i servizi del sistema operativo, la gestione dei processi e dei thread, lo scheduling della CPU, la sincronizzazione e la concorrenza, la gestione della memoria e della memoria virtuale, il file system e la gestione dell'I/O e delle periferiche di memorizzazione. La seconda parte è dedicata alle reti di calcolatori e all'architettura di Internet, con particolare attenzione allo stack protocollare TCP/IP, ai principali protocolli e meccanismi che permettono la comunicazione tra host, l'instradamento dei pacchetti, il controllo dell'affidabilità e della congestione, la risoluzione dei nomi e l'accesso al mezzo nelle reti locali e wireless. Verranno inoltre presentati protocolli di trasporto moderni, tra cui QUIC, evidenziandone il ruolo nell'evoluzione dell'architettura di Internet. Il corso prevede anche attività pratiche finalizzate alla comprensione del comportamento del sistema operativo e alla configurazione, osservazione e analisi di reti e protocolli.
Conoscenza e capacità di comprensione
Al termine del corso, lo studente avrà acquisito una conoscenza solida dei principi alla base dei sistemi operativi e delle reti di calcolatori. Per quanto riguarda i sistemi operativi, comprenderà il ruolo del sistema operativo come gestore delle risorse e come interfaccia tra hardware e applicazioni, il ciclo di vita dei processi e dei thread, le principali politiche di scheduling della CPU, i meccanismi di sincronizzazione e i problemi classici della concorrenza (mutua esclusione, semafori, monitor, deadlock), nonché le tecniche di gestione della memoria fisica e virtuale, di paginazione e di organizzazione del file system e dell'I/O. Per quanto riguarda le reti, lo studente comprenderà il ruolo dei diversi livelli dello stack TCP/IP, dai protocolli di livello applicativo fino ai meccanismi di trasporto, rete e accesso al mezzo. Comprenderà il funzionamento di protocolli fondamentali quali IP, TCP, UDP e DNS e dei principali meccanismi di instradamento, nonché le problematiche relative all'affidabilità, al controllo di congestione, alla frammentazione, all'indirizzamento e alla condivisione del canale. Acquisirà inoltre conoscenze di base sulle reti wireless e sul protocollo CSMA/CA, oltre a comprendere le motivazioni e le caratteristiche principali di protocolli di trasporto moderni come QUIC.
Capacità di applicare conoscenza e comprensione
Lo studente sarà in grado di analizzare il comportamento di un sistema operativo, valutando l'effetto delle diverse politiche di gestione dei processi, della memoria e delle risorse sulle prestazioni complessive del sistema. Saprà ragionare su scenari di concorrenza, individuando e prevenendo condizioni di corsa, situazioni di stallo e problemi di consistenza, e calcolare grandezze fondamentali quali tempi di attesa, tempi di completamento e utilizzo della CPU. Per quanto riguarda le reti, sarà in grado di analizzare il funzionamento di una rete TCP/IP, identificando il ruolo dei diversi protocolli coinvolti nella comunicazione end-to-end, interpretare scenari di comunicazione e calcolare grandezze fondamentali quali ritardi, throughput, utilizzo del canale e dimensioni delle finestre di trasmissione, valutando il comportamento dei protocolli di trasporto e di rete in presenza di congestione, perdite o vincoli di banda. Sarà inoltre capace di configurare semplici scenari di rete, osservare lo scambio di pacchetti e interpretare i risultati ottenuti attraverso strumenti di analisi e attività pratiche di laboratorio.
Autonomia di giudizio
Il corso mira a sviluppare la capacità di valutare criticamente le scelte progettuali adottate sia a livello di sistema operativo sia a livello di architettura di rete. Lo studente sarà in grado di discutere vantaggi e limiti delle principali soluzioni adottate nella gestione delle risorse di un calcolatore, quali le politiche di scheduling, i meccanismi di sincronizzazione e le strategie di gestione della memoria, e di confrontare soluzioni architetturali di rete considerando aspetti quali scalabilità, affidabilità, efficienza, ritardo, sicurezza, mobilità e interoperabilità. Sarà inoltre in grado di confrontare protocolli tradizionali e moderni, come TCP e QUIC, comprendendo le ragioni progettuali alla base della loro evoluzione e valutando l'impatto delle diverse scelte sulle prestazioni complessive del sistema e della rete.
Abilità comunicative
Lo studente acquisirà la capacità di descrivere in modo chiaro e rigoroso il funzionamento di un sistema operativo e dei principali protocolli di Internet, nonché dei meccanismi che regolano la gestione delle risorse e la comunicazione tra dispositivi. Sarà in grado di utilizzare un linguaggio tecnico appropriato per spiegare concetti quali processo, thread, scheduling, sincronizzazione, deadlock, memoria virtuale, incapsulamento, indirizzamento, instradamento, controllo di flusso, controllo di congestione, risoluzione dei nomi e accesso al mezzo. Il corso favorisce inoltre la capacità di presentare e discutere risultati derivanti da esercizi, analisi di protocolli e attività pratiche.
Capacità di apprendimento
Al termine del corso, lo studente avrà sviluppato le competenze necessarie per approfondire autonomamente temi avanzati nel campo dei sistemi operativi, delle reti di calcolatori e dell'evoluzione di Internet. Sarà in grado di leggere documentazione tecnica, comprendere specifiche di sistema e specifiche protocollari, interpretare risultati sperimentali e aggiornare le proprie conoscenze rispetto allo sviluppo di nuovi sistemi, protocolli, architetture e tecnologie.

Programma

UNIT II
Introduzione alle reti di calcolatori: concetti fondamentali, architetture e modelli.

Stack TCP/IP: livelli applicativo, trasporto, rete, collegamento e fisico.

Protocolli e algoritmi di rete: problemi comuni (congestione, affidabilità, routing) e relative soluzioni.

Strumenti e tecniche di analisi: modelli, simulazioni, strumenti software.

Cenni su reti wireless: caratteristiche, sfide e protocolli principali.

Modulo: UNIT II
N/D
Modulo: UNIT I
N/D

UNIT I
Introduzione alle reti di calcolatori: concetti fondamentali, architetture e modelli.

Stack TCP/IP: livelli applicativo, trasporto, rete, collegamento e fisico.

Protocolli e algoritmi di rete: problemi comuni (congestione, affidabilità, routing) e relative soluzioni.

Strumenti e tecniche di analisi: modelli, simulazioni, strumenti software.

Cenni su reti wireless: caratteristiche, sfide e protocolli principali.

Modulo: UNIT II
N/D
Modulo: UNIT I
N/D

Modalità d'esame

UNIT II
La valutazione avverrà mediante una prova scritta contenente domande teoriche e esercizi pratici. A sola discrezione del docente, allo studente può essere richiesto il superamento di una prova orale.

UNIT I
La valutazione avverrà mediante una prova scritta contenente domande teoriche e esercizi pratici. A sola discrezione del docente, allo studente può essere richiesto il superamento di una prova orale.

Testi di riferimento

UNIT II
Computer Networking: A Top-Down Approach, Global Edition

di James Kurose (Autore) , Keith Ross (Autore) Pearson Education Limited, 2021

Computer Networking: A Top-Down Approach, Global Edition

di James Kurose (Autore) , Keith Ross (Autore) Pearson Education Limited, 2021

UNIT I
Computer Networking: A Top-Down Approach, Global Edition

di James Kurose (Autore) , Keith Ross (Autore) Pearson Education Limited, 2021

Computer Networking: A Top-Down Approach, Global Edition

di James Kurose (Autore) , Keith Ross (Autore) Pearson Education Limited, 2021

Codice insegnamento 10595616

UNIT I 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Lo scopo del corso di Data Management and Analysis - Unit 1 è quello di fornire una conoscenza dettagliata delle tecnologie necessarie ad immagazzinare, gestire e condividere piccole e grandi quantità…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Lo scopo del corso di Data Management and Analysis - Unit 1 è quello di fornire una conoscenza dettagliata delle tecnologie necessarie ad immagazzinare, gestire e condividere piccole e grandi quantità di dati. A tal fine, il corso offrirà una panoramica dei concetti alla base del design, modellazione e storage di un Sistema di Gestione di Basi di Dati (DBMS).

La Unit 2 del corso ha lo scopo di esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per la gestione di dati con particolare enfasi sulle basi di dati sia relazionali che NoSQL.

Per gli obiettivi specifici si invita a consultare gli obiettivi formativi delle Unit 1 e Unit 2 del corso.

Obiettivi generali:

Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.

Obiettivi specifici:

Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.

Avere conoscenza e comprensione:

Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.

Applicare conoscenza e comprensione:

Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.

Capacità critiche e di giudizio:

Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.

Capacità comunicative:

Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.

Programma

Modulo: UNIT II

  • Course Introduction
  • Introduction to the issues of analyzing large volumes of data
  • Overview of Complex Systems
  • Introduction to specific languages for data analysis (R - Python)
  • SQL
  • Segmentation
  • Clustering
  • Classification
  • Introduction to Random and Scale-Free Networks
  • Network Centrality Metrics
  • Algorithms for Community Partitioning
  • Pipelines for Data Analysis
  • Features Extraction
  • Data Gathering
  • Data Modeling
  • Data Visualization

Modulo: UNIT I
Algebra relazionale (12 ore): Introduzione, Definizioni, Operatori relazionali.

Teoria relazionale (18 ore): Schemi di relazione, Dipendenze funzionali, Chiusure, Chiavi, Forme normali (3NF), Decomposizioni

Organizzazione fisica (20 ore): Indici, B-trees, Implementazione fisica di query, Query optimization

Concorrenza (10 ore): Gestione delle transazioni, Lock, Two-phase lock, Timestamp

Modulo: UNIT II

  • Principles of Data Analysis
  • Data Descriptives and Pipelines
  • Introduction to Data-Driven Modeling
  • Introduction to Network Science and Data Driven Modeling

Modulo: UNIT I

  • Algebra Relazionale
  • Teoria Relazionale
  • Organizzazione Fisica

Modalità d'esame

Unit 1 - L'esame consiste in una parte scritta e una parte orale facoltativa.

La parte scritta (2 ore e mezza) consiste in una sezione di domande a risposta multipla sulla teoria e una sezione di tre esercizi su: Algebra Relazionale, Teoria Relazionale, Organizzazione Fisica. La parte orale consiste in domande su: Definizioni e nozioni di base sulla Teoria Relazionale, Dimostrazioni di teoremi in Teoria Relazionale, Organizzazione fisica

Unit 2 - L'esame consiste nell'elaborazione di un progetto, successivamente discusso durante un'interrogazione orale.

Testi di riferimento

Modulo: UNIT II
Materials provided by the Professor

Modulo: UNIT I
Lemahieu, W., vanden Broucke, S., & Baesens, B. (2018). Principles of Database Management: The Practical Guide to Storing, Managing and Analyzing Big and Small Data. Cambridge University Press.

Modulo: UNIT II
N/D
Modulo: UNIT I

  • Abraham Silberschatz, Henry F. Korth, S. Sudarshan: Database System Concepts. - P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone: Database Systems - Concepts, Languages and Architectures, The McGraw-Hill Companies - J. D. Ullman: Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems - Course material

Codice insegnamento AID-2e022f95-44e

UNIT I 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Il corso mira a fornire una preparazione completa sui concetti, la struttura, e i meccanismi di funzionamento alla base dei sistemi operativi. Verranno trattate caratteristiche fondamentali,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Il corso mira a fornire una preparazione completa sui concetti, la struttura, e i meccanismi di funzionamento alla base dei sistemi operativi. Verranno trattate caratteristiche fondamentali, presenti fin dai sistemi più tradizionali, ma anche peculiarità dei sistemi moderni che nascono come conseguenza dell’evoluzione ricorrente della tecnologia.

Lo studente, inoltre, imparerà a usare in modo produttivo l'interfaccia di programmazione fra utente/sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo (in particolare, dei sistemi UNIX/Linux).

Obiettivi specifici:

Caratteristiche e concetti dei sistemi operativi moderni, con particolare riferimento ai sistemi UNIX/Linux. Si inizierà con una descrizione dell’evoluzione dei sistemi operativi nel tempo, per continuare con un richiamo all'architettura degli elaboratori e, in particolare ai componenti fondamentali della macchina fisica (CPU, memoria principale, I/O). Dopodiché, si affronteranno i temi strettamente legati alle funzionalità di un sistema operativo: i processi/thread e il loro scheduling sulla CPU, lo stallo (e i relativi meccanismi di prevenzione), la concorrenza, la gestione della memoria, il file system e la sicurezza.

Conoscenza e comprensione:

Capire in modo profondo come i sistemi operativi danno supporto all’esecuzione dei programmi degli utenti e gestiscono le periferiche hardware di un computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.

Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell BASH. Conoscenza delle principali system call di Linux.

Inoltre al termine del corso gli studenti posseggono le conoscenze di base relative:

  • ai concetti fondamentali relativi alle reti di elaboratori: livelli protocollari, servizi;
  • alle problematiche fondamentali, e relative soluzioni, incontrate nella definizione dei livelli fisico, data-link (incluso sottolivello MAC), rete, trasporto ed applicazione di una moderna architettura di rete;
  • alle caratteristiche e funzionamento dei vari livelli e protocolli dell’architettura di rete Tcp/Ip;
  • alla simulazione di rete.

Applicare conoscenza e comprensione:

Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.

Saper creare script in BASH in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse.

Inoltre sl termine del corso gli studenti sono in grado di:

  • comprendere in profondità autonomamente le finalità, le caratteristiche ed il funzionamento di nuovi protocolli e sistemi di telecomunicazione;
  • comprendere i perchè delle diverse scelte protocollari dello stack TPC/IP e quindi essere in grado di selezionare le configurazioni ed i protocolli più appropriate da usare in un contesto applicativo.

Capacità critiche e di giudizio:

Essere in grado di predire l’uso delle risorse richieste da un programma, di scoprire una possibile situazione di stallo in un sistema multiprogrammato, garantire la mutua esclusione tra processi e l’accesso protetto a zone di memoria o risorse sensibili.

Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script BASH, o un programma C/Java basato su system call di Linux.

Capacità comunicative:

Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.

Essere in grado di comunicare e documentare script BASH e programmi C basati su system call di Linux.

Capacità di apprendimento:

I sistemi operativi rappresentano uno dei principali esempi di sistemi software complessi. Pertanto, l'insieme delle conoscenze acquisite in questo corso si renderanno estremamente utili in tutti quei domini in cui la complessità dei sistemi diventa perfino superiore: ad esempio, nei sistemi distribuiti, o nei sistemi "cloud" e di processamento/analisi di "big data".

Funzionamento delle reti di elaboratori, problemi e soluzioni protocollari e algoritmiche. Stack TCP/IP. Cenni su reti wireless.

Programma

Introduzione alle reti di calcolatori: concetti fondamentali, architetture e modelli.

Stack TCP/IP: livelli applicativo, trasporto, rete, collegamento e fisico.

Protocolli e algoritmi di rete: problemi comuni (congestione, affidabilità, routing) e relative soluzioni.

Strumenti e tecniche di analisi: modelli, simulazioni, strumenti software.

Cenni su reti wireless: caratteristiche, sfide e protocolli principali.

Modulo: UNIT II
N/D
Modulo: UNIT I
N/D

Modalità d'esame

La valutazione avverrà mediante una prova scritta contenente domande teoriche e esercizi pratici. A sola discrezione del docente, allo studente può essere richiesto il superamento di una prova orale.

Testi di riferimento

Computer Networking: A Top-Down Approach, Global Edition

di James Kurose (Autore) , Keith Ross (Autore) Pearson Education Limited, 2021

Computer Networking: A Top-Down Approach, Global Edition

di James Kurose (Autore) , Keith Ross (Autore) Pearson Education Limited, 2021

Codice insegnamento AID-09e1884b-5e7

UNIT I 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Generali: Nella Unit 1 Il corso si propone di esporre gli studenti ad un'ampia panoramica dell'Intelligenza Artificiale (IA). Nella Unit 2 il corso introduce lo studente alla disciplina dell’apprendimento…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali:

Nella Unit 1 Il corso si propone di esporre gli studenti ad un'ampia panoramica dell'Intelligenza Artificiale (IA).

Nella Unit 2 il corso introduce lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione.

Obiettivi Specifici:

per gli obiettivi specifici si invita a consultare gli Obiettivi Formativi delle Unit 1 e Unit 2 del corso.

Obiettivi generali:

Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione, nonché alle basi del deep learning.

Obiettivi specifici:

Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.

Il corso è introduttivo e generale sull’apprendimento automatico, ma si toccano alcuni aspetti del deep learning.

Conoscenze e comprensione:

Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per l’apprendimento con e senza supervisione; saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala, al fine di mettere in pratica le nozioni apprese.

Applicare conoscenza e comprensione:

Verranno usati strumenti come NumPy (con un’enfasi sulla scrittura di codice vettorizzato), scikit-learn e PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.

Capacità di giudizio:

Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML, saper valutare e misurare le prestazioni di un algoritmo su dei dati, distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.

Capacità di comunicazione:

Mostrare padronanza degli argomenti, comunicando in maniera chiara, con rigore logico e con la giusta terminologia i concetti appresi nel corso, sia per quanto riguarda la parte teorica che quella pratica. La comunicazione può avvenire anche attraverso un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.

Capacità di apprendimento:

Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati sul deep learning.

Programma

Modulo: UNIT II
Programma di massima

Introduzione:

Che cosa è l'apprendimento automatico (machine learning, ML)?

Dai sistemi basati su regole a prendere decisioni tramite apprendimento

I tipi di problemi che può risolvere ML

Statistica di base, Riassunto di Algebra Lineare e Teoria delle Probabilità

The curse of dimensionality e l'assunzione che i dati siano su una varietà

Distribuzione normale multivariata, distanza di Mahalanobis, norma L_p

Correlazione vs Causalità

Apprendimento con Supervisione:

Regressione vs Classificazione

Modelli parametrici linear: regressione lineare, minimi quadrati, Logistic regression, Perceptron, Discesa del gradiente

Complessità dei modelli, compromesso Bias-Variance. Overfitting e underfitting; Empirical Risk minimization, teoria dell'apprendimento, regolarizzazione;

Support Vector Machines: Optimal hyperplane, margin, kernels

“Deep Learning”: Modelli Profondi (DNN), Nonlineari e Differential Programming:

Multilayer Perceptron

Algoritmo backpropagation

Computational Graph e Automatic Differentiation

Stochastic Gradient Descent (SGD) su mini-batches

Modelli non-parametrici: The Nearest Neighbour (NN) Classifier, Decision Trees/Random Forest

Apprendimento senza Supervisione:

Riduzione delle dimensioni: Principal Components Analysis (PCA), t-SNE

Clustering, Kmeans, Expectation-Maximization (EM)

Gaussian Mixture Model (GMM)

Sistemi basati su ML:

Visualizzare i dati e analisi

Da ingegnerizzare le feature ad apprenderle

Model selection

Cross-validation

Hyperparameter tuning

Error analysis and Valutazione (Accuracy, Error-rate, Precision/Recall, ROC and CMC curves, confusion matrix).

Toolsets: Python, NumPy (matrix manipulation and linear algebra), scikit learn (basic ML), PyTorch (automatic differentiation and neural nets).

Modulo: UNIT I
Introduzione all'Intelligenza Artificiale, panoramica delle diverse sottodiscipline, aspetti storici

Agenti intelligenti, razionalità, tipologie di ambienti e di agenti

Strategie di ricerca non informata: in ampiezza, a costo uniforme, in profondità, a profondità limitata, ad approfondimento iterativo

Strategie di ricerca informata: best-first greedy, A*; funzioni euristiche: ammissibilità e consistenza

Problemi di soddisfacimento di vincoli: definizione, varianti, propagazione di vincoli (nodo-, arco-, cammino-, K-consistenza), backtracking, backjumping, ricerca locale

Conoscenza e ragionamento, agenti basati sulla logica proposizionale, SAT

Processi Decisionali di Markov, Value iteration, Policy Iteration

Reinforcement learning passivo (model-based e model-free), Reinforcement Learning attivo ( Q-learning)

Modulo: UNIT II

  • General Concepts of Machine Learning, Linear Algebra, Geometry [20 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”
  • Advanced Concepts of Machine Learning [25 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”
  • Exercising and coding of Artificial Intelligence and Machine Learning [15 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”

Modulo: UNIT I

  • General Concepts of Artificial Intelligence and Machine Learning [20 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition
  • Advanced Concepts of Artificial Intelligence and Machine Learning [25 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition
  • Exercising and coding of Artificial Intelligence and Machine Learning [15 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition

Modalità d'esame

Test con quiz da 17 punti per ogni unità. Quindi, ogni unità fornisce un massimo di 15 punti, più 2 punti di bonus per tollerare eventuali sviste.

I test sono a quiz, ma sono volti a simulare domande aperte: è necessario consegnare anche i calcoli o le brevi dimostrazioni/ragionamenti per rispondere.

Il punteggio per superare la prova su un'Unit è maggiore o uguale a 8,5.

Il voto di esame finale è la somma dei voti su 17 punti per Unit 1 e di quelli su 17 punti per Unit 2. Voto massimo 34.

La lode e' assegnata con questa regola:

AND(round(Unit1) >= 15,round(Unit2) >= 15,

round(Unit1+Unit2 grade) >= 32)

Verrà fatta autovalutazione in classe per abituare gli studenti all'esame

Testi di riferimento

Modulo: UNIT II
I primi tre libri coprono la parte di base di machine learning. Gli altri due coprono la parte di Deep Learning.

Jerome H. Friedman, Robert Tibshirani, and Trevor Hastie, “The Elements of Statistical Learning”, Springer,

PDF from https://hastie.su.domains/ElemStatLearn/

Kevin P. Murphy, “Probabilistic Machine Learning: An introduction", MIT Press, 2021

Christopher M. Bishop, “Pattern Recognition and Machine Learning”

Ian Goodfellow and Yoshua Bengio and Aaron Courville, “Deep Learning”, MIT Press 2016

Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola, “Dive into Deep Learning”

Deep Learning Simone Scardapane (from Sapienza!) “Alice’s Adventures in a differentiable wonderland”

Modulo: UNIT I
Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition. Pearson Education 2022, ISBN 978-1292401133

Modulo: UNIT II
N/D
Modulo: UNIT I
Il libro di testo ed il materiale didattico fornito dal docente coprono bene il programma e nessun altro riferimento bibliografico è necessario.

Codice insegnamento AID-81b04944-978

UNIT I 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Lo scopo del corso di Data Management and Analysis - Unit 1 è quello di fornire una conoscenza dettagliata delle tecnologie necessarie ad immagazzinare, gestire e condividere piccole e grandi quantità…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Lo scopo del corso di Data Management and Analysis - Unit 1 è quello di fornire una conoscenza dettagliata delle tecnologie necessarie ad immagazzinare, gestire e condividere piccole e grandi quantità di dati. A tal fine, il corso offrirà una panoramica dei concetti alla base del design, modellazione e storage di un Sistema di Gestione di Basi di Dati (DBMS).

La Unit 2 del corso ha lo scopo di esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per la gestione di dati con particolare enfasi sulle basi di dati sia relazionali che NoSQL.

Per gli obiettivi specifici si invita a consultare gli obiettivi formativi delle Unit 1 e Unit 2 del corso.

Obiettivi generali:

Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.

Obiettivi specifici:

Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.

Avere conoscenza e comprensione:

Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.

Applicare conoscenza e comprensione:

Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.

Capacità critiche e di giudizio:

Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.

Capacità comunicative:

Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.

Programma

Modulo: UNIT II

  • Course Introduction
  • Introduction to the issues of analyzing large volumes of data
  • Overview of Complex Systems
  • Introduction to specific languages for data analysis (R - Python)
  • SQL
  • Segmentation
  • Clustering
  • Classification
  • Introduction to Random and Scale-Free Networks
  • Network Centrality Metrics
  • Algorithms for Community Partitioning
  • Pipelines for Data Analysis
  • Features Extraction
  • Data Gathering
  • Data Modeling
  • Data Visualization

Modulo: UNIT I
Algebra relazionale (12 ore): Introduzione, Definizioni, Operatori relazionali.

Teoria relazionale (18 ore): Schemi di relazione, Dipendenze funzionali, Chiusure, Chiavi, Forme normali (3NF), Decomposizioni

Organizzazione fisica (20 ore): Indici, B-trees, Implementazione fisica di query, Query optimization

Concorrenza (10 ore): Gestione delle transazioni, Lock, Two-phase lock, Timestamp

Modulo: UNIT II

  • Principles of Data Analysis
  • Data Descriptives and Pipelines
  • Introduction to Data-Driven Modeling
  • Introduction to Network Science and Data Driven Modeling

Modulo: UNIT I

  • Algebra Relazionale
  • Teoria Relazionale
  • Organizzazione Fisica

Modalità d'esame

Unit 1 - L'esame consiste in una parte scritta e una parte orale facoltativa.

La parte scritta (2 ore e mezza) consiste in una sezione di domande a risposta multipla sulla teoria e una sezione di tre esercizi su: Algebra Relazionale, Teoria Relazionale, Organizzazione Fisica. La parte orale consiste in domande su: Definizioni e nozioni di base sulla Teoria Relazionale, Dimostrazioni di teoremi in Teoria Relazionale, Organizzazione fisica

Unit 2 - L'esame consiste nell'elaborazione di un progetto, successivamente discusso durante un'interrogazione orale.

Testi di riferimento

Modulo: UNIT II
Materials provided by the Professor

Modulo: UNIT I
Lemahieu, W., vanden Broucke, S., & Baesens, B. (2018). Principles of Database Management: The Practical Guide to Storing, Managing and Analyzing Big and Small Data. Cambridge University Press.

Modulo: UNIT II
N/D
Modulo: UNIT I

  • Abraham Silberschatz, Henry F. Korth, S. Sudarshan: Database System Concepts. - P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone: Database Systems - Concepts, Languages and Architectures, The McGraw-Hill Companies - J. D. Ullman: Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems - Course material

Codice insegnamento AID-9a846aca-835

UNIT II 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Lo scopo del corso di Data Management and Analysis - Unit 1 è quello di fornire una conoscenza dettagliata delle tecnologie necessarie ad immagazzinare, gestire e condividere piccole e grandi quantità…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Lo scopo del corso di Data Management and Analysis - Unit 1 è quello di fornire una conoscenza dettagliata delle tecnologie necessarie ad immagazzinare, gestire e condividere piccole e grandi quantità di dati. A tal fine, il corso offrirà una panoramica dei concetti alla base del design, modellazione e storage di un Sistema di Gestione di Basi di Dati (DBMS).

La Unit 2 del corso ha lo scopo di esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per la gestione di dati con particolare enfasi sulle basi di dati sia relazionali che NoSQL.

Per gli obiettivi specifici si invita a consultare gli obiettivi formativi delle Unit 1 e Unit 2 del corso.

Obiettivi generali:

Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.

Obiettivi specifici:

Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.

Avere conoscenza e comprensione:

Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.

Applicare conoscenza e comprensione:

Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.

Capacità critiche e di giudizio:

Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.

Capacità comunicative:

Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.

Programma

Modulo: UNIT II

  • Course Introduction
  • Introduction to the issues of analyzing large volumes of data
  • Overview of Complex Systems
  • Introduction to specific languages for data analysis (R - Python)
  • SQL
  • Segmentation
  • Clustering
  • Classification
  • Introduction to Random and Scale-Free Networks
  • Network Centrality Metrics
  • Algorithms for Community Partitioning
  • Pipelines for Data Analysis
  • Features Extraction
  • Data Gathering
  • Data Modeling
  • Data Visualization

Modulo: UNIT I
Algebra relazionale (12 ore): Introduzione, Definizioni, Operatori relazionali.

Teoria relazionale (18 ore): Schemi di relazione, Dipendenze funzionali, Chiusure, Chiavi, Forme normali (3NF), Decomposizioni

Organizzazione fisica (20 ore): Indici, B-trees, Implementazione fisica di query, Query optimization

Concorrenza (10 ore): Gestione delle transazioni, Lock, Two-phase lock, Timestamp

Modulo: UNIT II

  • Principles of Data Analysis
  • Data Descriptives and Pipelines
  • Introduction to Data-Driven Modeling
  • Introduction to Network Science and Data Driven Modeling

Modulo: UNIT I

  • Algebra Relazionale
  • Teoria Relazionale
  • Organizzazione Fisica

Modalità d'esame

Unit 1 - L'esame consiste in una parte scritta e una parte orale facoltativa.

La parte scritta (2 ore e mezza) consiste in una sezione di domande a risposta multipla sulla teoria e una sezione di tre esercizi su: Algebra Relazionale, Teoria Relazionale, Organizzazione Fisica. La parte orale consiste in domande su: Definizioni e nozioni di base sulla Teoria Relazionale, Dimostrazioni di teoremi in Teoria Relazionale, Organizzazione fisica

Unit 2 - L'esame consiste nell'elaborazione di un progetto, successivamente discusso durante un'interrogazione orale.

Testi di riferimento

Modulo: UNIT II
Materials provided by the Professor

Modulo: UNIT I
Lemahieu, W., vanden Broucke, S., & Baesens, B. (2018). Principles of Database Management: The Practical Guide to Storing, Managing and Analyzing Big and Small Data. Cambridge University Press.

Modulo: UNIT II
N/D
Modulo: UNIT I

  • Abraham Silberschatz, Henry F. Korth, S. Sudarshan: Database System Concepts. - P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone: Database Systems - Concepts, Languages and Architectures, The McGraw-Hill Companies - J. D. Ullman: Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems - Course material

Codice insegnamento AID-241138e1-c90

UNIT II 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Il corso mira a fornire una preparazione completa sui concetti, la struttura, e i meccanismi di funzionamento alla base dei sistemi operativi. Verranno trattate caratteristiche fondamentali,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Il corso mira a fornire una preparazione completa sui concetti, la struttura, e i meccanismi di funzionamento alla base dei sistemi operativi. Verranno trattate caratteristiche fondamentali, presenti fin dai sistemi più tradizionali, ma anche peculiarità dei sistemi moderni che nascono come conseguenza dell’evoluzione ricorrente della tecnologia.

Lo studente, inoltre, imparerà a usare in modo produttivo l'interfaccia di programmazione fra utente/sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo (in particolare, dei sistemi UNIX/Linux).

Obiettivi specifici:

Caratteristiche e concetti dei sistemi operativi moderni, con particolare riferimento ai sistemi UNIX/Linux. Si inizierà con una descrizione dell’evoluzione dei sistemi operativi nel tempo, per continuare con un richiamo all'architettura degli elaboratori e, in particolare ai componenti fondamentali della macchina fisica (CPU, memoria principale, I/O). Dopodiché, si affronteranno i temi strettamente legati alle funzionalità di un sistema operativo: i processi/thread e il loro scheduling sulla CPU, lo stallo (e i relativi meccanismi di prevenzione), la concorrenza, la gestione della memoria, il file system e la sicurezza.

Conoscenza e comprensione:

Capire in modo profondo come i sistemi operativi danno supporto all’esecuzione dei programmi degli utenti e gestiscono le periferiche hardware di un computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.

Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell BASH. Conoscenza delle principali system call di Linux.

Inoltre al termine del corso gli studenti posseggono le conoscenze di base relative:

  • ai concetti fondamentali relativi alle reti di elaboratori: livelli protocollari, servizi;
  • alle problematiche fondamentali, e relative soluzioni, incontrate nella definizione dei livelli fisico, data-link (incluso sottolivello MAC), rete, trasporto ed applicazione di una moderna architettura di rete;
  • alle caratteristiche e funzionamento dei vari livelli e protocolli dell’architettura di rete Tcp/Ip;
  • alla simulazione di rete.

Applicare conoscenza e comprensione:

Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.

Saper creare script in BASH in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse.

Inoltre sl termine del corso gli studenti sono in grado di:

  • comprendere in profondità autonomamente le finalità, le caratteristiche ed il funzionamento di nuovi protocolli e sistemi di telecomunicazione;
  • comprendere i perchè delle diverse scelte protocollari dello stack TPC/IP e quindi essere in grado di selezionare le configurazioni ed i protocolli più appropriate da usare in un contesto applicativo.

Capacità critiche e di giudizio:

Essere in grado di predire l’uso delle risorse richieste da un programma, di scoprire una possibile situazione di stallo in un sistema multiprogrammato, garantire la mutua esclusione tra processi e l’accesso protetto a zone di memoria o risorse sensibili.

Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script BASH, o un programma C/Java basato su system call di Linux.

Capacità comunicative:

Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.

Essere in grado di comunicare e documentare script BASH e programmi C basati su system call di Linux.

Capacità di apprendimento:

I sistemi operativi rappresentano uno dei principali esempi di sistemi software complessi. Pertanto, l'insieme delle conoscenze acquisite in questo corso si renderanno estremamente utili in tutti quei domini in cui la complessità dei sistemi diventa perfino superiore: ad esempio, nei sistemi distribuiti, o nei sistemi "cloud" e di processamento/analisi di "big data".

Funzionamento delle reti di elaboratori, problemi e soluzioni protocollari e algoritmiche. Stack TCP/IP. Cenni su reti wireless.

Programma

Introduzione alle reti di calcolatori: concetti fondamentali, architetture e modelli.

Stack TCP/IP: livelli applicativo, trasporto, rete, collegamento e fisico.

Protocolli e algoritmi di rete: problemi comuni (congestione, affidabilità, routing) e relative soluzioni.

Strumenti e tecniche di analisi: modelli, simulazioni, strumenti software.

Cenni su reti wireless: caratteristiche, sfide e protocolli principali.

Modulo: UNIT II
N/D
Modulo: UNIT I
N/D

Modalità d'esame

La valutazione avverrà mediante una prova scritta contenente domande teoriche e esercizi pratici. A sola discrezione del docente, allo studente può essere richiesto il superamento di una prova orale.

Testi di riferimento

Computer Networking: A Top-Down Approach, Global Edition

di James Kurose (Autore) , Keith Ross (Autore) Pearson Education Limited, 2021

Computer Networking: A Top-Down Approach, Global Edition

di James Kurose (Autore) , Keith Ross (Autore) Pearson Education Limited, 2021

Codice insegnamento AID-86f5dd99-9c0

UNIT II 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Generali: Nella Unit 1 Il corso si propone di esporre gli studenti ad un'ampia panoramica dell'Intelligenza Artificiale (IA). Nella Unit 2 il corso introduce lo studente alla disciplina dell’apprendimento…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali:

Nella Unit 1 Il corso si propone di esporre gli studenti ad un'ampia panoramica dell'Intelligenza Artificiale (IA).

Nella Unit 2 il corso introduce lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione.

Obiettivi Specifici:

per gli obiettivi specifici si invita a consultare gli Obiettivi Formativi delle Unit 1 e Unit 2 del corso.

Obiettivi generali:

Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione, nonché alle basi del deep learning.

Obiettivi specifici:

Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.

Il corso è introduttivo e generale sull’apprendimento automatico, ma si toccano alcuni aspetti del deep learning.

Conoscenze e comprensione:

Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per l’apprendimento con e senza supervisione; saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala, al fine di mettere in pratica le nozioni apprese.

Applicare conoscenza e comprensione:

Verranno usati strumenti come NumPy (con un’enfasi sulla scrittura di codice vettorizzato), scikit-learn e PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.

Capacità di giudizio:

Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML, saper valutare e misurare le prestazioni di un algoritmo su dei dati, distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.

Capacità di comunicazione:

Mostrare padronanza degli argomenti, comunicando in maniera chiara, con rigore logico e con la giusta terminologia i concetti appresi nel corso, sia per quanto riguarda la parte teorica che quella pratica. La comunicazione può avvenire anche attraverso un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.

Capacità di apprendimento:

Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati sul deep learning.

Programma

Modulo: UNIT II
Programma di massima

Introduzione:

Che cosa è l'apprendimento automatico (machine learning, ML)?

Dai sistemi basati su regole a prendere decisioni tramite apprendimento

I tipi di problemi che può risolvere ML

Statistica di base, Riassunto di Algebra Lineare e Teoria delle Probabilità

The curse of dimensionality e l'assunzione che i dati siano su una varietà

Distribuzione normale multivariata, distanza di Mahalanobis, norma L_p

Correlazione vs Causalità

Apprendimento con Supervisione:

Regressione vs Classificazione

Modelli parametrici linear: regressione lineare, minimi quadrati, Logistic regression, Perceptron, Discesa del gradiente

Complessità dei modelli, compromesso Bias-Variance. Overfitting e underfitting; Empirical Risk minimization, teoria dell'apprendimento, regolarizzazione;

Support Vector Machines: Optimal hyperplane, margin, kernels

“Deep Learning”: Modelli Profondi (DNN), Nonlineari e Differential Programming:

Multilayer Perceptron

Algoritmo backpropagation

Computational Graph e Automatic Differentiation

Stochastic Gradient Descent (SGD) su mini-batches

Modelli non-parametrici: The Nearest Neighbour (NN) Classifier, Decision Trees/Random Forest

Apprendimento senza Supervisione:

Riduzione delle dimensioni: Principal Components Analysis (PCA), t-SNE

Clustering, Kmeans, Expectation-Maximization (EM)

Gaussian Mixture Model (GMM)

Sistemi basati su ML:

Visualizzare i dati e analisi

Da ingegnerizzare le feature ad apprenderle

Model selection

Cross-validation

Hyperparameter tuning

Error analysis and Valutazione (Accuracy, Error-rate, Precision/Recall, ROC and CMC curves, confusion matrix).

Toolsets: Python, NumPy (matrix manipulation and linear algebra), scikit learn (basic ML), PyTorch (automatic differentiation and neural nets).

Modulo: UNIT I
Introduzione all'Intelligenza Artificiale, panoramica delle diverse sottodiscipline, aspetti storici

Agenti intelligenti, razionalità, tipologie di ambienti e di agenti

Strategie di ricerca non informata: in ampiezza, a costo uniforme, in profondità, a profondità limitata, ad approfondimento iterativo

Strategie di ricerca informata: best-first greedy, A*; funzioni euristiche: ammissibilità e consistenza

Problemi di soddisfacimento di vincoli: definizione, varianti, propagazione di vincoli (nodo-, arco-, cammino-, K-consistenza), backtracking, backjumping, ricerca locale

Conoscenza e ragionamento, agenti basati sulla logica proposizionale, SAT

Processi Decisionali di Markov, Value iteration, Policy Iteration

Reinforcement learning passivo (model-based e model-free), Reinforcement Learning attivo ( Q-learning)

Modulo: UNIT II

  • General Concepts of Machine Learning, Linear Algebra, Geometry [20 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”
  • Advanced Concepts of Machine Learning [25 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”
  • Exercising and coding of Artificial Intelligence and Machine Learning [15 hours]
  • Testi di riferimento: Christopher M. Bishop “Pattern Recognition and Machine Learning”

Modulo: UNIT I

  • General Concepts of Artificial Intelligence and Machine Learning [20 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition
  • Advanced Concepts of Artificial Intelligence and Machine Learning [25 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition
  • Exercising and coding of Artificial Intelligence and Machine Learning [15 hours]
  • Testi di riferimento: Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition

Modalità d'esame

Test con quiz da 17 punti per ogni unità. Quindi, ogni unità fornisce un massimo di 15 punti, più 2 punti di bonus per tollerare eventuali sviste.

I test sono a quiz, ma sono volti a simulare domande aperte: è necessario consegnare anche i calcoli o le brevi dimostrazioni/ragionamenti per rispondere.

Il punteggio per superare la prova su un'Unit è maggiore o uguale a 8,5.

Il voto di esame finale è la somma dei voti su 17 punti per Unit 1 e di quelli su 17 punti per Unit 2. Voto massimo 34.

La lode e' assegnata con questa regola:

AND(round(Unit1) >= 15,round(Unit2) >= 15,

round(Unit1+Unit2 grade) >= 32)

Verrà fatta autovalutazione in classe per abituare gli studenti all'esame

Testi di riferimento

Modulo: UNIT II
I primi tre libri coprono la parte di base di machine learning. Gli altri due coprono la parte di Deep Learning.

Jerome H. Friedman, Robert Tibshirani, and Trevor Hastie, “The Elements of Statistical Learning”, Springer,

PDF from https://hastie.su.domains/ElemStatLearn/

Kevin P. Murphy, “Probabilistic Machine Learning: An introduction", MIT Press, 2021

Christopher M. Bishop, “Pattern Recognition and Machine Learning”

Ian Goodfellow and Yoshua Bengio and Aaron Courville, “Deep Learning”, MIT Press 2016

Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola, “Dive into Deep Learning”

Deep Learning Simone Scardapane (from Sapienza!) “Alice’s Adventures in a differentiable wonderland”

Modulo: UNIT I
Stuart J. Russell, Peter Norvig: Artificial Intelligence - A Modern Approach, Fourth International Edition. Pearson Education 2022, ISBN 978-1292401133

Modulo: UNIT II
N/D
Modulo: UNIT I
Il libro di testo ed il materiale didattico fornito dal docente coprono bene il programma e nessun altro riferimento bibliografico è necessario.

Codice insegnamento AID-e07044a1-122

UNIT II 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Lo scopo del corso di Data Management and Analysis - Unit 1 è quello di fornire una conoscenza dettagliata delle tecnologie necessarie ad immagazzinare, gestire e condividere piccole e grandi quantità…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:

Lo scopo del corso di Data Management and Analysis - Unit 1 è quello di fornire una conoscenza dettagliata delle tecnologie necessarie ad immagazzinare, gestire e condividere piccole e grandi quantità di dati. A tal fine, il corso offrirà una panoramica dei concetti alla base del design, modellazione e storage di un Sistema di Gestione di Basi di Dati (DBMS).

La Unit 2 del corso ha lo scopo di esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per la gestione di dati con particolare enfasi sulle basi di dati sia relazionali che NoSQL.

Per gli obiettivi specifici si invita a consultare gli obiettivi formativi delle Unit 1 e Unit 2 del corso.

Obiettivi generali:

Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.

Obiettivi specifici:

Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di utilizzare le espressioni di algebra relazionale per la ricerca di informazioni in una base di dati relazionale. Capacità di valutare i costi delle operazioni di accesso ai dati.

Avere conoscenza e comprensione:

Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale (algebra relazionale). Principali strutture di organizzazione dei dati su memoria secondaria.

Applicare conoscenza e comprensione:

Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.

Capacità critiche e di giudizio:

Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.

Capacità comunicative:

Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati.

Programma

Modulo: UNIT II

  • Course Introduction
  • Introduction to the issues of analyzing large volumes of data
  • Overview of Complex Systems
  • Introduction to specific languages for data analysis (R - Python)
  • SQL
  • Segmentation
  • Clustering
  • Classification
  • Introduction to Random and Scale-Free Networks
  • Network Centrality Metrics
  • Algorithms for Community Partitioning
  • Pipelines for Data Analysis
  • Features Extraction
  • Data Gathering
  • Data Modeling
  • Data Visualization

Modulo: UNIT I
Algebra relazionale (12 ore): Introduzione, Definizioni, Operatori relazionali.

Teoria relazionale (18 ore): Schemi di relazione, Dipendenze funzionali, Chiusure, Chiavi, Forme normali (3NF), Decomposizioni

Organizzazione fisica (20 ore): Indici, B-trees, Implementazione fisica di query, Query optimization

Concorrenza (10 ore): Gestione delle transazioni, Lock, Two-phase lock, Timestamp

Modulo: UNIT II

  • Principles of Data Analysis
  • Data Descriptives and Pipelines
  • Introduction to Data-Driven Modeling
  • Introduction to Network Science and Data Driven Modeling

Modulo: UNIT I

  • Algebra Relazionale
  • Teoria Relazionale
  • Organizzazione Fisica

Modalità d'esame

Unit 1 - L'esame consiste in una parte scritta e una parte orale facoltativa.

La parte scritta (2 ore e mezza) consiste in una sezione di domande a risposta multipla sulla teoria e una sezione di tre esercizi su: Algebra Relazionale, Teoria Relazionale, Organizzazione Fisica. La parte orale consiste in domande su: Definizioni e nozioni di base sulla Teoria Relazionale, Dimostrazioni di teoremi in Teoria Relazionale, Organizzazione fisica

Unit 2 - L'esame consiste nell'elaborazione di un progetto, successivamente discusso durante un'interrogazione orale.

Testi di riferimento

Modulo: UNIT II
Materials provided by the Professor

Modulo: UNIT I
Lemahieu, W., vanden Broucke, S., & Baesens, B. (2018). Principles of Database Management: The Practical Guide to Storing, Managing and Analyzing Big and Small Data. Cambridge University Press.

Modulo: UNIT II
N/D
Modulo: UNIT I

  • Abraham Silberschatz, Henry F. Korth, S. Sudarshan: Database System Concepts. - P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone: Database Systems - Concepts, Languages and Architectures, The McGraw-Hill Companies - J. D. Ullman: Principles of Database & Knowledge-Base Systems, Vol. 1: Classical Database Systems - Course material

Codice insegnamento AID-bd9d6f7d-d16

BUSINESS AND COMPUTER SCIENCE 3° anno · 1° semestre · 6 CFU · ECON-07/A · 0 file

Obiettivi generali Il corso di Business and Computer Science analizza differenti tipologie di sistemi informativi e come esse possono contribuire al successo degli obiettivi di un’azienda. Permette di comprendere gli…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali
Il corso di Business and Computer Science analizza differenti tipologie di sistemi informativi e come esse possono contribuire al successo degli obiettivi di un’azienda. Permette di comprendere gli approcci e i modelli da utilizzare per valutare la qualità dei processi, del software e dei servizi ICT e fornisce le conoscenze di base per pianificare, gestire e controllare i progetti IT.
Obiettivi specifici Conoscenza e comprensione
Modello funzionale e struttura informativa dei processi aziendali Esigenze di integrazione e requisiti di controllo dei dati nei sistemi informativi aziendali Sistemi e tecnologie per sviluppare e mantenere un e-business di successo Principali settori di applicazione dei sistemi informativi in vari settori di mercato Organizzazione IT e modelli di valutazione della qualità IT Conoscenze di base di contesto, tecniche, metodologie e soft skill per la gestione dei progetti ICT Systems and technologies to develop and maintain a successful e-business Main application areas of information systems in various industries ICT organization and mainstream techniques (e.g. quality management) Basic definitions (context), techniques, methodologies and soft skills for project management in ICT
Conoscenza e comprensione applicate
Analizzare le diverse categorie di requisiti estratti da differenti categorie di utenti (stakeholder) di sistemi informativi Selezionare l’appropriato modello per valutare la qualità dei processi ICT, del prodotto software e dei servizi ICT Sviluppare uno studio di fattibilità selezionando l’appropriata architettura applicativa e tecnologica Preparare, per un semplice progetto ICT, un piano di sviluppo nel rispetto dei vincoli di tempo, costi e qualità, definendo l’appropriata organizzazione Controllare un progetto ICT in corso, applicando le tecniche di project management Comprendere e valutare le lezioni apprese nei precedenti progetti
Abilità critiche e di giudizio
La combinazione di lezioni teoriche frontali ed esercitazioni pratiche mirate alla discussione e alla soluzione di specifici problemi consente agli studenti di acquisire la capacità di valutare potenzialità e limiti degli approcci e dei modelli ai fini dello sviluppo delle imprese e del raggiungimento dei loro obiettivi strategici.
Abilità comunicative
Al termine del corso, gli studenti sono in grado di illustrare e spiegare i principali approcci alla gestione dell’impresa, dei suoi processi e dei servizi ICT a una varietà di interlocutori eterogenei per formazione e ruolo professionale.
Capacità di apprendimento
Lo studente acquisisce la capacità di condurre in autonomia studi individuali su argomenti specifici inerenti ai sistemi informativi, alla gestione dei processi e dei servizi. Durante il corso, lo studente è stimolato ad approfondire argomenti di particolare interesse mediante la consultazione di materiale bibliografico supplementare, quali articoli accademici, libri specialistici e siti internet. L’acquisizione di tali capacità viene verificata e valutata tramite l’analisi e la risoluzione di problemi nuovi sulla base degli argomenti trattati e del materiale di riferimento distribuito durante il corso.

Codice insegnamento 10595536

CYBERSECURITY 3° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Formativi Il corso si propone di fornire agli studenti una comprensione approfondita e sistematica dei principi, delle tecnologie e delle metodologie di gestione della cybersecurity. Il programma copre l'intero…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Formativi
Il corso si propone di fornire agli studenti una comprensione approfondita e sistematica dei principi, delle tecnologie e delle metodologie di gestione della cybersecurity. Il programma copre l'intero spettro della sicurezza informatica: dagli strumenti crittografici alla sicurezza del software e dei sistemi operativi, fino alle difese di rete, alla gestione del rischio, alla sicurezza fisica e agli aspetti etici. Gli studenti acquisiranno le competenze necessarie per progettare, implementare e verificare la sicurezza di infrastrutture IT complesse.
Conoscenza e capacità di comprensione
Al termine del corso lo studente avrà acquisito conoscenze approfondite relative a:
Strumenti crittografici: meccanismi di cifratura simmetrica e asimmetrica, confidenzialità dei messaggi, autenticazione e firme digitali.
Sicurezza dei sistemi e del software: vulnerabilità del software (es. buffer overflow), meccanismi di controllo degli accessi, autenticazione utente, sicurezza dei sistemi operativi e concetti di trusted computing.
Minacce e difese di rete: tassonomia del malware, attacchi Denial-of-Service (DoS), protocolli di sicurezza internet (IPsec, TLS/SSL), sicurezza delle reti wireless e sistemi di difesa (firewall, IDS/IPS).
Capacità di applicare conoscenza e comprensione
Lo studente sarà in grado di:
Configurare sistemi di difesa: implementare e ottimizzare policy di controllo degli accessi, sistemi di autenticazione, firewall e sistemi di rilevamento/prevenzione delle intrusioni (IDS/IPS).
Riconoscere vulnerabilità software: applicare pratiche di sviluppo sicuro per prevenire exploit comuni come buffer overflow e proteggere l’ambiente del sistema operativo.
Utilizzare protocolli sicuri: utilizzare correttamente algoritmi crittografici e protocolli internet standard per garantire autenticazione, integrità e riservatezza dei dati in transito.
Autonomia di giudizio
Lo studente saprà:
Valutare la sicurezza nel quotidiano: analizzare criticamente i rischi digitali giornalieri, verificando l’affidabilità della navigazione web (es. certificati HTTPS), la sicurezza delle reti wireless e la robustezza dei sistemi di autenticazione (es. MFA, biometria) sugli smartphone.
Discernere l’affidabilità del software: valutare autonomamente l’integrità di applicazioni e interfacce prima dell’uso, riconoscendo potenziali vettori di malware, tentativi di ingegneria sociale e vulnerabilità logiche.
Comprendere i rischi umani e fisici: identificare l’impatto dei fattori fisici e comportamentali (human resources security), valutando come le proprie azioni online e offline influenzino la sicurezza dei dati personali e aziendali.
Bilanciare usabilità, etica e privacy: configurare consapevolmente PC, smartphone e dispositivi IoT, trovando il giusto compromesso tra comodità d’uso e protezione dalle minacce, nel rispetto dei vincoli legali ed etici.
Abilità comunicative
Lo studente svilupperà la capacità di:
Analizzare casi reali in sede d’esame: esporre con rigore e linguaggio tecnico la dinamica di attacchi informatici reali, scomponendo l’incidente (vulnerabilità, malware, DoS, impatto sui sistemi) e illustrando chiaramente le contromisure adottate.
Partecipare a dibattiti (flipped classroom): interagire attivamente durante le lezioni attraverso l’approccio della classe capovolta, presentando approfondimenti su protocolli, standard e normative e migliorando le proprie capacità di public speaking.
Tradurre il linguaggio tecnico: comunicare concetti complessi (es. crittografia asimmetrica o buffer overflow) a pubblici differenti, adattando il registro comunicativo sia a specialisti del settore sia a figure non tecniche, come personale aziendale o risorse umane.

Programma

(Tentative)

Computer Security Concepts

Cryptographic tools

User Authentication

Access Control

Malicious Software

Denial-of-Service Attacks

Intrusion Detection

Firewalls and Intrusion Prevention Systems

Buffer Overflow

Software Security

Operating System Security

Trusted Computing and Multilevel Security

IT Security Management and Risk Assessment

IT Security Controls, Plans, and Procedures

Physical and Infrastructure Security

Human Resources Security

Security Auditing

Legal and Ethical Aspects

Symmetric Encryption and Message Confidentiality

Public-Key Cryptography and Message Authentication

Internet Security Protocols and Standards

Internet Authentication Applications

Wireless Network Security

  • Introduzione alla sicurezza informatica
  • Autenticazione
  • Controllo degli accessi
  • Malware
  • Denial of Service
  • Sicurezza delle basi di dati
  • Buffer overflow
  • Sicurezza del web
  • Crittografia simmetrica
  • Crittografia a chiave pubblica
  • Gli standard per la sicurezza Internet
  • Anonimità nel web

Modalità d'esame

L'esame prevede una prova scritta della durata di due ore. La prova scritta è articolata in due parti:

  • 10 domande a risposta aperta
  • 20 domande a risposta multipla.

Il punteggio totale è di 100 punti: 60 punti per la parte a domande aperte e 40 punti per quella a risposta multipla.

Le domande a risposta aperta vengono valutate da 0 a 6 punti, in base alla loro correttezza, completezza e precisione.

Le domande a risposta multipla vengono valutate da 0 a 2 punti e prevedono 4 possibili risposte, di cui una o più possono essere corrette.

Per superare l'esame occorre ottenere un punteggio non inferiore a 40. Il punteggio ottenuto viene rapportato sulla scala in trentesimi.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente di tutti gli argomenti del corso.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo in grado di raccordarli in modo logico e coerente.

Testi di riferimento

Computer Security: Principles and Practice 4th Edition

by William Stallings (Author), Lawrie Brown (Author)

Codice insegnamento 10595532

DEEP LEARNING 3° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi: Acquisire i fondamenti dell'apprendimento profondo (deep learning) e delle reti neurali artificiali. Rendere gli studenti consapevoli degli strumenti teorici e pratici dell'apprendimento profondo,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi: Acquisire i fondamenti dell'apprendimento profondo (deep learning) e delle reti neurali artificiali. Rendere gli studenti consapevoli degli strumenti teorici e pratici dell'apprendimento profondo, nonché dei loro limiti intrinseci; rendere gli studenti in grado di affrontare problemi reali attraverso le architetture e le tecniche più appropriate.
Conoscenza e capacità di comprensione: Il corso fornisce le nozioni, le tecniche e le metodologie utilizzate nell'ambito dell'apprendimento profondo, dalle reti neurali feedforward alle architetture convoluzionali, ricorrenti e ai transformer. Fornisce inoltre le competenze di programmazione necessarie ad implementare e addestrare modelli di deep learning su casi reali, attraverso i principali framework (es. PyTorch).
Capacità di applicare conoscenza e comprensione: Alla fine del corso, gli studenti sapranno affrontare problemi concreti di apprendimento profondo, dalla loro formalizzazione sino alla progettazione, addestramento e valutazione di reti neurali attraverso appropriati strumenti software.
Autonomia di giudizio: Gli studenti saranno in grado di scegliere le architetture e le tecniche di ottimizzazione e regolarizzazione da applicare al caso specifico e di valutarne le prestazioni.
Abilità comunicative: Gli studenti saranno in grado di rappresentare e comunicare i risultati e il comportamento dei modelli, attraverso l'uso razionale di grafici, metriche e indicatori.
Capacità di apprendimento: Gli studenti saranno messi in grado di apprendere autonomamente nozioni sia teoriche che pratiche del campo, mantenendosi aggiornati su un settore in rapida evoluzione.

Programma

Introduzione al deep learning, la relazione tra deep learning e machine learning, e applicazioni alla computer vision e natural language processing.

Introduzione all'elaborazione delle immagini digitali e le convoluzioni, introduzione all'elaborazione di input di testo e parlato.

Revisione della regressione logistica multinomiale per la classificazione multi-classe, classificatori lineari, ottimizzazione con gradient descent e regolarizzazione.

Introduzione al grafico computazionale e alla backpropagation.

Reti neurali convoluzionali e moderne architetture convoluzionali.

Training di ConvNet: funzioni di attivazione, pre-elaborazione dei dati, inizializzazione dei pesi, batch-normalization, DropOut e data augmentation, ottimizzazione degli iperparametri, transfer learning.

Reti neurali convoluzionali per serie temporali.

Reti neurali ricorrenti RNN e LSTMS

Transformer Networks, attenzione e auto-attenzione, codifica posizionale, le moderne architetture di Transformer Networks e BERT.

Generative Deep Learning: generazione auto-regressiva, auto-encoder (AE), reti avversarie generative (GAN)

Etica del deep learning

  • General Concepts of Deep Learning [20 hours]
  • Testi di riferimento: Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning
  • Advanced Concepts of Deep Learning [10 hours]
  • Testi di riferimento: Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning
  • Advanced Concepts of Deep Learning with Computer Vision Application [15 hours]
  • Testi di riferimento: Antonio Torralba, Phillip Isola and William T. Freeman, 2024. Foundations of Computer Vision
  • Coding of Deep Learning [15 hours]
  • Testi di riferimento: Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning

Modalità d'esame

L'esame consiste in una prova scritta con domande a risposta multipla su teoria e su esercizi che vertono sull’intero programma del corso.

Testi di riferimento

Slides and coding scripts will be distributed after lectures, as well as references to online material, including papers and blogs.

Reference books Machine Learning:

Deisenroth, Faisal, Ong, 2020. Mathematics for Machine Learning (available at: https://mml-book.github.io/)

Christopher M. Bishop, 2006. Pattern Recognition and Machine Learning

Reference books for Deep Learning:

Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning (available at: https://d2l.ai/)

Francois Fleuret, 2024. The Little Book of Deep Learning. (available at: https://fleuret.org/dlc/)

Michael M. Bronstein, Joan Bruna, Taco Cohen, Petar Veličković, 2024. Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges (available at: https://geometricdeeplearning.com/book/)

Ian Goofellow, Yoshua Bengio, Aaron Courville, 2017. Deep Learning (available at: https://www.deeplearningbook.org/)

Andrew Ng, 2019. Machine Learning Yearning (available at: https://www.deeplearning.ai/machine-learning-yearning/)

Zhang Lipton Li Smola Book, 2019 Dive into Deep Learning (interactive book and code at: http://d2l.ai/index.html)

Reference books for Computer Vision:

Antonio Torralba, Phillip Isola and William T. Freeman, 2024. Foundations of Computer Vision (https://mitpress.mit.edu/9780262048972/foundations-of-computer-vision/)

Richard Szeliski, 2010. Computer Vision: Algorithms and Applications

(available at: http://szeliski.org/Book)

Reference books for Robotics:

Frank Dellaert, 2024, Robotics. (available at: https://www.roboticsbook.org/)

Reference book for Python and Pytorch:

Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning (available at https://d2l.ai/ , select Notebooks/Pytorch)

Jake VanderPlas, 2016. Python Data Science Handbook: Tools and Techniques for Developers: Essential Tools for working with Data (Book and notebooks available at: https://github.com/jakevdp/PythonDataScienceHandbook)

Online tutorials for Python: https://docs.python.org/3/tutorial/

Online tutorials for Pytorch: https://pytorch.org/tutorials/

Christopher M. Bishop, 2006. Pattern Recognition and Machine Learning

Michael M. Bronstein, Joan Bruna, Taco Cohen, Petar Veličković, 2024. Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges (available at: https://geometricdeeplearning.com/book/)

Frank Dellaert, 2024, Robotics. (available at: https://www.roboticsbook.org/)

Deisenroth, Faisal, Ong, 2020. Mathematics for Machine Learning (available at: https://mml-book.github.io/)

Francois Fleuret, 2024. The Little Book of Deep Learning. (available at: https://fleuret.org/dlc/)

Ian Goofellow, Yoshua Bengio, Aaron Courville, 2017. Deep Learning (available at: https://www.deeplearningbook.org/)

Zhang Lipton Li Smola Book, 2019 Dive into Deep Learning (interactive book and code at: http://d2l.ai/index.html)

Andrew Ng, 2019. Machine Learning Yearning (available at: https://www.deeplearning.ai/machine-learning-yearning/)

Antonio Torralba, Phillip Isola and William T. Freeman, 2024. Foundations of Computer Vision (https://mitpress.mit.edu/9780262048972/foundations-of-computer-vision/)

Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning (available at: https://d2l.ai/)

Richard Szeliski, 2010. Computer Vision: Algorithms and Applications

(available at: http://szeliski.org/Book)

Jake VanderPlas, 2016. Python Data Science Handbook: Tools and Techniques for Developers: Essential Tools for working with Data (Book and notebooks available at: https://github.com/jakevdp/PythonDataScienceHandbook)

Codice insegnamento 10595531

Elective course 3° anno · 2° semestre · 12 CFU · 0 file

Insegnamenti a scelta come previsto da percorso formativo

Scheda dell'insegnamento

Obiettivi formativi

Insegnamenti a scelta come previsto da percorso formativo

Codice insegnamento AID-010f7da2-5b8

FINAL EXAM 3° anno · 2° semestre · 3 CFU · 0 file

La formazione si completa con un tirocinio, da svolgere o esternamente presso aziende del settore informatico, tipicamente seguendo attività di analisi, progettazione e sviluppo software, analisi di dati, intelligenza…

Scheda dell'insegnamento

Obiettivi formativi

La formazione si completa con un tirocinio, da svolgere o esternamente presso aziende del settore informatico, tipicamente seguendo attività di analisi, progettazione e sviluppo software, analisi di dati, intelligenza artificiale, sistemi e reti, o internamente, approfondendo tematiche avanzate. In entrambi i casi il tirocinio ha una durata di circa tre mesi e prevede che allo studente sia proposto un problema del mondo reale, da risolvere attraverso l'elaborazione di un progetto sviluppato con un approccio professionale.

Codice insegnamento AAF2608

FOUNDATIONS OF COMPUTER SCIENCE 3° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Durante il corso saranno introdotti i più importanti risultati dell’Informatica teorica: a partire dai fondamentali risultati in teoria della calcolabilità degli anni trenta, passando per quelli in…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Durante il corso saranno introdotti i più importanti risultati dell’Informatica teorica: a partire dai fondamentali risultati in teoria della calcolabilità degli anni trenta, passando per quelli in teoria degli automi degli anni cinquanta per arrivare al problema aperto P contenuto o uguale a NP, esplicitamente sollevato negli anni settanta.
Obiettivi specifici: Gli studenti capiranno che ci sono diversi modelli di computazione e cosa ne determina il potere computazionale. Gli studenti apprenderanno concetti astratti come classi di linguaggi, macchine universali, riducibilità e sapranno che alcuni problemi non possono essere risolti con un calcolatore e che altri sono computazionalmente difficili da risolvere o addirittura così difficili da poter essere considerati non risolvibili. Faremo vedere come alcuni di questi risultati sono utilizzati oggi.
Conoscenza e comprensione: Al termine del corso gli studenti conosceranno i metodi e risultati di base della della teoria degli automi, della calcolabilità e della complessità e sapranno applicarli per individuare la complessità di problemi in diversi campi. In particolare sapranno: dimostrare l’equivalenza tra le diverse caratterizzazioni dei linguaggi regolari dimostrare l’equivalenza tra le diverse caratterizzazioni dei linguaggi context-free spiegare il concetto di non determinismo giustificare l'esistenza di problemi privi di soluzioni algoritmiche o intrattabili.
Applicazione di conoscenza e comprensione: Gli studenti impareranno: come costruire automi finiti (deterministici e non) da una specifica (formale o informale) come costruire automi a pila (deterministici e non) da una specifica (formale o informale) a usare la riducibilità tra problemi per dimostrarne la decidibilità o l'indecidibilità a usare la riducibilità polinomiale per provare la NP-hardness di un problema
Autonomia di giudizio: Capire il giusto livello di astrazione utile per risolvere un problema, scegliere il modello computazionale più conveniente in un determinato contesto applicativo.
Abilità comunicative: descrivere un linguaggio formale, a parole o attraverso uno degli strumenti offerti di descrizione finita, descrivere problemi indecidibili, intrattabili o trattabili, spiegare il significato e la rilevanza delle classi P ed NP nonché del problema “P=NP?"
Capacità di apprendimento: Lo studente sarà in grado di imparare altri modelli computazionali, sia completamente diversi da quelli studiati durante il corso, sia variazioni di questi. Egli sarà capace di capire nuove prove di NP-completezza o più in generale prove di completezza per una qualunque classe di complessità

Programma

Automi e Linguaggi: Linguaggi regolari, automi a stati finiti e grammatiche regolari. Linguaggi context-free, grammatiche context-free e automi a pila; gerarchia di Chomsky.

Teoria della Calcolabità: Macchine di Turing. Tesi di Church-Turing. Problemi indecidibili: il problema della fermata. La riduzione tra problemi: uno strumento per dimostrarne l'indecibilità o la decidibilità. Esempi di problemi decidibili e indecidibili.

Teoria della Complessità: Complessità di tempo e spazio per le macchine di Turing.Classi di complessità. Problemi trattabili e problemi non provatamente intrattabili: le classi P e NP. Riduzioni polinomiali e NP-completezza. Teorema di Cook-Levin e altri problemi NP-completi.

  • Linguaggi formali (30 ore)
  • Testi di riferimento: Sipser (capitoli 0.1, 0.2, 1.1, 1.2, 1.3, 2.1, 2.2, 2.3, 3.1, 3.2) + Hopcroft&Ullman (capitoli 9.1, 9.2)
  • Computabilità (10 ore)
  • Testi di riferimento: Sipser (capitoli 3.3, 4.1, 4.2, 5.1)
  • Complessità (20 ore)
  • Testi di riferimento: Rivest (capitoli 34.1, 34.2, 34.3, 34.4, 34.5, 35.1, 35.2, 35.5) + Sipser (capitoli 7.1, 7.2, 7.3, 7.4, 7.5, 8)

Modalità d'esame

Due modalità d'esame:

1. Breve scritto di 45 minuti sui primi due capitoli del testo di Sipser, con esercizi su linguaggi formali (automi, espressioni regolari, linguaggi, uso dei pumping lemma per provare che linguaggi non sono regolari/CF); lo scritto non produce un voto, ma solo all'accesso all'orale, che è il vero esame.

2. Stesso scritto di sopra, a cui seguiranno, con un'ulteriore mezz'ora di tempo a disposizione, due domande di teoria, tratte dagli argomenti che doveste sapere all'orale. IMPORTANTE: questa modalità di esame (solo scritto e senza orale) vi potrà far prendere al massimo 20.

Testi di riferimento

M. Sipser, Introduction to the Theory of Computation, III edition. Engage Learning, 2012.

E' disponibile la traduzione in italiano: Introduzione alla teoria della computazione. Apogeo Edizioni.

Alcuni argomenti saranno tratti dal capitolo 9 di:

J.E. Hopcroft, J.D. Ullman: Introduction to Automata Theory, Languages and Computation. Addison Wesley, 1979.

Codice insegnamento 10595530

FUNCTIONAL PROGRAMMING 3° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali Apprendimento del paradigma di programmazione funzionale e di aspetti avanzati di programmazione imperativa. Studio comparato di diversi paradigmi di programmazione (imperativo, funzionale e a oggetti)…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Apprendimento del paradigma di programmazione funzionale e di aspetti avanzati di programmazione imperativa.
Studio comparato di diversi paradigmi di programmazione (imperativo, funzionale e a oggetti) per sviluppare un senso critico nell'apprendimento e nella valutazione dei linguaggi di programmazione.
Obiettivi specifici Conoscenza e Comprensione Aspetti avanzati di programmazione C (in particolare uso di puntatori espliciti e (de)allocazione dinamica della memoria, valutazione della complessità concreta dei programmi).
Aspetti base e avanzati di programmazione funzionale in Haskell (in particolare tipi polimorfi, funzionali di ordine superiore, laziness).
Applicare Conoscenza e Comprensione Applicare le metodologie specifiche di diversi paradigmi di programmazione alla soluzione dei problemi.
Capacità Critiche e di Giudizio Lo studio comparato dei paradigmi di programmazione permette di valutare, ad esempio, quale sia il linguaggio più adatto per risolvere un certo problema o sviluppare un progetto software.
Le tecniche di ragionamento sui programmi possono guidare sia il testing sia lo sviluppo dei programmi.
Inoltre, lo studente dovrebbe acquisire gli strumenti necessari per valutare criticamente altri linguaggi di programmazione.
Capacità Comunicative Lo studente è stimolato, soprattutto nella presentazione da fare a fine corso, a esporre concisamente ma in modo preciso le idee necessarie allo sviluppo di una brillante soluzione a un problema computazionale e anche l'analisi di un programma.
Capacità di Apprendimento Lo studio comparato di diversi paradigmi di programmazione stimola la capacità di apprendimento di altri linguaggi di programmazione, fornendo allo studente gli strumenti per distinguere gli aspetti caratterizzanti di un linguaggio di programmazione (logica del core language, come ad esempio passaggio di parametri, sistema dei tipi, semantica dei comandi) da quelli più strettamente tecnici (come imparare a usare librerie e strumenti di sviluppo, quali IDE e debugger).

Codice insegnamento 10620673

HUMAN COMPUTER INTERACTION 3° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Al termine del corso gli studenti conoscono le teorie, i modelli e le regole che guidano il progetto e lo sviluppo e la validazione di interfacce e sistemi interattivi usabili. Gli studenti che…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:
Al termine del corso gli studenti conoscono le teorie, i modelli e le regole che guidano il progetto e lo sviluppo e la validazione di interfacce e sistemi interattivi usabili. Gli studenti che superano l’esame sono in grado di progettare sistemi interattivi seguendo i criteri dell’interazione uomo-computer, analizzando il ruolo dell’utente, gli scenari e i compiti principali, e tenendo in considerazione i vincoli implementativi mediante cicli di progetto e sviluppo molto brevi.
Obiettivi specifici:
Conoscenza e comprensione: Al termine del corso gli studenti conoscono le teorie, i modelli e le regole che guidano il progetto di interfacce e sistemi interattivi usabili.​ Conoscono inoltre i principi di progettazione agile centrata sull'utente.​
Applicare conoscenza e comprensione: ​Gli studenti applicano le conoscenze acquisite nella progettazione di un'interfaccia come lavoro di gruppo per l'esame.
Capacità critiche e di giudizio: ​Gli studenti, anche attraverso esercitazioni pratiche, acquisiscono competenze nella valutazione e validazione di interfacce uomo computer e ​sviluppano capacità di giudizio sull'usabilità di un'interfaccia e quindi sulle ricadute dell'uso dell'interfaccia in termini di efficacia, efficienza e soddisfazione.
Capacità comunicative: ​Gli studenti sostengono due presentazioni del loro lavoro di gruppo in occasione delle due revisioni previste con il docente. La prima revisione è svolta in aula e la presentazione è pertanto rivolta a tutti i colleghi al fine di esercitare le capacità comunicative.​
Capacità di apprendimento: ​La capacità di apprendimento​ è stimolata attraverso 1) attività di progettazione guidata e autonoma con supervisione; 2) l'esposizione a problemi realistici di progettazione stimolando la ricerca autonoma di soluzioni non standard; 3) la presentazione di casi reali e stimolandone la discussione critica.

Programma

Il corso tratta:

  • i modelli e le teorie alla base dell’interazione uomo-computer, e in particolare i modelli cognitivi, i modelli di comunicazione e collaborazione, l’analisi del compito, la notazione e il progetto del dialogo, la modellazione del sistema, i modelli per l’interazione avanzata, gli aspetti sociali e collaborativi;
  • l’integrazione dell’HCI nel ciclo di sviluppo del software, e in particolare lo user centred design, il processo di sviluppo iterativo, gli scenari, le tecniche di valutazione, l’integrazione con la programmazione agile.

Elenco degli argomenti:

need finding

interviste e questionari

storyboard

tecniche expert-based di valutazione delle interfacce

tecniche user-based di valutazione delle interfacce

prototipi cartacei

processo di sviluppo di un’interfaccia

progettazione agile centrata sull’utente

cicli iterativi di interaction design, sviluppo del software e valutazione

interazione con sistemi mobili

criteri di progettazione di interfacce in ambiente iOS

criteri di progettazione di interfacce in ambiente Android

assegnazione e discussione dei temi dei progetti d’esame

  • .
  • Testi di riferimento: .

Modalità d'esame

L’esame è costituito da due componenti: la valutazione del progetto e una prova orale individuale.

Valutazione del progetto

Il progetto è svolto in gruppo e viene valutato sulla base del materiale consegnato e delle due discussioni svolte durante le revisioni del progetto.

La valutazione del progetto è uguale per tutti i membri del gruppo, salvo nei casi in cui, durante le revisioni, emerga chiaramente che uno o più studenti non abbiano partecipato al lavoro con un impegno comparabile a quello degli altri membri del gruppo.

La valutazione del progetto produce una fascia di voti che costituisce la base per il voto finale, secondo la seguente scala:

A: 27–30

B: 25–28

C: 23–26

D: 21–24

E: 18–21

Prova orale

La prova orale è individuale e consiste in due domande sugli argomenti trattati a lezione.

Ogni domanda può attribuire fino a 2 punti, che si sommano alla base di voto del progetto, meno 1 punto.

Ad esempio, uno studente che abbia ottenuto B al progetto e 2 punti per ciascuna domanda ottiene: 25 − 1 + 4 = 28

Gli studenti che totalizzano meno di 1 punto complessivamente nelle due domande non superano la prova orale e devono sostenerla nuovamente in un appello successivo, oppure entro un anno per non perdere la validità del voto del progetto.

I membri di uno stesso gruppo non sono obbligati a sostenere la prova orale nello stesso appello.

Criteri generali di valutazione

La valutazione complessiva tiene conto:

  • della qualità del progetto di interazione sviluppato,
  • della capacità di applicare i principi dell’Human–Computer Interaction,
  • della comprensione degli argomenti trattati a lezione,
  • della capacità di discutere e motivare le scelte progettuali durante la prova orale.

Per ottenere 30/30, lo studente deve dimostrare una conoscenza completa degli argomenti trattati nel corso, la capacità di applicare correttamente i principi dell’Human–Computer Interaction nel progetto e di discutere in modo chiaro e consapevole le scelte progettuali.

La lode può essere attribuita agli studenti che dimostrano una padronanza eccellente degli argomenti, capacità di analisi critica e particolare autonomia nella progettazione e valutazione di sistemi interattivi.

Coerenza tra risultati di apprendimento e modalità di verifica

Le modalità di valutazione sono progettate per verificare il raggiungimento dei risultati di apprendimento attesi. In particolare, il progetto valuta la capacità dello studente di analizzare utenti e scenari d’uso, progettare e valutare sistemi interattivi applicando i principi dell’Human-Computer Interaction, mentre la prova orale verifica la comprensione delle teorie, dei modelli e dei principi dell’HCI, nonché la capacità di discutere e motivare le scelte progettuali.

Testi di riferimento

  • Alan Dix – Janet Finlay – Gregory Abowd – Russell Beale “HUMAN-COMPUTER INTERACTION”, 3a edizione, http://dl.acm.org/citation.cfm?id=1203012. E’ disponibile anche in traduzione italiana: http://www.catalogo.mcgraw-hill.it/catLibro.asp?item_id=1746
  • Apple Human Interface Guidelines, disponibili come iBook (https://itunes.apple.com/us/book/ios-human-interface-guidelines/id877942287?mt=11) o online: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/index.html
  • Introduction – Material Design – Google design guidelines (disponibile su web http://www.google.com/design/spec/material-design/introduction.html)

Codice insegnamento 10595535

INTELLIGENT SYSTEM DESIGN METHODS 3° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Obiettivi generali: Il corso si propone di fornire agli studenti gli strumenti di base per la modellazione, analisi e progettazione di sistemi intelligenti. Obiettivi specifici: Il corso si propone di…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Obiettivi generali: Il corso si propone di fornire agli studenti gli strumenti di base per la modellazione, analisi e progettazione di sistemi intelligenti.
Obiettivi specifici: Il corso si propone di mettere gli studenti in grado di comprendere ed usare un'ampia gamma di tecniche di modellazione, progettazione, verifica e validazione per sistemi intelligenti.
Conoscenza e comprensione: Introduzione ad ampio spettro dei principi fondamentali della modellazione, analisi e progettazione dei sistemi intelligenti modellati come sistemi dinamici sia tempo continuo che tempo discreto.
Applicazione di conoscenza e comprensione: Saper applicare il portafoglio di tecniche e gli approcci illustrati per la modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Autonomia di giudizio: Gli studenti saranno in grado di prendere autonomamente decisioni razionali sulle tecniche da impiegare nella modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Abilità comunicative: Gli studenti saranno in grado di interagire in modo proficuo con esperti di dominio su un'ampia gamma di argomenti relativi alla modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Capacità di apprendimento: Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità, la letteratura scientifica di rilievo.

Codice insegnamento 10620674

INTERNSHIP 3° anno · 2° semestre · 15 CFU · 0 file

Il tirocinio formativo è svolto sotto la guida di un responsabile e può essere esterno (svolto presso aziende o enti esterni) o interno (svolto nell'ambito del corso di laurea). In entrambi i casi il tirocinio ha una…

Scheda dell'insegnamento

Obiettivi formativi

Il tirocinio formativo è svolto sotto la guida di un responsabile e può essere esterno (svolto presso aziende o enti esterni) o interno (svolto nell'ambito del corso di laurea). In entrambi i casi il tirocinio ha una durata di circa tre mesi e prevede che allo studente sia proposto un problema del mondo reale, da risolvere attraverso l'elaborazione di un progetto sviluppato con un approccio professionale.

Codice insegnamento AAF2604

LAW AND COMPUTER SCIENCE 3° anno · 2° semestre · 6 CFU · GIUR-17/A · 0 file

Obiettivi L’obiettivo del corso è quello di approfondire i principali temi di regolazione giuridica delle attività informatiche nelle imprese e nella pubblica amministrazione, con riferimento ai temi dell’intelligenza…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi L’obiettivo del corso è quello di approfondire i principali temi di regolazione giuridica delle attività informatiche nelle imprese e nella pubblica amministrazione, con riferimento ai temi dell’intelligenza artificiale, della regolamentazione europea sull’elaborazione e sul trattamento dei dati personali e sul commercio elettronico e sulla proprietà intellettuale in materia informatica. Si presenteranno anche gli strumenti giuridici, i protocolli e gli standard della cooperazione europea nell’uso dell’intelligenza artificiale. Il corso è strutturato in moduli di approfondimento, anche con esame di casi pratici.
Conoscenza e comprensione Al termine del corso lo studente è in grado di identificare e sviluppare le principali conoscenze giuridiche in materia di elaborazione dei dati e intelligenza artificiale e quindi di operare efficacemente nell'ambito delle amministrazioni pubbliche. Inoltre è in grado di partecipare efficacemente a gruppi di lavoro sull'uso dell'intelligenza artificiale, avendo chiare le indispensabili nozioni e responsabilità giuridiche. Il corso consente di raccordare competenze tecnologiche informatiche e competenze organizzative, economiche e giuridiche riguardanti l’uso dell’informatica e dell’AI o di strumenti informatici e di AI in ambito aziendale e pubblico.
Capacità di applicare conoscenza e comprensione Per la realizzazione degli obiettivi formativi le attività didattiche si articolano in moduli di approfondimento tematico, per la definizione e l’intervento in specifici contesti e per la comprensione delle esigenze degli operatori.

Codice insegnamento 10595537

MULTICORE PROGRAMMING 3° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi: Il corso è finalizzato all'acquisizione della conoscenza di tecniche algoritmiche e di programmazione adatte alle moderne piattaforme di calcolo multicore, GPU e multi-GPU, introducendo i principi di…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi: Il corso è finalizzato all'acquisizione della conoscenza di tecniche algoritmiche e di programmazione adatte alle moderne piattaforme di calcolo multicore, GPU e multi-GPU, introducendo i principi di base nella progettazione di software parallelo.
Conoscenza e capacità di comprensione: Al termine del corso gli studenti avranno una profonda comprensione dei principali problemi di programmazione posti dai sistemi multicore, GPU e multi-GPU, delle tecniche per scrivere codice efficiente e scalabile, della programmazione a basso livello e della progettazione di applicazioni parallele.
Capacità di applicare conoscenza e comprensione: Gli studenti saranno in grado di progettare, programmare e ottimizzare applicazioni parallele su piattaforme multicore e GPU, incluse architetture multi-GPU, e avranno una comprensione delle principali tecniche di parallelismo.
Autonomia di giudizio: Gli studenti saranno in grado di affrontare le sfide che si presentano nella progettazione di applicazioni parallele su sistemi multicore e GPU, sviluppando programmi efficienti e scalabili anche tenendo conto delle caratteristiche architetturali delle diverse piattaforme di calcolo.
Abilità comunicative: Gli studenti saranno in grado di comunicare in modo efficace, riassumendo le idee principali nella progettazione di software per sistemi multicore e GPU, presentando in modo chiaro informazioni tecniche e soluzioni algoritmiche.
Capacità di apprendimento: Gli studenti saranno in grado di estendere la loro conoscenza in modo indipendente, adattandola all’evoluzione delle tecnologie e delle architetture per il calcolo ad alte prestazioni.

Codice insegnamento 10620671

OPTIMIZATION 3° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Il corso introduce lo studente alla modellazione matematica di problemi di ottimizzazione, allo studio della programmazione lineare e intera e alle loro applicazioni in contesti reali. Obiettivi…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso introduce lo studente alla modellazione matematica di problemi di ottimizzazione, allo studio della programmazione lineare e intera e alle loro applicazioni in contesti reali.
Obiettivi specifici: Apprendere: 1. Le principali tecniche di modellazione di problemi usando strumenti logico/matematici; 2. Le proprietà teoriche e sulle applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti); 3. sulla programmazione lineare e sue applicazioni; 4. sull’uso di software di modellazione ed ottimizzazione.
Conoscenza e comprensione: Sviluppare 1. Capacità di sintesi, di ragionamento logico e di problem solving, mediante tecniche quantitative; 2. capacità di formulare e risolvere (anche in maniera approssimata) problemi computazionalmente difficili; 3. capacità di usare bibliografia e software in inglese; 4. capacità di identificare problemi di programmazione matematica e ottimizzazione; 5. capacità di realizzare un modello di un problema matematico, determinando se è lineare, intero, non lineare, di trovare soluzioni per il modello usando gli algoritmi appropriati, di interpretare la soluzione;
Applicazione di conoscenza e comprensione: 1. Applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti); 2. uso di software di modellazione ed ottimizzazione.
Autonomia di giudizio: Viene rafforzata la autonomia di giudizio dello studente attraverso l'approfondimento della capacità di sintesi, di ragionamento logico-matematico e di problem solving, mediante tecniche quantitative;
Abilità comunicative: Il corso sviluppa le abilità comunicative degli studenti attraverso lavoro in equipe degli studenti finalizzato a simulare la risoluzione di problemi di ottimizzazione che si possono presentare nel contesto reale di un azienda di logistica.
Capacità di apprendimento Le capacità acquisite nel corso sono di utilità in insegnamenti di livello superiore su temi avanzati nella teoria della complessità, di algoritmi di rete e di teoria dei grafi.

Codice insegnamento 10595533

PROGRAMMING LANGUAGES 3° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali Il corso illustra i fondamenti dei linguaggi di programmazione. Particolare attenzione è dedicata alla semantica statica e dinamica dei linguaggi (teoria dei tipi, semantica operazionale e assiomatica)…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Il corso illustra i fondamenti dei linguaggi di programmazione. Particolare attenzione è dedicata alla semantica statica e dinamica dei linguaggi (teoria dei tipi, semantica operazionale e assiomatica) e agli strumenti formali per la specifica e la verifica del software.
Obiettivi specifici Approfondimento delle algebre induttive come fondamento della sintassi astratta, delle strutture dati e di semplici logiche equazionali per i programmi. Cenni alla coinduzione come fondamento dell'analisi di processi concorrenti e di strutture lazy. Confronto tra linguaggi lazy ed eager, statici e dinamici, nel contesto dei principali paradigmi di programmazione: imperativo, funzionale e orientato agli oggetti. Studio della teoria dei tipi, con particolare attenzione al polimorfismo parametrico (come in ML) e al polimorfismo di sottoclasse (come in Java).
Conoscenze e comprensione Al termine del corso lo studente avrà acquisito conoscenze fondazionali relative ai linguaggi di programmazione e ai principali paradigmi di programmazione. Sarà inoltre in grado di collocare in una mappa concettuale coerente alcune fra le principali aree dell'informatica teorica, comprendendone le interconnessioni.
Applicazione di conoscenza e comprensione Al termine del corso lo studente sarà in grado di orientarsi tra i diversi paradigmi della programmazione, con particolare attenzione alla programmazione funzionale. Avrà acquisito una conoscenza di base del linguaggio funzionale SML, della sua teoria dei tipi e dell'impiego dei metodi formali.
Capacità di giudizio Gli studenti acquisiranno gli strumenti culturali necessari per sviluppare software di qualità e per comprendere e inquadrare criticamente le tendenze emergenti dei linguaggi di programmazione moderni.
Capacità di comunicazione Gli studenti impareranno a utilizzare il linguaggio della matematica e della logica per descrivere, sviluppare e analizzare il software, integrando l'approccio formale con una presentazione intuitiva delle idee.
Capacità di apprendimento L'impiego di strumenti matematici nella teoria e nella pratica della programmazione favorirà lo sviluppo delle capacità logiche e della consapevolezza della complessità dei problemi affrontati.
Questa versione mantiene i contenuti originali ma adotta uno stile più fluido, uniforme e adatto a una scheda d'insegnamento universitaria.

Codice insegnamento 10620672

WEB AND SOFTWARE ARCHITECTURE 3° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Lo scopo del corso è lo studio del linguaggio java lato server, per la realizzazione di applicazioni web. Il corso fornisce inoltre un’analisi critica di diverse soluzioni implementative di molte…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Lo scopo del corso è lo studio del linguaggio java lato server, per la realizzazione di applicazioni web. Il corso fornisce inoltre un’analisi critica di diverse soluzioni implementative di molte funzionalità applicative comuni nello sviluppo di applicazioni web.
Obiettivi specifici: Programmazione lato server mediante Java Servlet e pagine JSP.
Conoscenza e comprensione: Il corso permetterà la comprensione del supporto fornito dal linguaggio Java alla realizzazione di applicazioni web. In particolare lo studente studierà le motivazioni alla base di tutte le scelte implementative, in particolare facendo riferimento alle architetture client-server e ai protocolli di rete in uso.
Applicare conoscenza e comprensione: Attraverso il corso lo studente imparerà a riconoscere tra le possibili soluzioni applicative ad un problema, quale offra i maggiori vantaggi in termini di prestazioni, sicurezza, portabilità e efficienza.
Capacità critiche e di giudizio: Il corso metterà lo studente in condizione di saper scegliere, dato un problema, la migliore metodologia risolutiva, attraverso la profonda comprensione dei requisiti e dei vincoli imposti dall'architettura.
Capacità comunicative: Lo studente sarà in grado di motivare le proprie scelte nella proposta di uno specifico approccio realizzativo di un’applicazione Web, e fornire una analisi comparativa dell’approccio scelto con altri approcci possibili.
Capacità di apprendimento: Lo studente svilupperà capacità di studio autonome e di comprensione e valutazione critica di nuove metodologie, tecnologie e modelli di sviluppo di applicazioni Web.

Codice insegnamento 10595534

Recensioni del corso

Studi qui? Accedi per lasciare la tua recensione e aiutare altri studenti a scegliere.

★

Nessuna recensione per ora — e la prima è la più preziosa. Condividi la tua esperienza e orienta le future matricole.