Course Details

Programming and data analysis laboratory

MF0711

Course
Programming and data analysis laboratory
Code
MF0711
Academic Year
2026/2027
Curriculum Year
2026/2027
Degree Programme
APPLIED PHYSICS
Curriculum
000 - 000-GENERICO
Course coordinator
Lecturers
Credits
6
Lecture Hours
48
Scientific Disciplinary Sector (SSD)
INFO-01/A - Informatics
Course Type
Single-subject learning activity
Course Delivery
OBB - Obbligatoria
Year
1
Teaching period
Primo Semestre
Campus
VERCELLI
Teaching language
Italian
Course Contents
The course introduces programming with Python, with practical applications to perform exploratory and statistical data analysis. The programming part of the course is complemented by the introduction of Arduino and its IDE to manage and collect data from sensors. The students will develop the course skills via practical computer sessions, oriented to gain competence in: 1. Programming with Python and the use of Jupyter Notebooks 2. Programming and managing of sensors with the Arduino’s IDE and simulations with TinkerCad and PyFirmata. 3. Statistical and exploratory data analysis techniques (applied to real-world case studies) including: 1. Data visualisation (scatter plots, histograms, etc.) 2. Descriptive statistics and uncertainties (mean, variance, standard deviation, etc.) 3. Correlations between observables and linear regression
Reference Texts
All materials needed are provided via the DIR platform.
Supporting Book (Optional): Il manuale di Arduino, P. Aliverti, Ed. LSWR, 2024
Learning Outcomes
1. Independently implement functional Python programs in Jupyter Notebook based on assigned specifications, by applying algorithmic approaches to solving simple problems, by using control structures, functions, and data structures, and by identifying and correcting errors in the code.

2. Managing sensors via the Arduino IDE and TinkerCad simulator, being able to understand and explain the functioning of the main components of a circuit and the corresponding Arduino Sketch, assembling and testing simple circuits, and collecting and analyzing data from sensors.

3. Analyzing real datasets by calculating and interpreting descriptive statistics, proposing and creating appropriate visualizations in Python.
Prerequisites
No background knowledge required
Teaching Methods
Delivered and Interactive Teaching in the laboratory that combines frontal lecture moments and active learning. During the lecture sessions, fundamental concepts are presented, in combination with practical examples. The basics of programming and visualization in Python, as well as Arduino programming, are introduced. During the active learning sessions, the class is guided in creating algorithms to solve problems and implementing them in Python, in applying data analysis techniques using descriptive statistics, creating visualizations in Python while discussing their interpretation, and simulating circuits and related programming in Arduino. On the DIR platform, material is made available to students, which reflects the topics covered in the lessons, additional exercises, and any supplementary material, providing assistance even for those who were not present.
Additional Information
Students with physical disabilities, Learning Disabilities or Special Education Needs can request specific services and tools via the Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti, consulting the University webpage: https://www.uniupo.it/en/services/services- students-physical-or-learning-disabilities Students with disabilities, learning disabilities or special education needs, once they have contacted the University Staff, can refer to the tutor in charge of the course to define the examination modalities, concerning academic aspects.
Assessment Methods
The final assessment consists of an individual written examination carried out in the laboratory, using Jupyter Notebooks. The examination includes three practical exercises covering the main areas of the course: (1) Python programming, (2) Arduino and data acquisition, and (3) data analysis and visualization. The exercises cover code implementation, modification and correction tasks, and open-ended questions.

1. Python programming – 15 points
Starting from an assigned specification, students are required to design and implement a working Python program, using the main programming techniques covered during the course (control structures, functions, data structures, etc.).

2. Arduino and data acquisition – 10 points
Students are required to complete, correct, or translate an Arduino Sketch or PyFirmata code and, where required, analyze a simple circuit and describe the functioning of the code through open-ended questions and comments on the instructions.

3. Data analysis and visualization – 5 points
Starting from a real dataset or case study, students are required to perform data analysis using mainly Pandas and Matplotlib, as well as the statistical and regression techniques covered during the course, selecting and creating appropriate visualizations and interpreting the results obtained.

The assessment takes into account the correctness, completeness, and autonomy demonstrated in the exercises, as well as the ability to justify the choices made and interpret the results. To pass the examination, students must demonstrate knowledge and understanding of the fundamental concepts of the course and the ability to apply them to the proposed problems, identifying and correcting errors and clearly describing the procedures followed and the results obtained.

18–22 points (satisfactory level): demonstrates knowledge of the fundamental concepts and the ability to apply them to the proposed problems. The exercises are substantially correct, with possible errors or omissions, and the main results are correctly interpreted.

23–26 points (good level): demonstrates broader knowledge of the course content and a good ability to apply it independently. The exercises are completed with a good level of correctness and completeness, demonstrating the ability to identify and correct errors, justify choices, and interpret results.

27–30 points (excellent level): demonstrates comprehensive and in-depth knowledge and a high degree of autonomy in applying the acquired skills. The exercises are completed correctly and comprehensively, demonstrating the ability to make and justify appropriate choices, independently correct errors, and critically interpret the results.

The maximum score is 30 points. Up to 2 additional points may be awarded for 30 cum laude, based on the overall quality of the work, the quality of the programming, and the level of autonomy and depth demonstrated.
Detailed Syllabus
- Introduction to Programming: Python and Jupyter Notebooks.
- Programming in Python: Variables and types, Control Structures, Functions and interfaces, Data Structures (Lists, Tuples, Dictionaries, etc.), Files and Dataframes.
- Introduction to Arduino: IDE and TinkerCad, Structure of a Sketch, Digital I/O, Serial Monitor, Analog I/O, Data collection from Sensors.
- Introduction to Data Analysis: Descriptive statistics, Data visualization (with pandas and matplotlib).
Expected Learning Outcomes
Knowledge and understanding:
Know and understand the basic principles and techniques of Python programming and the use of Jupyter Notebook; the main methods of statistical and exploratory data analysis, including descriptive statistics, the analysis of relationships between variables, linear regression, and data visualization; the basic principles of sensor management and data acquisition using Arduino and PyFirmata.

Applying knowledge and understanding:
Starting from a basic programming problem, design and implement a functional Python program and execute it in Jupyter Notebook, identifying and correcting any errors in the code. Starting from a sensor data acquisition problem, set up the data collection process using Arduino, creating or modifying the corresponding Sketch, compiling and executing it, and acquiring data using Python and PyFirmata. Starting from a real-world case study, conduct an exploratory data analysis by selecting appropriate descriptive statistics and data analysis techniques, and by designing and creating visualizations consistent with the characteristics of the data and the objectives of the analysis.

Communication skills:
Describe and justify the main choices made in the design and implementation of Python programs and in the development of simple data acquisition systems using Arduino; present and interpret the results of data analysis through appropriate graphical representations.

Learning skills:
Use the skills acquired in Python, Arduino, and data analysis to independently address simple problems not directly covered during the course, identifying appropriate techniques and tools and independently consulting the necessary documentation.
Last update:09-09-2026 00:14:31