Course Details

Programming and data analysis laboratory

ST0200

Course
Programming and data analysis laboratory
Code
ST0200
Academic Year
2026/2027
Curriculum Year
2024/2025
Degree Programme
GREEN CHEMISTRY
Curriculum
A001 - 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
OPZ - Opzionale
Year
3
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
The course aims to achieve the following learning objectives:
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.

To achieve these objectives, the course includes laboratory activities that integrate Expository Teaching (DE) and Interactive Teaching (DI) within the same teaching units, without allocating separate CFUs to the two modes.
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, answering open-ended questions, together with the analysis of simple data collection systems and datasets.

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.). The exercise assesses knowledge and understanding of the basic principles of Python programming and the ability to apply them in the design, implementation, and execution of a working program, identifying and correcting any errors.

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. The exercise assesses knowledge of the basic principles of sensor management and data acquisition, as well as the ability to apply them in the configuration and management of a simple data acquisition system.

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 exercise assesses the ability to select and apply appropriate analysis techniques based on the characteristics of the data and the objectives of the analysis, as well as to present and interpret the results through graphical representations and open-ended questions.

Overall, the ability to independently learn and apply the knowledge acquired to problems not directly addressed during the course is assessed through exercises and questions requiring students to select appropriate techniques and tools, identify and correct errors, and, where necessary, independently consult the relevant documentation.

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 exam, students must show knowledge and understanding of the fundamental concepts of the course and the ability to apply them, 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 quality of the work and 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:
Identify and explain the basic principles and techniques of Python programming and the use of Jupyter Notebook; describe the main methods of statistical and exploratory data analysis, including descriptive statistics, the analysis of relationships between variables, linear regression, and data visualization; describe the basic principles of sensor management and data collection using Arduino and PyFirmata.

Applying knowledge and understanding:
Starting from a basic computational problem, design, implement, and execute a working Python program in Jupyter Notebook, correctly using control structures, functions, and data structures, and identifying and correcting any errors in the code. Starting from a sensor data acquisition problem, set up the data collection process using Arduino by creating or modifying the relevant 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, calculating, and interpreting descriptive statistics, analyzing relationships between variables and, where appropriate, applying linear regression, as well as 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 the results of data analyses through appropriate graphical representations and interpret them in relation to the objectives of the analysis.

Learning skills:
Independently address simple problems not directly covered during the course by selecting appropriate techniques and tools from those acquired in Python, Arduino, and data analysis, and independently consulting the necessary documentation to implement and verify the solution.

Achievement Levels:
- To achieve a minimum level, students must demonstrate the ability to apply the basic knowledge and techniques acquired during the course to solve problems similar to those addressed in the teaching activities, with appropriate support from the documentation and, where necessary, from the instructor.

- To achieve an advanced level, students must demonstrate the ability to independently apply the knowledge acquired to problems not directly addressed during the course, appropriately selecting and integrating programming, data acquisition, and data analysis techniques and tools, and justifying the main choices made.
Last update:21-10-2026 00:13:19