CODING IN ACTION LAB

CODING IN ACTION LAB

Stefano Guarino

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.