OBJECT-ORIENTED PROGRAMMING FOR EXPERIMENTAL DATA ANALYSIS
Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente?
Ecco come fare >>
- English course description
- Anno accademico
- 2021/2022
- Docente
- LUCA TOMASSETTI
- Crediti formativi
- 6
- Periodo didattico
- Primo Semestre
- SSD
- FIS/01
Obiettivi formativi
- L’obiettivo principale del corso è quello di fornire agli studenti le capacità di gestire e analizzare dati sperimentali con linguaggi di programmazione ad oggetti.
Il corso fornirà le seguenti conoscenze:
principi di base dei linguaggi orientati agli oggetti;
Tecniche di programmazione a oggetti;
Linguaggio C++;
Linguaggio Python;
Tecniche di scripting su shell linux (bash);
Strumenti per la gestione delle versioni del codice con Git.
Il corso fornirà le seguenti capacità:
trasformazione di dataset(s) mediante script Python e/o Bash per successive elaborazioni;
Elementi di sviluppo in collaborazione con Git;
Analisi e soluzione di problemi di gestione dei dati e analisi con codice orientato agli oggetti;
Utilizzo di framework di analisi dati. Prerequisiti
- Sono necessarie le seguenti conoscenze pregresse, fornite dal corso “Laboratorio di Fisica con elementi di statistica e informatica” al primo anno della laurea triennale:
principi di programmazione strutturata;
Linguaggio C;
Elementi di programmazione per l’analisi dati. Contenuti del corso
- Il corso si svolge per 51 ore (6 crediti), suddivisi in 24 ore di lezioni frontali e 27 ore di lezioni pratiche in laboratorio.
Il programma svolto è il seguente:
Introduzione alla programmazione orientata agli oggetti (OOP) e utilizzo di IDE (Eclipse, XCode, etc…), 3h
Linguaggio C++ (12h): Core syntax and types, Arrays and Pointers, Operators, Compound data types, Functions, Control instructions, Headers and interfaces; Objects and Classes, Inheritance, Constructors/destructors, Static members, Allocating objects, Exceptions; Object orientation, Operators, Value, pointers and references, Constness, Functors, Templates, The STL, Useful tools; [C++11 and C++14 opzionale] Generalized Constant Expressions, Range based loops, auto keyword, override and final keywords, non-member begin/end, Initializers, Constructors, Exceptions, Lambdas, Move semantic, pointers and RAII, Concurrency and asynchronicity, Mutexes.
Linguaggio Python (6h): Sintassi e utilizzo di Python e iPython; Objects and operators, Numbers, Strings, Lists and looping, Dictionaries, Conditions, Methods, Scripting, Modules.
Strumenti utili per la gestione e l’analisi dei dati: script di shell Bash e controllo delle versioni con Git (3h): Navigating and working with Files and Directories, Pipes and Filters, Loops, Shell Scripts, Finding Things, Environmental variables; Setting Up Git, Creating a Repository, Tracking Changes, Exploring History, Ignoring Things, Sharing a repository with others, Collaborating with Pull Requests, Conflicts.
Esercitazioni in laboratorio su C++ (10h)
Esercitazioni in laboratorio su Pyhton (10h)
Esercitazioni in laboratorio su Bash e Git (4h)
Esercitazioni in laboratorio sull’utilizzo di framework di analisi dati con C++, Python e Bash (3h) Metodi didattici
- Lezioni frontali sugli argomenti del programma del corso.
Lezioni pratiche in laboratorio, con calcolatore, su C++, Python, Bash e Git. Modalità di verifica dell'apprendimento
- L’esame finale consiste di tre parti:
prova scritta con 3-6 domande sugli argomenti del corso per verificare le conoscenze acquisite;
Discussione di un progetto di laboratorio assegnato durante il corso e sviluppato dallo studente con il fine di verificare il raggiungimento delle abilità acquisite nello sviluppo di software di analisi dati;
Prova orale (eventualmente opzionale) per verificare sia le conoscenze sia le abilità acquisite.
Il punteggio massimo per ciascuna parte è 30/30. Il punteggio finale è dato dalla media aritmetica dei tre punteggi parziali. Testi di riferimento
- Dispense fornite dal docente su argomenti selezionati.
Testo di riferimento sul C++
Testo di riferimento su Python;
L. Barone, E. Marinari, G. Organtini, F. Ricci-Tesenghi PROGRAMMAZIONE SCIENTIFICA ed Pearson Education;
P. R. Bevington, D. K. Robinson DATA REDUCTION AND ERROR ANALYSIS FOR PHYSICAL SCIENCES, 3 ed., Mc Graw Hill;
Eventuali altri libri di riferimento suggeriti o da concordare con il docente