- Oggetto:
- Oggetto:
Tecniche di calcolo per la fisica
- Oggetto:
Applications of Computational techniques to Physics
- Oggetto:
Anno accademico 2025/2026
- Codice attività didattica
- MFN0575
- Docenti
- Livio Bianchi (Titolare del corso)
Roberto Covarelli (Titolare del corso) - Corso di studio
- 008703 Laurea in Fisica
- Anno
- 3° anno
- Periodo
- Primo semestre
- Tipologia
- C=Affine o integrativo
- Crediti/Valenza
- 6
- SSD attività didattica
- FIS/01 - fisica sperimentale
- Erogazione
- Tradizionale
- Lingua
- Italiano
- Frequenza
- Facoltativa
- Tipologia esame
- Prova pratica
- Tipologia unità didattica
- corso
- Prerequisiti
-
Conoscenze basilari di programmazione in:- C++ (corso MFN1317 - Introduzione alla Programmazione)
- Python (corso MFN1309 - Tecniche Informatiche per la Fisica)
Basic programming knowledge in:- C++ (course MFN1317 - Introduction to Programming)
- Python (course MFN1309 - Computing Techniques for Physics) - Propedeutico a
-
- Oggetto:
Sommario insegnamento
- Oggetto:
Obiettivi formativi
Obiettivo del corso e’ quello di fornire allo studente di Fisica le conoscenze necessarie alla risoluzione di un problema fisico (analisi dati, calcolo numerico) attraverso l’implementazione di codice in linguaggi di programmazione orientati agli oggetti (C++ e Python). L’obiettivo formativo e’ quindi duplice: da un lato lo studente acquisisce tecniche utili alla prosecuzione del proprio percorso accademico (successivi corsi di laboratorio, svolgimento lavoro di tesi, ecc.), dall’altro riceve competenze professionalizzanti per potenziali carriere fuori dell’accademia nei settori di data analysis e software engineering. Nell’applicare la programmazione verranno sfruttati pacchetti di software open-source come NumPy, Pandas, MatPlotLib e ROOT.
The educational goal is to train Physics students to solve physics problems (data analysis, numerical calculus) through the implementation of object-oriented based software in C++ and Python languages. The goal is twofold. On the one hand, students develop skills which are important for the academic career (further laboratory courses, thesis work, etc.), while on the other hand they receive professional competences in data analysis and software engineering which are an important asset for potential careers out of academia. In dealing with data analysis, widely-used open-source software packages will be exploited, such as Pandas, NumPy, MatPlotLib and ROOT.
- Oggetto:
Risultati dell'apprendimento attesi
Conoscenza e capacita' di comprensione:
Conoscenza e comprensione della sintassi dei linguaggi C++ e Python e dei principi della programmazione Object Oriented.
Capacita' di applicare conoscenza e comprensione:
Capacità di utilizzare la conoscenza della sintassi del C++ e del python nella scrittura di programmi volti a risolvere classici problemi di fisica e di analisi dati, sfruttando un approccio Object-Oriented.
Knowledge and understanding:
Knowledge and understanding of the syntax of the C++ and Python languages and the principles of Object Oriented programming.
Skills to apply knowledge and understanding:
Ability to use knowledge of C++ and Python syntax in writing programs aimed at solving classic physics and data analysis problems, using an Object-Oriented approach.
- Oggetto:
Programma
- C++
- Programmazione in Python base e avanzata
- Classi, ereditarieta’, polimorfismo
- La Standard Template Library
- Applicazioni delle librerie ROOT per c++ nella soluzione di problemi di fisica
- Python
- Installazione e configurazione dell'ambiente di sviluppo (Jupyter Notebook).
- Programmazione di base (in parte solo ripasso):
- Sintassi di base: variabili (numeri, stringhe) e sequenze (liste, tuple, dizionari, insiemi)
- Operatori aritmetici, logici e di confronto. Dichiarazioni condizionali e cicli (for, while).
- Funzioni: definizione e chiamata di funzioni, parametri e valori di ritorno. Funzioni lambda.
- Gestione degli errori: utilizzo delle eccezioni e sollevamento di eccezioni personalizzate.
- File I/O: Lettura, scrittura e gestione di file di testo.
- Moduli e Pacchetti: importazione e utilizzo di moduli standard e di terze parti.
- Programmazione avanzata:
- Funzioni generatrici.
- Liste e dizionari annidati. Autodefinizione di liste, dizionari, insiemi.
- Programmazione Orientata agli Oggetti (OOP):
- Creazione e utilizzo di classi e oggetti. Ereditarietà, polimorfismo, e incapsulamento. Metodi speciali (come __init__, __str__)
- Decoratori
- Manipolazione dei dati con Pandas e NumPy. Operazioni su DataFrame.
- Analisi e visualizzazione dei dati con librerie come Matplotlib.
- Applicazioni in fisica e PyROOT
- Notazione scientifica e troncamento delle incertezze.
- Selezione e visualizzazione di immagini con MatPlotLib.
- Metodi di integrazione numerica e risoluzione numerica di equazioni differenziali.
- Istogrammi e grafici. Animazioni semplici.
- File ROOT. Utilizzo e visualizzazione di TTree e TBranches.
- Analisi di serie temporali. Fit e test di ipotesi semplici.
- Template fitting. Fit più complessi. Grafica in ROOT.
- Cenni a applicazioni di machine learning (TMVA).
- C++
- Basic and advanced C++ programming
- Classes, inheritance, polymorphism
- The Standard Template Library
- Applications of the ROOT libraries for c++ in solving physics problems
- Python
- Installation and configuration of the development environment (Jupyter Notebook).
- Basic Programming (partly just a review):
- Basic syntax: variables and types (numbers, strings) sequences (lists, tuples, dictionaries, sets)
- Arithmetic, logical and comparison operators, conditional statements and loops (for, while).
- Functions: defining and calling functions, parameters and return values. Lambda functions.
- Error handling: using exceptions, raising custom exceptions.
- File I/O: Reading, writing and managing text files.
- Modules and packages: importing and using standard and third-party modules.
- Advanced Programming:
- Nested lists and dictionaries. Generators. Comprehensions of lists, dictionaries, sets.
- Object Oriented Programming (OOP):
- Creating and using classes and objects. Inheritance, polymorphism, and encapsulation. Special methods (such as __init__, __str__).
- Data manipulation with Pandas and NumPy. Operations on DataFrames.
- Data analysis and visualization with libraries such as Matplotlib.
- Applications in physics and PyROOT
- Scientific notation and uncertainty truncation.
- Image selection and visualization.
- Numerical integration methods and numerical resolution methods of differential equations.
- Histograms and graphs. Simple animations.
- ROOT files. Use and visualization of TTrees and TBranches.
- Time series analysis. Simple fits and hypothesis tests.
- More complex fits (templates). Graphics in ROOT.
- Introduction to machine learning applications (TMVA).
- C++
- Oggetto:
Modalità di insegnamento
Il corso verra' erogato in presenza e consistera' di un totale di 48 ore.
The course will be given in person and it will consist of 48 hours.
- Oggetto:
Modalità di verifica dell'apprendimento
Prova pratica. Implementazione di un piccolo progetto di programmazione in remoto e discussione orale dei risultati.
Practical test. Implementation of a small project at home and oral discussion on the results.
- Oggetto:
Attività di supporto
Testi consigliati e bibliografia
- Oggetto:
H. Deitel e P. Deitel, C++: How to Program 4th Edition - Prentice Hall
H. Deitel e P. Deitel, Introduzione a Python - Pearson ed.
Altri testi suggeriti:
William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery, NumericalRecipesin in C++ The Art of Scientific Computing 2nd Edition Cambridge University Press, 2002
T. Gaddis, Introduzione a Python - Pearson ed.
H Deitel and P Deitel C++, How to Program 4th Edition - Prentice Hall
H Deitel and P Deitel Introduzione a Python - Pearson ed.
Other suggested textbooks:
William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery NumericalRecipesin in C++ The Art of Scientific Computing 2nd Edition Cambridge University Press, 2002
T. Gaddis, Introduzione a Python - Pearson ed.
- Oggetto:
Note
- Registrazione
- Aperta
- Oggetto: