Metodi computazionali della fisica

A.A. 2019/2020
6
Crediti massimi
62
Ore totali
SSD
FIS/02
Lingua
Italiano
Obiettivi formativi
Il corso fornisce un'introduzione ai metodi computazionali avanzati utilizzati attualmente in Fisica.
L'utilizzo di linguaggi moderni (Mathematica, CUDA, C++, Python) permette di affrontare problematiche computazionali di attualità, sviluppando da zero un progetto. Viene sviluppato un codice la cui esecuzione permette di risolvere le richieste del problema in esame, numeriche o simboliche.
Risultati apprendimento attesi
Alla fine del corso lo studente:
1) saprà utilizzare le funzionalità avanzate di uno o più linguaggi moderni di programmazione;
2) saprà strutturare il flusso logico necessario per impostare la scrittura di un programma per computer articolato;
3) saprà stimare la validità dei risultati ottenuti;
4) saprà presentare i risultati e discutere le peculiarità dei metodi adottati.
Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre
Programma
Sviluppo di un progetto, utilizzando tecniche avanzate di programmazione,
in uno dei seguenti ambiti.
-Mathematica. Realizzazione da zero di un package che sfrutti le
possibilita' di manipolazione a livello simbolico
(p.es. generazione di grafi e di ampiezze di scattering secondo la
tecnica dei diagrammi di Feynman, oppure
implementazione di un algoritmo genetico per l'ottimizzazione di
problemi complessi come la scrittura automatica di programmi,
la creazione di un sistema esperto in grado di giocare al
"dilemma del prigioniero", l'allenamento di una rete neurale)
-CUDA. Introduzione alla programmazione di schede grafiche NVIDIA e
sviluppo di algoritmi parallelizzati, adatti al funzionamento su
queste schede
-Block-chain. Introduzione alle tecniche crittografiche di block-chain. Sviluppo di un ambiente che permetta la formulazione di smart-contracts. Applicazione di queste metodologie a problemi reali.
-Finanza quantitativa. Realizzazione di una libreria in C++ che permetta la simulazione dell'andamento temporale di prodotti finanziari e la valutazione della convenienza dei rispettivi contratti. I programmi di simulazione utilizzano anche schede grafiche NVIDIA.
Prerequisiti
Conoscenza di base di almeno un linguaggio di programmazione (C/C++/Fortran).
Capacità di base di analizzare un problema in termini algoritmici.
Metodi didattici
Il corso è organizzato in tre parti.
La prima parte prevede una serie di lezioni introduttive su alcuni linguaggi e metodi moderni di programmazione. Le lezioni hanno carattere generale e sono utili per affrontare i diversi problemi che possono presentarsi nello sviluppo dei progetti finali. Queste lezioni prevedono che tutti gli studenti abbiano un computer a disposizione per riprodurre immediatamente gli esempi proposti sullo schermo principale.
Nella seconda parte, gli studenti si dividono in gruppi, scegliendo di approfondire un particolare linguaggio di programmazione. I gruppi procedono in parallelo.
In ciascun gruppo vengono trattati, in una seconda serie di lezioni, argomenti specifici del linguaggio e/o della modalità di programmazione che si intendono applicare nello sviluppo del progetto.
Nella terza parte del corso vengono proposti i problemi che gli studenti potranno sviluppare in forma di progetto. Ogni studente inizia individualmente lo sviluppo del codice di computer necessario per risolvere il problema scelto, con l'assistenza del docente. Negli incontri successivi, la pianificazione del codice, il suo sviluppo, la soluzione di eventuali problemi di programmazione o di logica del programma vengono affrontati e risolti con il docente.
Il risultato finale è un codice o una libreria di routines, il cui utilizzo permette di calcolare i risultati, numerici o simbolici, che verranno presentati nella relazione finale.
Modalità di verifica dell’apprendimento e criteri di valutazione
Durante il corso verranno proposti diversi argomenti di approfondimento.
Ciascuno studente dovrà scegliere uno di questi temi e svilupparlo nella forma di un progetto.
L'esame consisterà nella presentazione di una relazione scritta e nella sua discussione orale alla lavagna. La relazione deve descrivere la problematica affrontata, la metodologia di calcolo e/o simulazione adottata, i risultati ottenuti e la loro affidabilità, le prospettive di estensione dell'approccio adottato a problemi di maggiore complessità, nello stesso ambito computazionale.
La valutazione finale si basa su diversi fattori:
la completezza dello svolgimento del progetto assegnato dal docente, nelle sue parti obbligatorie e facoltative;
il rigore metodologico con cui i risultati presentati sono stati verificati;
la chiarezza espositiva nella presentazione della relazione.
FIS/02 - FISICA TEORICA, MODELLI E METODI MATEMATICI - CFU: 6
Laboratori: 48 ore
Lezioni: 14 ore
Docente/i
Ricevimento:
Tutti i giorni, dopo le 14.30
DC-1-5