CODING IN ACTION LAB (MODULE II)
Obiettivi formativi
Questo corso si basa sul lavoro svolto durante il primo modulo del Coding in Action Lab.
Nella prima fase, il corso introduce i concetti di costo computazionale e di efficienza di un programma, illustra alcune buone prassi per scrivere codice leggibile, organizzato ed efficiente, e presenta i principali strumenti per l'elaborazione, l'analisi e la visualizzazione dei dati disponibili in Python, uno dei linguaggi di programmazione di riferimento nel mondo della "data science".
Nella seconda fase, il corso si concentra sulle principali tecniche di elaborazione e analisi dati: acquisizione, pulizia e preprocessamento dei dati; analisi statistica e visualizzazione dati; clustering e classificazione.
Infine, gli studenti affronteranno 2 problemi concreti utilizzando dati reali: segmentazione della clientela, e definizione di un sistemi di raccomandazione.
Risultati di apprendimento attesi
Conoscenza e comprensione:
Entro la fine di questo corso, gli studenti capiranno che un buon programma risolve il compito dato utilizzando la minor quantità possibile di risorse. Impareranno la sintassi specifica di Python e le migliori pratiche necessarie per rendere la programmazione più veloce e aumentare le prestazioni. Inoltre, gli studenti impareranno come utilizzare, a livello introduttivo, i più noti pacchetti Python per l'analisi e la visualizzazione dei dati: NumPy, Pandas, Scikit-learn e Matplotlib.
Al termine del corso, gli studenti conosceranno i concetti principali dell'analisi dei dati e comprenderanno l'importanza di utilizzare algoritmi adeguati per estrarre tendenze e modelli dai dati, combinando tecniche di data mining, modellazione predittiva e apprendimento automatico.
Il corso insegnerà agli studenti a utilizzare un approccio alla risoluzione dei problemi e al processo decisionale basato sui dati, promuovendo il loro pensiero critico e la loro capacità di lavorare da soli o in gruppo.
Applicazione delle conoscenze e della comprensione:
Per verificare la comprensione dei concetti visti in classe, agli studenti verranno assegnati progetti che richiedono di trattare dati reali. Verrà chiesto loro di:
- manipolare ed elaborare rapidamente grandi insiemi di dati attraverso dataframe e array
- Visualizzare dati e funzioni
- Operare analisi descrittive e modellizzazioni di base (statistiche, istogrammi, interpolazione, clustering, fitting).
Il corso preparerà gli studenti a corsi più avanzati di analisi dei dati e li renderà pronti a completare progetti in altri corsi che richiedono un approccio computazionale ai dati.
Formulare giudizi:
Al termine del programma di studio, gli studenti saranno in grado di:
- confrontare semplici algoritmi che risolvono lo stesso compito in termini di costo computazionale
- Affrontare un semplice progetto di analisi dei dati
Abilità comunicative:
Una volta a conoscenza dei concetti di efficienza computazionale e di memoria e alla loro formalizzazione, gli studenti capiranno che il "costo" della soluzione di un problema può essere quantificato ed espresso con precisione.
Attraverso esempi, casi di studio e progetti, gli studenti impareranno a comunicare i risultati di un'attività di analisi dei dati e a giustificare la scelta di specifici algoritmi, metodi e tecniche.
Capacità di apprendimento:
Gli studenti saranno introdotti a una serie di librerie avanzate/professionali per l'analisi dei dati. Alla fine del corso, saranno in grado di navigare autonomamente nella libreria standard di Python e nel web per trovare le librerie e gli strumenti giusti per svolgere un determinato compito.
Contenuti Del Corso
Il corso tratterà i seguenti aspetti della programmazione informatica:
• Principi di complessità computazione, efficienza di un algoritmo
• Pacchetti per la programmazione scientifica: Numpy, Panda, Scipy, Scikit Learn, Matplotlib
• Ingestione, pulizia e preelaborazione dei dati. Visualizzazione di distribuzioni statistiche. Analisi di correlazione, modelli di regressione e clustering. Segmentazione dei clienti e modello RFM. Sistemi di raccomandazione.
Testi Di Riferimento
Allen B. Downey, “Think Python: How to Think Like a Computer Scientist (2nd Edition)”, O’Reilly, ISBN-13: 978-1491939369
Hastie, T., Tibshirani, R., Friedman, J. H., & Friedman, J. H. (2009). The elements of statistical learning: data mining, inference, and prediction (Vol. 2, pp. 1-758). New York: springer.
VanderPlas, J. (2016). Python data science handbook: Essential tools for working with data. " O'Reilly Media, Inc.".
Shmueli, G., Bruce, P. C., Gedeck, P., & Patel, N. R. (2019). Data mining for business analytics: concepts, techniques and applications in Python. John Wiley & Sons.
Metodologie Didattiche
Durante il corso l'insegnamento frontale sarà utilizzato per presentare agli studenti i nuovi argomenti. Per ogni argomento, verranno quindi considerati alcuni esempi e casi di studio che gli studenti dovranno affrontare in autonomia, in gruppo, in linea con il paradigma del “learning by doing”. Un programma basato sulla risoluzione dei problemi (e sulla discussione degli stessi in sede d'esame) obbligherà gli studenti a motivare le loro scelte, spiegando perché hanno deciso di risolvere il progetto in un modo specifico. Questi momenti aiutano a consolidare l'apprendimento personale e a condividere le conoscenze con la comunità. L'intelligenza collettiva, che consente alle buone pratiche di emergere e ai gruppi di avanzare, gioca un ruolo importante in questo metodo di insegnamento.
Agli studenti viene chiesto di pensare da soli davanti a un computer. In tale circostanza, sbagliare non sarà penalizzato, ma considerato parte di un percorso di apprendimento. Il personale pedagogico sarà a disposizione per aiutare gli studenti a trovare le proprie soluzioni.
Modalità di verifica dell'apprendimento
La valutazione di questo corso si baserà sulla risoluzione in gruppo di progetti di programmazione da svolgere durante le settimane di corso e da discutere con il docente in un esame orale.
Criteri per l’assegnazione dell’elaborato finale
Non è prevista l'assegnazione di tesi
Settimana 1
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 2
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 3
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 4
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 5
Trattandosi di un corso organizzato nel GAP, tutTrattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.ti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 6
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 7
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 8
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 9
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 10
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 11
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.
Settimana 12
Trattandosi di un corso organizzato nel GAP, tutti i contenuti del corso, illustrati in precedenza, saranno concentrati in 2 settimane di lezione.