Salta al contenuto principale
CODICE 118063
ANNO ACCADEMICO 2025/2026
CFU
SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05
LINGUA Inglese
SEDE
  • GENOVA
PERIODO 1° Semestre
MODULI Questo insegnamento è un modulo di:

PRESENTAZIONE

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Dopo aver completato con successo questo insegnamento, gli studenti saranno in grado di sviluppare codice Python robusto, manutenibile ed efficiente, con particolare attenzione all'analisi e alla manipolazione di set di dati e all'elaborazione multimediale semplice, tra cui l'analisi di immagini e video.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Questo insegnamento offre un'introduzione completa alla programmazione Python, con una forte enfasi sulla scrittura di codice robusto, manutenibile ed efficiente. Progettato per studenti con poca o nessuna esperienza di programmazione, l'insegnamento sviluppa progressivamente competenze nei concetti fondamentali di Python e in tecniche avanzate per la manipolazione dei dati e l'elaborazione multimediale.

Gli studenti impareranno ad analizzare e manipolare set di dati utilizzando le potenti librerie di Python, come Pandas e NumPy, e acquisiranno esperienza pratica nell'elaborazione di immagini e video utilizzando strumenti come OpenCV e PIL. Attraverso esercitazioni pratiche e progetti, gli studenti svilupperanno la capacità di scrivere codice pulito e modulare e di applicarlo a problemi reali nell'ambito della scienza dei dati e delle applicazioni multimediali.

Al termine dell'insegnamento, gli studenti saranno in grado di:

  • Sviluppare programmi Python efficienti e manutenibili.
  • Eseguire analisi e trasformazioni di dati utilizzando le librerie Python.
  • Implementare tecniche di base per l'elaborazione di immagini e video.
  • Applicare competenze di programmazione per risolvere problemi pratici nell'ambito dei dati e dei contenuti multimediali.

MODALITA' DIDATTICHE

Questa unità didattica adotta un approccio didattico misto e pratico, progettato per promuovere sia la comprensione concettuale che la competenza pratica nella programmazione Python. I metodi didattici includono:

  1. Lezioni frontali e dimostrazioni: lezioni settimanali introducono i concetti fondamentali della programmazione, le tecniche di analisi dei dati e gli strumenti di elaborazione multimediale. Dimostrazioni di coding dal vivo vengono utilizzate per illustrare la risoluzione di problemi in tempo reale e le migliori pratiche nello sviluppo Python.
  2. Sessioni di coding interattive: gli studenti partecipano a esercizi di coding guidati durante le lezioni per consolidare il materiale didattico. L'enfasi è posta sulla scrittura di codice pulito, modulare ed efficiente attraverso la risoluzione collaborativa dei problemi.
  3. Esercizi pratici: gli esercizi settimanali offrono l'opportunità di applicare i concetti a scenari reali, inclusi la manipolazione dei dati e le attività multimediali. Gli esercizi sono progettati per sviluppare progressivamente applicazioni più complesse.
  4. Apprendimento basato su progetti: un progetto finale consente agli studenti di esplorare un argomento di interesse nell'analisi dei dati o multimediale. Gli studenti lavorano individualmente o in piccoli team per progettare, implementare e presentare i propri progetti, promuovendo la creatività e l'apprendimento autonomo. Revisione tra pari e critica del codice: gli studenti partecipano a revisioni del codice tra pari per sviluppare il pensiero critico e le capacità collaborative. Sessioni di feedback costruttivo contribuiscono a migliorare la qualità del codice e la comprensione delle pratiche di sviluppo software.
  5. Utilizzo di strumenti digitali: i notebook Jupyter vengono utilizzati per la codifica e la documentazione interattiva. Il controllo di versione con Git può essere introdotto per supportare il lavoro collaborativo e la gestione del codice.
  6. Orari di ricevimento e supporto: gli orari di ricevimento regolari e i forum di discussione online offrono ulteriore supporto e guida personalizzata. Assistenti didattici possono essere disponibili per aiutare con il debug e le domande concettuali.

