Salta ai contenuti. | Salta alla navigazione

Strumenti personali

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