Search results: 13

Nella vita di tutti i giorni è inevitabile avvalersi inconsapevolmente di strumenti e tecnologie messi a punto con metodi numerici. Un esempio per tutti è dato dal motore di ricerca di Google! I link restituiti in seguito ad una query sono ordinati in accordo con le componenti più grandi dell'autovettore associato all'autovalore dominante di una matrice di dimensioni enormi (circa 20 miliardi per 20 miliardi), dove ogni riga rappresenta una delle pagine web.
Le scienze computazionali si collocano all'incrocio tra la teoria e la sperimentazione. E' evidente, ad esempio, che non è possibile eseguire in loco un esperimento sulla fisica del sole, così come può risultare estremamente difficile e costosa la realizzazione di un esperimento di fusione nucleare. D'altra parte non sempre la sola teoria permette di raggiungere conclusioni soddisfacenti. Le scienze computazionali si pongono come obiettivo il superamento di questa difficoltà: permettono infatti di simulare scenari anche complessi che si basano sulla teoria e che possono essere validati dalla sperimentazione ma che sono fuori dalla portata di entrambi.
Il funzionamento di un telefono cellulare, il design di un'auto o di un aeroplano, la progettazione di infrastrutture stadali e ferroviarie, le previsioni del tempo sono solo alcuni problemi che si affrontano usando metodi numerici. La realizzazione di film, video giochi e console come xbox o wii si basa anche sull'efficienza di metodi numerici. Senza i metodi numerici alcune di queste applicazioni non avrebbero potuto essere sviluppate. Potremmo avere ancora ponti, strade, e infrastrutture complesse, ma se se si fosse dedicata più attenzione agli aspetti numerici dei modelli utilizzati disastri come quello famoso del ponte Tacoma Narrows (USA, stato di Washington) (https://www.youtube.com/watch?v=3mclp9QmCGs), o eventi critici passati alla storia come quelli elencati in http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html
si sarebbero potuti evitare.
Per un informatico una buona conoscenza delle tecniche computazionali e' un requisito culturale fondamentale.
L'obiettivo di questo corso e' quello di rendere familiari gli studenti con le tecniche numeriche per l'approssimazione delle soluzioni di sistemi di equazioni lineari e non lineari, per l'interpolazione di dati e l'integrazione approssimata, che sono gli strumenti di base per la risoluzione numerica di molti problemi del mondo reale.
Contenuti
Rappresentazione dei numeri reali e analisi dell'errore numerico: errori di arrotondamento, aritmetica di macchina e propagazione degli errori.
Condizionamento di un problema e complessità computazionale di un algoritmo numerico.
Metodi iterativi per le equazioni non lineari: i principali metodi e lo studio della loro convergenza.
Metodi numerici per l'algebra lineare: i principali metodi diretti e iterativi per la risoluzione di sistemi lineari.
Interpolazione e integrazione numerica: il polinomio di interpolazione, le formule di quadratura interpolatorie.
- Teacher: GIANNA MARIA DEL CORSO

Nella vita di tutti i giorni è inevitabile avvalersi inconsapevolmente
di strumenti e tecnologie messi a punto con metodi numerici. Un esempio
per tutti è dato dal motore di ricerca di Google! I link restituiti in
seguito ad una query sono ordinati in accordo con le componenti più
grandi dell'autovettore associato all'autovalore dominante di una
matrice di dimensioni enormi (circa 20 miliardi per 20 miliardi), dove
ogni riga rappresenta una delle pagine web.
Le scienze
computazionali si collocano all'incrocio tra la teoria e la
sperimentazione. E' evidente, ad esempio, che non è possibile eseguire
in loco un esperimento sulla fisica del sole, così come può risultare
estremamente difficile e costosa la realizzazione di un esperimento di
fusione nucleare. D'altra parte non sempre la sola teoria permette di
raggiungere conclusioni soddisfacenti. Le scienze computazionali si
pongono come obiettivo il superamento di questa difficoltà: permettono
infatti di simulare scenari anche complessi che si basano sulla teoria e
che possono essere validati dalla sperimentazione ma che sono fuori
dalla portata di entrambi.
Il funzionamento di un telefono
cellulare, il design di un'auto o di un aeroplano, la progettazione di
infrastrutture stadali e ferroviarie, le previsioni del tempo sono solo
alcuni problemi che si affrontano usando metodi numerici. La
realizzazione di film, video giochi e console come xbox o wii si basa
anche sull'efficienza di metodi numerici. Senza i metodi numerici alcune
di queste applicazioni non avrebbero potuto essere sviluppate. Potremmo
avere ancora ponti, strade, e infrastrutture complesse, ma se se si
fosse dedicata più attenzione agli aspetti numerici dei modelli
utilizzati disastri come quello famoso del ponte Tacoma Narrows (USA,
stato di Washington) (https://www.youtube.com/watch?v=3mclp9QmCGs), o
eventi critici passati alla storia come quelli elencati in
http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html
si sarebbero potuti evitare.
Per un informatico una buona conoscenza delle tecniche computazionali e' un requisito culturale fondamentale.
L'obiettivo
di questo corso e' quello di rendere familiari gli studenti con le
tecniche numeriche per l'approssimazione delle soluzioni di sistemi di
equazioni lineari e non lineari, per l'interpolazione di dati e
l'integrazione approssimata, che sono gli strumenti di base per la
risoluzione numerica di molti problemi del mondo reale.
Contenuti
Rappresentazione dei numeri reali e analisi dell'errore numerico: errori
di arrotondamento, aritmetica di macchina e propagazione degli errori.
Condizionamento di un problema e complessità computazionale di un algoritmo numerico.
Metodi iterativi per le equazioni non lineari: i principali metodi e lo studio della loro convergenza.
Metodi numerici per l'algebra lineare: i principali metodi diretti e iterativi per la risoluzione di sistemi lineari.
Interpolazione e integrazione numerica: il polinomio di interpolazione, le formule di quadratura interpolatorie.
- Teacher: GIANNA MARIA DEL CORSO
- Junior Teacher: MATTEO CAPORALI

The course aims at providing the mathematical foundations for some of the main computational approaches to Learning, Data Analysis and Artificial Intelligence. These comprise techniques and methods for the numerical solution of systems of linear and nonlinear equations and related problems (e.g., computation of eigenvalues), as well as methods for the solution of constrained and unconstrained optimization problems. This requires the understanding of the connections between techniques of numerical analysis and optimization algorithms. The course focuses on presenting the main algorithmic approaches and the underlying mathematical concepts, with attention to the implementation aspects. Hence, use of typical mathematical environments (e.g., Matlab and Octave) and available solvers/libraries is discussed throughout the course.
- Teacher: ANTONIO FRANGIONI
- Teacher: FEDERICO GIOVANNI POLONI
The course deals with methods for the modeling, simulation and formal analysis of complex systems such as populations, biological systems, social networks, and so on.
Draft syllabus:
- Complex systems: basic concepts and the relationships between component interaction and population dynamics
- Modelling methodologies: rule-based notations (chemical reaction metapohor), differential equations, Petri nets and agent-based modelling
- Representation of system behavior: transition systems and probabilistic/stochastic models
- Analysis techniques: discrete event simulation, stochastic simulation, model checking and statistical model checking
- Applications: selected case studies from social sciences, life sciences (biology and biomedicine) and others
- Teacher: PAOLO MILAZZO
The course deals with methods for the modeling, simulation and formal analysis of complex systems such as populations, biological systems, social networks, and so on.
Draft syllabus:
- Complex systems: basic concepts and the relationships between component interaction and population dynamics
- Modelling methodologies: rule-based notations (chemical reaction metapohor), differential equations, Petri nets and agent-based modelling
- Representation of system behavior: transition systems and probabilistic/stochastic models
- Analysis techniques: discrete event simulation, stochastic simulation, model checking and statistical model checking
- Applications: selected case studies from social sciences, life sciences (biology and biomedicine) and others
- Teacher: PAOLO MILAZZO

The course teaches how to design
machine learning systems that are robust to domain shifts and able to
learn continuosly in the presence of ever-changing data. The course will
provide a characterization and overview of the several problems in this
area, including transfer learning, online learning, continual learning,
open set recognition, domain adaptation, meta learning.
- Teacher: ANTONIO CARTA
- Teacher: ANTONIO CARTA
- Teacher: FABRIZIO BAIARDI
IIA Codice: 586AA, ECTS: 6, Semestre: II
Docenti: Prof. Alessio Micheli, Dr. C. Gallicchio
- Teacher: CLAUDIO GALLICCHIO
- Teacher: ALESSIO MICHELI
- Teacher: LUIGI QUARANTIELLO
Laboratorio di Reti (corso B) - A.A. 2024/25
Crediti (ECTS): 3, Semestre: 1, Lingua ufficiale: Italiano
| Lecturer: | Damiano Di Francesco Maesa |
|---|---|
| Contatto: | damiano.difrancesco@unipi.it |
| Ufficio: | Stanza 333, Dipartimento di Informatica, Largo B. Pontecorvo 3, Pisa |
| Ricevimento: |
concordato su richiesta via mail. |
Lezioni
| Giorno | Ora | Aula |
|---|---|---|
| Venerdì | 16-18 | D3 |
Modalità d'esame
L'esame consiste in un progetto ed esame orale.
Partecipare alle lezioni non è obbligatorio ma consigliato. Ugulamente, completamento degli assignement settimanali non è obbligatorio ma consigliato.
- Teacher: DAMIANO DI FRANCESCO MAESA
The course will, through presentation of actual
working cases and project work, enable the student to produce and/or
appropriately use software tools for the support to complex decisions
(mainly at the corporate/industrial level), in particular those based on
mathematical optimization techniques. The course is focused on practical
aspects of these tools (modeling languages and systems, solvers and
interfaces, algorithmic parameters, ...) and has a strong project aspect
in order to familiarize the students, in particular, with the specific
computer science aspects of these activities. However, since these tools
are based on complex algorithmic schemes and rigorously defined
mathematical properties, it is at the same time necessary to provide the
students with appropriate consciousness of these foundational aspects,
in particular whenever this is necessary to better understand their use
or design more efficient and effective approaches; a particularly
relevant case is that of handling the issue of uncertainty in the data
of the problem.
- Teacher: ANTONIO FRANGIONI
- Teacher: DUY NIGHI BENOIT TRAN
The course will introduce the basic mathematical concepts necessary to
construct algorithms for the solution of optimization problems. The main
focus will be on "easy" (constrained or unconstrained, convex,
continuous) optimization problems, and their (local) solution
algorithms, relevant for applications in Data Science / Machine Learning
/ Artificial Intelligence, among others, with a view on providing to
the students solid methodological foundations useful for the several
subsequent courses in these areas. However, the course will also cover
some material related to "hard" (mixed-integer, nonconvex) optimization
problems, and their (global) solution algorithms, with a view of
providing the students with the concept of Prescriptive Analytics as
"the final step" of Data Science, and therefore a motivation for the
more advanced courses related to optimization.
- Teacher: ANTONIO FRANGIONI
Breve descrizione
Il corso di Paradigmi di Programmazione ha lo scopo di formare la capacità di apprendere facilmente nuovi linguaggi di programmazione. Per raggiungere tale obiettivo il corso fornirà agli studenti conoscenze approfondite sui principali paradigmi di programmazione (imperativo, funzionale, object-oriented e concorrente) illustrandone le caratteristiche principali sia a livello di costrutti di programmazione, sia a livello di supporto a tempo di esecuzione. Inoltre, all'interno del corso si analizzerà il ruolo dei sistemi di tipi e come i controlli a tempo di compilazione e/o di esecuzione impattino sulla qualità del codice e sui tempi di esecuzione. Infine, per favorire e allenare la capacità degli studenti a ragionare sui concetti in astratto, senza dover sempre ricorrere a un linguaggio di programmazione di riferimento, nella presentazione degli argomenti si prediligerà un approccio model-first, andando a introdurre le peculiarità dei vari paradigmi, quando possibile, prima sui modelli formali e poi sugli specifici linguaggi di programmazione. Tra i linguaggi che saranno trattati in modo più o meno approfondito nel corso (in ordine di prevalenza, alcuni solo per piccoli esempi): OCaml, Java, JavaScript, Python, C++ e altri.
Docente
Orario delle lezioni
L'orario delle lezioni è
- Lunedì 9:00-11:00 FIB D3
- Mercoledì 16:00-18:00 FIB D5
- Giovedì 4:00-16:00 FIB D5
Ulteriori dettagli sono disponibili qui
Materiale didattico
Il corso non prevede un testo di riferimento. Le slide e le dispense utilizzate saranno messe a disposizione in questa stessa pagina durante lo svolgimento del corso. Le lezioni saranno registrate, e le registrazioni saranno raggiungibili seguendo il link riportato qui sotto.
Libri di testo consigliati (per approfondimenti)
- Peter Sestoft, Programming Language Concepts
- Maurizio Gabrielli e Simone Martini, Linguaggi di programmazione
- Real World OCaml ( https://dev.realworldocaml.org/ )
Software utile
Per la parte del corso relativa alla programmazione funzionale si utilizzeranno dei Jupiter Notebook in linguaggio OCaml. Qui sotto sono disponibili i link a tali notebook su github e il link ad un container Docker contenente l'intero ambiente di esecuzione.
Esame
L'esame consisterà in una prova scritta e una prova orale. Non sono previste prove in itinere. Maggiori dettagli saranno forniti durante lo svolgimento del corso.
Programma
Paradigma di programmazione funzionale
- λ-calcolo
- Linguaggio OCaml (nucleo funzionale)
- Formalizzazione di un linguaggio funzionale
- Implementazione in OCaml di un interprete del linguaggio funzionale
- Sistemi di tipi nei linguaggi funzionali
Paradigma di programmazione object-oriented
- Astrazione dei dati e gli oggetti
- Modularità, incapsulamento, ereditarietà, principio di sostituzione,
- Linguaggi class-based vs object-based
- Formalizzazione di linguaggi object-oriented
- Sistemi di tipi nei linguaggi object-oriented
- Tecniche di implementazione di linguaggi class-based (ad es. Java Virtual Machine)
- Garbage collection
Paradigma di programmazione concorrente
- Concetti di base: esecuzione non sequenziale
- Formalizzazione di un modello di concorrenza
- Costrutti di programmazione concorrente nei linguaggi moderni
- Teacher: CHIARA BODEI