Syllabus del corso
Obiettivi
Il corso ha l’obiettivo di fornire agli studenti una preparazione solida e consapevole nei fondamenti della programmazione in Python, con particolare attenzione alle applicazioni nella Scienza dei Materiali. Oltre alla padronanza della sintassi e della logica della programmazione (Indicatore di Dublino 1: Conoscenza e capacità di comprensione), il corso mira a sviluppare la capacità di progettare e realizzare strumenti personalizzati per l’analisi dei dati, la modellazione numerica e la simulazione di sistemi fisico-chimici complessi (Indicatore di Dublino 2: Capacità di applicare conoscenza e comprensione).
Un ulteriore obiettivo è introdurre l’uso di strumenti di Intelligenza Artificiale per il supporto alla scrittura e ottimizzazione del codice, al fine di rendere più efficiente e versatile lo sviluppo di soluzioni computazionali, anche in contesti di ricerca avanzata. Questo approccio favorisce l'acquisizione di competenze trasversali utili ad affrontare nuove tecnologie in modo critico e selettivo (Indicatore di Dublino 5: Capacità di apprendimento, e 3: Autonomia di giudizio).
Attraverso esempi pratici ed esercizi ispirati a casi reali, il corso promuove uno stile di programmazione orientato alla soluzione autonoma di problemi scientifici, stimolando al contempo la creatività e l’efficacia comunicativa, anche nella presentazione e condivisione del codice e dei risultati ottenuti (Indicatore di Dublino 4: Abilità comunicative).
Contenuti sintetici
Il corso introduce i principi della programmazione, sia imperativa che orientata agli oggetti, partendo dal concetto di algoritmo e di costo computazionale. Verranno presentati i concetti fondamentali come variabili, tipi di dato, strutture di controllo, funzioni e operazioni di input/output.
Sulla base di queste nozioni, gli studenti svilupperanno semplici programmi con applicazioni pratiche alla Scienza dei Materiali, tra cui simulazioni, gestione ed elaborazione di dati, e automazione di compiti ripetitivi.
Nella parte conclusiva, il corso affronterà anche le tecniche di programmazione assistita da strumenti di intelligenza artificiale.
Il linguaggio di programmazione utilizzato è Python.
Programma esteso
- Fondamenti di programmazione: introduzione ai concetti base come variabili, tipi di dati, input/output, strutture di controllo e funzioni.
- Gestione dei dati: manipolazione di dati tramite liste, dizionari e array. Introduzione a librerie per il calcolo numerico e per l’analisi dei dati.
- Visualizzazione dei dati: creazione di grafici e rappresentazioni visive, utili per analizzare risultati sperimentali e simulazioni.
- Introduzione alla modellizzazione: basi della simulazione di fenomeni scientifici, come il metodo Monte Carlo e l’implementazione di algoritmi semplici.
- Automazione e scripting: creazione di script per automatizzare operazioni ripetitive, come l’elaborazione di grandi dataset o la gestione di strumentazione scientifica.
- Programmazione “AI-assisted”: sviluppo di applicazioni con il supporto dell’intelligenza artificiale per la velocizzazione della scrittura del codice.
Prerequisiti
È richiesta una conoscenza di base della matematica. Una buona familiarità con i contenuti dei corsi precedenti di Scienza dei Materiali è utile per comprendere più a fondo il significato dei programmi che verranno sviluppati, ma non è indispensabile. Non sono richieste conoscenze pregresse di programmazione.
Modalità didattica
Didattica erogativa: lezioni frontali (3 CFU, per un totale di 24 ore).
Didattica interattiva: esercitazioni in laboratorio (3 CFU, per un totale di 36 ore).
Il corso è tenuto in italiano.
Materiale didattico
Due libri disponibili gratuitamente per imparare a programmare in Python sono:
-
"Think Python" di Allen B. Downey (http://greenteapress.com/wp/think-python-2e)
-
"Automate the Boring Stuff with Python" di Al Sweigart (https://automatetheboringstuff.com si può leggere gratis online o acquistare su Amazon)
Altro materiale verrà reso disponibile dal docente durante il corso.
Periodo di erogazione dell'insegnamento
Secondo semestre.
Modalità di verifica del profitto e valutazione
L’esame consiste in una prova scritta e una prova orale.
La prova scritta prevede la realizzazione di alcuni brevi codici in Python, volti a verificare la padronanza delle nozioni fondamentali di programmazione.
La prova orale consiste nella discussione di un progetto precedentemente concordato con il docente, e in domande relative ai contenuti del corso.
Non sono previste prove intermedie.
Orario di ricevimento
Ogni giorno su appuntamento.
Sustainable Development Goals
Aims
This course aims to provide students with a solid and well-structured foundation in Python programming, with a specific focus on applications in Materials Science. In addition to acquiring proficiency in syntax and programming logic (Dublin Descriptor 1: Knowledge and understanding), students will learn how to design and implement customized tools for data analysis, numerical modeling, and simulation of physico-chemical systems (Dublin Descriptor 2: Applying knowledge and understanding).
An additional goal is to introduce the use of Artificial Intelligence tools to accelerate and optimize code development, improving the efficiency and adaptability of computational solutions. This encourages students to critically engage with emerging technologies and supports the development of independent learning strategies (Dublin Descriptor 5: Learning skills, and 3: Making judgments).
Through real-world-inspired examples and exercises, the course fosters a practical and creative programming mindset, enabling students to tackle complex scientific problems autonomously and to communicate effectively, including in the presentation and documentation of code and results (Dublin Descriptor 4: Communication skills).
Contents
The course introduces the principles of programming, both imperative and object-oriented, starting from the concept of algorithms and computational cost. Core concepts such as variables, data types, control structures, functions, and input/output operations will be presented.
Building on these foundations, students will develop simple programs with practical applications in Materials Science, including simulations, data handling and processing, and the automation of repetitive tasks.
In the final part of the course, AI-assisted programming techniques will also be discussed.
The programming language used throughout the course is Python.
Detailed program
- Programming fundamentals: Introduction to core concepts such as variables, data types, input/output operations, control structures, and functions.
- Data handling: Manipulation of data using lists, dictionaries, and arrays. Introduction to libraries for numerical computing and data analysis.
- Data visualization: Creating plots and visual representations to support the analysis of experimental results and scientific simulations.
- Introduction to modeling: Basic principles of scientific simulation, including Monte Carlo methods and the implementation of simple algorithms.
- Automation and scripting: Writing scripts to automate repetitive tasks, such as processing large datasets or interfacing with scientific instruments.
- AI-assisted programming: Developing code with the support of artificial intelligence tools to accelerate and optimize the coding process.
Prerequisites
A basic knowledge of mathematics is required. While a good understanding of previous Materials Science courses can help in better appreciating the purpose of the programs developed during the course, it is not essential. No prior programming experience is required.
Teaching form
Instructional teaching: Lectures (3 CFU, 24h).
Interactive teaching: Laboratory activity (3 CFU, 36h).
Lectures are given in Italian.
Textbook and teaching resource
Two freely available books for learning to program in Python are:
-
"Think Python" by Allen B. Downey (http://greenteapress.com/wp/think-python-2e)
-
"Automate the Boring Stuff with Python" by Al Sweigart (https://automatetheboringstuff.com — available to read online for free or to purchase on Amazon)
Additional materials will be provided during the course.
Semester
Second semester.
Assessment method
The final assessment consists of a written test and an oral exam.
The written test involves writing a few short Python programs, aimed at evaluating the student's grasp of basic programming concepts.
The oral exam includes a discussion of a project previously agreed upon with the instructor, as well as questions on the course content.
No midterm exams are scheduled.
Office hours
Available daily by appointment.
Sustainable Development Goals
Scheda del corso
Staff
-
Francesco Meinardi