Repository contenente materiali didattici, appunti ed esercizi del corso "Introduction to Python Programming" organizzato da CINECA.
DAY 1 - Fondamenti di Python
- Argomenti: Introduzione a Python, ambienti virtuali, sintassi base, controllo del flusso, funzioni
- Materiali:
- Esercizi:
hands_on_2.1.py,hands_on_3.1.py,hands_on_3.2.py,hands_on_4.1.py
DAY 2 - Strutture Dati e Libreria Standard
- Argomenti: Dizionari, liste, tuple, set, funzioni avanzate, introspezione, moduli standard (os, pathlib, datetime, logging, ecc.)
- Materiali:
- Esercizi pratici: Caesar Cipher, Triangle Wave, statistiche 100m
DAY 3 - Programmazione Avanzata
- Argomenti: Decoratori, eccezioni, classi e OOP, iterables/iterators/generators
- Materiali:
- Esempi:
decoratori.py,primo_esempio.py
- Python 3.13 (o superiore)
- pip
-
Clona la repository
git clone <url-repository> cd <nome-repository>
-
Crea un ambiente virtuale
python -m venv corso-python
-
Attiva l'ambiente virtuale
-
Linux/Mac:
source corso-python/bin/activate -
Windows:
corso-python\Scripts\activate
-
-
Installa le dipendenze
pip install -r requirements.txt
jupyter- Notebook interattiviipython- Shell interattiva avanzatanumpy- Calcolo numericomatplotlib- Visualizzazione dati- Altre librerie specificate in
requirements.txt
.
├── DAY 1/ # Giorno 1: Fondamenti
│ ├── APPUNTI_MIGLIORATI.md # Appunti completi e formattati
│ ├── RISORSE/ # Notebook e materiali originali
│ └── hands_on_*.py # Esercizi pratici
│
├── DAY 2/ # Giorno 2: Strutture dati
│ ├── APPUNTI_MATTINA_MIGLIORATI.md
│ ├── APPUNTI_POMERIGGIO_MIGLIORATI.md
│ ├── RISORSE/ # Esercizi e notebook
│ └── *.py # Script di esempio
│
├── DAY 3/ # Giorno 3: OOP e avanzati
│ ├── APPUNTI.md
│ ├── RISORSE/ # Materiali avanzati
│ └── esempio_*.py # Esempi di codice
│
├── python-intro-2025/ # Repository originale del corso
├── back up/ # Backup dei materiali
├── corso-python/ # Ambiente virtuale
├── requirements.txt # Dipendenze Python
├── to_do_exercises.txt # Lista esercizi da completare
└── README.md # Questo file
- ✅ Triangle Wave (
DAY 2/RISORSE/05_exercise_triangle_wave.ipynb) - ✅ Caesar Cipher (
DAY 2/RISORSE/06_exercise_caesar_cipher.ipynb) - ✅ Statistiche 100m (
DAY 2/times_100m.dat)
Consulta il file to_do_exercises.txt per la lista aggiornata degli esercizi da svolgere.
- IDE/Editor: VSCode, PyCharm, Jupyter Lab
- Versione Python: 3.13
- Gestione Pacchetti: pip, venv
- Notebook: Jupyter Notebook/Lab
- Version Control: Git/GitHub
Fondamenti (DAY 1)
- Introduzione a Python e storia del linguaggio
- Installazione e configurazione ambiente
- Ambienti virtuali (venv)
- Tipi di dati base (int, float, str, bool)
- Operatori e espressioni
- Strutture di controllo (if, for, while)
- Funzioni e scope delle variabili
- Liste, tuple e operazioni base
Strutture Dati Avanzate (DAY 2)
- Dizionari e operazioni avanzate
- Set e operazioni insiemistiche
- List/Dict comprehensions
- Funzione
zip()e unpacking - Parametri funzioni:
*argse**kwargs - Introspezione (
type,isinstance,hasattr,callable) - Moduli libreria standard:
os- Interazione con il sistema operativoshutil- Operazioni su filepathlib- Path object-orientedlogging- Sistema di loggingargparse- Parser argomenti CLIsubprocess- Esecuzione processi esternidatetime- Gestione date e orari
Programmazione Avanzata (DAY 3)
- Decoratori (function decorators)
- Gestione eccezioni (try, except, finally)
- Classi e Object-Oriented Programming
- Attributi e metodi
- Ereditarietà e polimorfismo
- Metodi speciali (
__init__,__str__, ecc.)
- Iterables, Iterators e Generators
- Context managers (
withstatement)
Al termine del corso sarai in grado di:
- ✨ Scrivere programmi Python efficienti e leggibili
- 🔧 Utilizzare le strutture dati appropriate per ogni situazione
- 📦 Gestire progetti Python con ambienti virtuali e dipendenze
- 🐛 Debuggare e gestire errori in modo professionale
- 📝 Documentare il codice seguendo le best practices
- 🚀 Applicare principi di programmazione Object-Oriented
- 🔍 Utilizzare i moduli della libreria standard Python
- Naming Conventions: Seguire PEP 8 per nomi di variabili, funzioni e classi
- Docstrings: Documentare funzioni e classi con docstring descrittive
- Type Hints: Utilizzare annotazioni di tipo per migliorare la leggibilità
- List Comprehensions: Preferire comprehensions ai loop quando appropriato
- Context Managers: Usare
withper gestire risorse (file, connessioni) - Logging: Implementare logging invece di
print()per debugging - Virtual Environments: Sempre usare ambienti virtuali per progetti
- Error Handling: Gestire eccezioni in modo specifico, evitare
except:generico
- Gli appunti con suffisso
_MIGLIORATI.mdsono versioni estese e formattate degli appunti originali - La cartella
RISORSE/in ogni DAY contiene i notebook Jupyter originali del corso - La cartella
back up/contiene una copia di sicurezza di tutti i materiali - L'ambiente virtuale
corso-python/non è tracciato da Git
Per domande o chiarimenti sul corso:
- CINECA Support: Consulta la piattaforma learn.cineca.it
- Repository Issues: Apri una issue su GitHub per problemi con il codice
Materiali didattici forniti da CINECA per scopi educativi.
Un ringraziamento speciale a:
- CINECA per l'organizzazione del corso
- Gli istruttori per i materiali didattici di qualità
- La community Python per la documentazione eccellente
Happy Coding! 🚀
Ultimo aggiornamento: Novembre 2025