CODING IN ACTION LAB
Obiettivi formativi
Il corso introduce gli studenti al pensiero computazionale, alla programmazione e al problem solving data-driven. Piuttosto che presentare la programmazione come un fine in sé, il corso mostra come gli strumenti computazionali possano essere utilizzati per rispondere a domande concrete, analizzare dati, automatizzare attività e supportare processi decisionali. Gli studenti apprendono i fondamenti della programmazione in Python e li applicano progressivamente a problemi analitici realistici. Il corso introduce inoltre concetti di algoritmi, costo computazionale, elaborazione e visualizzazione dei dati, dedicando particolare attenzione al ruolo della programmazione nell’era dell’Intelligenza Artificiale e dei Large Language Models.
Risultati di apprendimento attesi
Al termine del corso lo studente sarà in grado di: comprendere i principi fondamentali del pensiero computazionale e della progettazione di algoritmi; scrivere, leggere e modificare programmi Python di complessità moderata; selezionare le strutture e gli strumenti più appropriati per risolvere problemi pratici; comprendere le basi del costo computazionale e dell’efficienza degli algoritmi; acquisire, trasformare, aggregare e visualizzare dati; svolgere analisi esplorative su dataset reali; utilizzare in modo critico strumenti di programmazione assistita dall’AI; collaborare alla realizzazione di progetti computazionali.
Contenuti Del Corso
Introduzione all’informatica e alla programmazione. Pensiero computazionale e scomposizione dei problemi. Variabili, espressioni, funzioni e modularità. Strutture di controllo e iterazione. Strutture dati fondamentali. Algoritmi ed elementi di complessità computazionale. Importazione, pulizia, trasformazione e aggregazione dei dati. Analisi esplorativa e visualizzazione dei dati. Analisi multidimensionale. Introduzione a segmentazione, clustering e sistemi di raccomandazione. Intelligenza Artificiale, Large Language Models e AI-assisted coding. Applicazioni pratiche a problemi reali di analisi e supporto alle decisioni.
Testi Di Riferimento
A. Downey, Think Python (ultima edizione). W. McKinney, Python for Data Analysis (ultima edizione). Ulteriore materiale didattico, dataset, dispense e letture integrative saranno forniti durante il corso.
Metodologie Didattiche
Il corso combina lezioni frontali, live coding, esercitazioni guidate e attività progettuali. I concetti teorici vengono introdotti attraverso esempi pratici e immediatamente applicati a problemi di analisi e decision making. Gli studenti lavorano individualmente e in gruppo su attività supervisionate dai docenti. In alcune attività verranno utilizzati strumenti di AI-assisted coding per evidenziarne opportunità e limiti.
Modalità di verifica dell'apprendimento
La valutazione combina attività di continuous assessment svolte durante il corso (quali quiz, esercitazioni, progetti, partecipazione alle attività didattiche e frequenza) con una prova orale finale. L’esame orale rappresenterà almeno il 50% della valutazione complessiva e sarà finalizzato a verificare la comprensione dei concetti teorici, la capacità di applicarli a problemi pratici e la padronanza degli strumenti e delle tecniche presentate durante il corso. Ulteriori dettagli sulle modalità di valutazione saranno comunicati durante il corso.
Criteri per l’assegnazione dell’elaborato finale
Gli studenti interessati a sviluppare una tesi su temi collegati al corso sono invitati a discuterne con il docente. È possibile valutare progetti che applichino strumenti computazionali, tecniche di analisi dei dati o metodologie di AI a problemi provenienti da diversi ambiti disciplinari. Sono inoltre possibili percorsi di co-supervisione con altri docenti.
Settimana 1
Introduzione al pensiero computazionale. Perché programmare nell’era dell’Intelligenza Artificiale. Introduzione a computer, software, linguaggi di programmazione e ambienti di sviluppo.
Settimana 2
Scomposizione dei problemi e progettazione di algoritmi. Variabili, espressioni, tipi di dato, funzioni e modularità.
Settimana 3
Condizioni, operatori logici e flussi decisionali. Traduzione di regole e processi in programmi.
Settimana 4
Iterazione e automazione. Cicli for e while. Ricerca in sequenze e primi concetti di efficienza algoritmica.
Settimana 5
Stringhe, liste, dizionari, insiemi e altre strutture dati fondamentali. Scelta delle strutture più adatte ai diversi problemi.
Settimana 6
Introduzione all’analisi dei dati. Importazione, pulizia, trasformazione e preparazione dei dataset.
Settimana 7
Analisi esplorativa dei dati. Statistiche descrittive, distribuzioni, outlier e visualizzazione.
Settimana 8
Aggregazione e sintesi dell’informazione. Raggruppamento dei dati e supporto alle decisioni.
Settimana 9
Analisi multidimensionale. Relazioni tra variabili, correlazione e visualizzazione avanzata.
Settimana 10
Introduzione a clustering e segmentazione. Identificazione di pattern e gruppi nei dati.
Settimana 11
Sistemi di raccomandazione e rappresentazione di dati complessi. Applicazioni pratiche.
Settimana 12
Large Language Models e moderni workflow di sviluppo. Prompting, AI-assisted development e riflessioni sul rapporto tra competenze umane e strumenti AI.