Gli studenti con certificazioni valide per Disturbi Specifici dell’Apprendimento (DSA), per disabilità o altri bisogni educativi sono invitati a contattare il docente e il referente di Scuola per la disabilità all’inizio dell’insegnamento per concordare eventuali modalità didattiche che, nel rispetto degli obiettivi dell’insegnamento, tengano conto delle modalità di apprendimento individuali. I contatti del referente di Scuola per la disabilità sono disponibili al seguente link Comitato di Ateneo per l’inclusione delle studentesse e degli studenti con disabilità o con DSA | UniGe | Università di Genova

PROGRAMMA/CONTENUTO

L'insegnamento tratterà i seguenti aspetti della programmazione Python:

  • Introduzione alla programmazione: architetture dei computer; memoria e dati; CPU e programmi; linguaggi di programmazione; problemi, algoritmi e programmi.
  • Come utilizzare l'interprete Python: invocazione dell'interprete; passaggio di argomenti; modalità interattiva; notebook; piattaforme di coding online.
  • Concetti base della programmazione Python: variabili e assegnazioni; espressioni e istruzioni; operazioni; stampa; commenti; debugging; tipi di dati; numeri e stringhe; input.
  • Funzioni: funzioni predefinite; chiamate di funzioni; importazione di moduli e funzioni; funzioni matematiche; composizione di funzioni; definizione di nuove funzioni; parametri e argomenti; argomenti obbligatori e facoltativi; ordine degli argomenti e assegnazione di parole chiave; ambito di una variabile.
  • Prendere decisioni: espressioni booleane e operatori logici; esecuzione condizionale e alternativa; istruzioni if-elif-else; istruzioni condizionali concatenate e annidate.
  • Iterazioni: riassegnazione e aggiornamento di variabili; istruzione while; istruzione break; sequenze e cicli; operatore in; costrutto for. Strutture dati (stringhe, liste, tuple, dizionari): definizione, proprietà, operazioni e metodi; indicizzazione vs. assegnazione; mutabilità vs. immutabilità; map, flter e reduce; referenziazione e aliasing; impacchettamento e decompressione; lookup e lookup inverso; argomenti a lunghezza variabile.
  • File: persistenza; apertura e chiusura e costrutto with; lettura e scrittura; operatore di formato; nomi e percorsi dei file; cattura delle eccezioni; pickling.
  • Moduli e pacchetti: definizione di un modulo; definizione di un pacchetto; importazione di un pacchetto vs. importazione di un modulo vs. importazione di una funzione; installazione di pacchetti.
  • Classi e oggetti: classi, tipi, oggetti e istanze; istanze come valori di ritorno; attributi e metodi; mutabilità degli oggetti; istanziazione e metodo __init__; overloading degli operatori e metodi speciali; metodi statici e metodi di classe; ereditarietà.
  • Programmazione Python: espressioni condizionali; EAFP (Easier to Ask for Forgiveness than Permission); list comprehension; espressioni generatrici; Operatori qualsiasi e tutti; insiemi.
  • Programmazione scientifica: Numpy, array e broadcasting; Pandas, dataframe e serie; Scikit Learn e introduzione al machine learning con Python; Matplotlib e visualizzazione dati in Python
  • Introduzione all'elaborazione multimediale: panoramica dei tipi di dati multimediali, introduzione ai formati di immagini e video, utilizzo di PIL e OpenCV basic
  • Elaborazione di immagini e video con OpenCV: lettura, visualizzazione e salvataggio di immagini, spazi colore e trasformazioni, filtri, rilevamento di bordi e contorni, acquisizione video da file e webcam, elaborazione fotogramma per fotogramma, semplice rilevamento e tracciamento di oggetti

TESTI/BIBLIOGRAFIA

Allen B. Downey, Think Python: How to Think Like a Computer Scientist (2a edizione), O’Reilly Media, 2015.
Un'introduzione ai concetti di programmazione in Python, adatta anche ai principianti.

