Salta ai contenuti. | Salta alla navigazione

Strumenti personali

OBJECT-ORIENTED PROGRAMMING FOR EXPERIMENTAL DATA ANALYSIS

Academic year and teacher
If you can't find the course description that you're looking for in the above list, please see the following instructions >>
Versione italiana
Academic year
2021/2022
Teacher
LUCA TOMASSETTI
Credits
6
Didactic period
Primo Semestre
SSD
FIS/01

Training objectives

The main goal of the course is giving to the students the capability to perform experimental data management and analysis with object-oriented programming languages.

The course will provide the following knowledges:
basic principles of object-oriented programming;
object-oriented programming techniques;
the C++ programming language;
the Python programming language;
shell scripting techniques;
version control with Git.

The course will provide the following skills:
transformation of data(sets) with Python/Bash scripts for further processing;
basic collaborative programming with Git;
analysis and solution of problems in data management and analysis with object-oriented code;
use of generic data analysis frameworks.

Prerequisites

The following concepts and knowledge provided by the course “Laboratorio di Fisica con elementi di statistica e informatica" are mandatory:
structured programming principles;
C language;
Basics on data analysis programming.

Course programme

The course is taught in 51 hours (6 credits) divided in 24 hours of lectures plus 27 hours of practical lessons and hands-on in the laboratory.
The detailed programme is listed below (lectures in roman, hands-on in italic).

Introduction to object oriented programming (OOP): [3 h]
classical OOP;
Eclipse IDE, XCode IDE.

C++ language: [12 h]
Language basics (C and C++):¿Core syntax and types, Arrays and Pointers, Operators, Compound data types, Functions, Control instructions, Headers and interfaces;
Object orientation in C++:¿Objects and Classes, Inheritance, Constructors/destructors, Static members, Allocating objects, Exceptions;
Advanced Topics:¿Object orientation, Operators, Value, pointers and references, Constness, Functors, Templates, The STL, Useful tools
[ C++11 and C++14 topics ] ** optional **:¿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.

Python language: [6 h]
Running Python and iPython;
Language basics, core syntax, object orientation:¿Objects and operators, Numbers, Strings, Lists and looping, Dictionaries, Conditions, Methods, Scripting, Modules.

Useful tools: [3 h]
Linux (Bash) Shell:¿Navigating and working with Files and Directories, Pipes and Filters, Loops, Shell Scripts, Finding Things, Environmental variables;
Version control with Git:¿Basics, Setting Up Git, Creating a Repository, Tracking Changes, Exploring History, Ignoring Things, Sharing a repository with others, Collaborating with Pull Requests, Conflicts.

Practice and hands-on with C++ [10 h]
(TBD)
Practice and hands-on with Python, iPython [10 h]
(TBD)
Practice and hands-on with Bash scripting and Git [4 h]
(TBD)
Practice and hands-on with data analysis frameworks using C++, Python and Bash [3 h]
ROOT, R, GNUplot, … (TBD)

Didactic methods

Lectures on course topics.
Practical lessons and hands-on in laboratory with C++, Python, Bash and Git.

Learning assessment procedures

The final exam consists of three parts:
written exam, 3–6 questions on all topics of the course to assess the knowledge acquired;
discussion of a laboratory project assigned by the instructor and implemented by the student with the aim of assess the capabilities in developing data analysis software;
oral exam (eventually optional) to assess both the knowledge and the capabilities acquired.
The maximum score for each part is 30/30. The final score is the arithmetic mean of the three partial scores.

Reference texts

Teacher’s lecture notes;

TBD: Reference text on C++;
TBD: Reference text on 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;
TBD: other textbooks.