Metodi computazionali della fisica

A.A. 2016/2017
Insegnamento per
6
Crediti massimi
66
Ore totali
Lingua
Italiano
Obiettivi formativi
Laboratorio di Fisica Computazionale

obiettivi del corso sono:
-imparare a utilizzare il programma Mathematica per:
1) eseguire calcoli di base di analisi matematica e di algebra lineare;
2) rappresentare graficamente il risultato dei propri calcoli;
3) eseguire manipolazioni simboliche elementari

-imparare a impostare la scrittura di un programma in C++:
utilizzando le proprieta' di ereditarieta' e di polimorfismo,
controllando l'utilizzo della memoria per gestire l'accesso ai diversi
tipi di dati

-imparare le nozioni di base di programmazione della bash shell

---------------------
Metodi Computazionali della Fisica

sviluppo di un progetto originale, realizzando tutte le parti necessarie
del programma (parti principali e librerie) in uno dei seguenti ambiti:

1) Mathematica:
-generazione di ampiezze di scattering tramite la tecnica dei diagrammi di
Feynman
-utilizzo di algoritmi genetici per la soluzione di problemi di
ottimizzazione

2) programmazione in CUDA:
-utilizzo di base delle schede grafiche NVIDIA per lo sviluppo di
programmi che eseguono calcoli distribuiti con alto livello di efficienza
-soluzione di problemi di algebra lineare, di integrazione numerica, di
dinamica dei fluidi, di problemi di clustering

3) calcolo stocastico applicato ai sistemi finanziari:
- elementi di finanza quantitativa
- sviluppo di metodi Montecarlo in C++, anche con scheda grafica, per la
simulazione e il relativo studio dell'andamento temporale di prodotti
finanziari

4) networks
- utilizzo avanzato della bash shell e delle tecniche di programmazione in
C++, rivolto alla caratterizzazione e allo studio dell'evoluzione di
networks, con esempi tratti dall'ambito biologico e da quello sociale

Struttura insegnamento e programma

Edizione attiva
Responsabile
Laboratori: 54 ore
Lezioni: 12 ore
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)
-Networks. (bash shell scripting/C++) Raccolata dati e loro elaborazione
per studiare e classificare le proprieta' di networks. Studio
dell'evoluzione temporale e della dinamica dei suddetti networks.
-CUDA Introduzione alla programmazione di schede grafiche NVIDIA e
sviluppo di algoritmi parallelizzati, adatti al funzionamento su
queste schede.
-Teoria dei giochi in C++. Sviluppo in C++ di un programma in grado di
far giocare due utenti a tris e a dama (inclusa l'interfaccia grafica).
Sviluppo di un algoritmo che permetta a un utente di giocare
contro il computer a tris e a dama. Possibilita' di sfide tra computer.
Prerequisiti e modalità di esame
PREREQUISITI
Auspicabile qualche conoscenza di linguaggio di programmazione in C.

MODALITA' D'ESAME
L'esame consiste in una discussione orale che verte sugli argomenti trattati nel corso.
Metodi didattici
Modalità di frequenza:
Fortemente consigliata;
Modalità di erogazione:
Tradizionale.
Periodo
Secondo semestre