Jake VanderPlas, Python Data Science Handbook, O’Reilly Media, 2016.
Illustra gli strumenti essenziali per la data science in Python, tra cui NumPy, Pandas, Matplotlib e Scikit-learn.

Charles Severance, Python for Everybody: Exploring Data Using Python 3, CreateSpace, 2016.
Un'introduzione semplice a Python, con particolare attenzione alla gestione dei dati e alle applicazioni pratiche.

Mark Lutz, Learning Python (5a edizione), O’Reilly Media, 2013.
Un'introduzione completa a Python, che copre argomenti sia fondamentali che avanzati.

Wes McKinney, Python for Data Analysis (3a edizione), O'Reilly Media, 2022.
Si concentra sul data wrangling con Pandas, NumPy e Jupyter, ideale per la parte di analisi dati del corso.

Adrian Rosebrock, Practical Python and OpenCV (3a edizione), PyImageSearch, 2016.
Una guida pratica all'elaborazione di immagini e video con OpenCV e Python.

Documentazione ufficiale di Python

Documentazione di Pandas

Documentazione di NumPy

Tutorial su OpenCV e Python

Progetto Jupyter

DOCENTI E COMMISSIONI

LEZIONI

Orari delle lezioni

L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy

ESAMI

MODALITA' D'ESAME

L'esame finale è progettato per valutare la comprensione e l'applicazione pratica da parte degli studenti dei concetti chiave trattati durante il corso. Valuta sia le conoscenze teoriche che le competenze di programmazione pratica in Python, con particolare attenzione alla manipolazione dei dati e all'elaborazione multimediale.

Formato

Durata: 2 ore

Tipo: Scritto e pratico (al computer)

Struttura:

  • Sezione A - Domande concettuali (30%): Domande a risposta breve e a risposta multipla su sintassi Python, strutture dati, programmazione orientata agli oggetti e librerie chiave (ad esempio, Pandas, NumPy, OpenCV).
  • Sezione B - Analisi del codice e debug (30%): Gli studenti analizzeranno, interpreteranno e correggeranno frammenti di codice Python relativi ad attività relative a dati e contenuti multimediali.
  • Sezione C - Attività di programmazione (40%): Un esercizio di programmazione pratica in cui gli studenti scrivono uno script Python completo per risolvere un problema che riguarda la manipolazione di dataset o l'elaborazione di immagini/video di base.

MODALITA' DI ACCERTAMENTO

1. Compiti settimanali (30%)

  • Brevi esercizi pratici incentrati sull'applicazione dei concetti appresi a lezione e in laboratorio.
  • Le attività includono la scrittura di script Python, l'analisi di set di dati e l'elaborazione di base di immagini/video.
  • Incoraggia la pratica costante e l'apprendimento incrementale.

2. Quiz di metà semestre (10%)

  • Un quiz scritto o al computer che valuta le conoscenze di base della sintassi Python, delle strutture dati e della manipolazione dei dati di base.
  • Include domande a risposta multipla, a risposta breve e di interpretazione del codice.

3. Progetto finale (30%)

  • Un progetto finale in cui gli studenti progettano e implementano una piccola applicazione o pipeline di analisi.
  • Le opzioni del progetto includono:
  • Analisi e visualizzazione dei dati di un set di dati reale.
  • Applicazione di elaborazione di immagini o video tramite OpenCV.
  • Valutazione basata su funzionalità, qualità del codice, documentazione e presentazione.

4. Esame finale (20%)

  • Un esame completo che combina domande teoriche e attività pratiche di programmazione. Valuta la capacità degli studenti di scrivere codice efficiente e manutenibile e di risolvere problemi in autonomia.

5. Partecipazione e coinvolgimento (10%)

  • Coinvolgimento attivo nelle attività in classe, nei laboratori di programmazione e nelle discussioni tra pari.
  • Può includere revisioni tra pari, esercizi di gruppo e contributi a forum online o piattaforme collaborative.