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.
 
    