CODING IN ACTION LAB (MODULE II)
Obiettivi formativi
Questo corso si basa sul lavoro svolto durante il primo modulo del Coding in Action Lab. Il corso copre argomenti più avanzati della programmazione come la programmazione orientata agli oggetti, il costo computazionale e l'efficienza di un programma e il cosiddetto "Pythonic programming". Il corso introduce inoltre 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".
Risultati di apprendimento attesi
Conoscenza e comprensione:
Entro la fine di questo corso, gli studenti impareranno cos'è la programmazione orientata agli oggetti e come questo paradigma di programmazione è implementato in Python. 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.
Contenuti Del Corso
Il corso tratterà i seguenti aspetti della programmazione informatica:
• Classi e oggetti: classi, tipi, oggetti e istanze; istanze come valori di ritorno; attributi e metodi; mutabilità degli oggetti; l'istanziamento e il metodo __init__; overloading di un operatore e metodi speciali; metodi statici e metodi di classe; ereditarietà.
• Pythonic programming: espressioni condizionali; EAFP (Easier to Ask for Forgiveness than Permission); list comprehension; generator expressions; operatori any e all; insiemi.
• Programmazione scientifica: Numpy, array e broadcasting; Panda, dataframe e serie; Scikit Learn e introduzione al machine learning con Python; Matplotlib e visualizzazione dati in Python
Testi Di Riferimento
Allen B. Downey, “Think Python: How to Think Like a Computer Scientist (2nd Edition)”, O’Reilly, ISBN-13: 978-1491939369
Metodologie Didattiche
L'insegnamento frontale tradizionale sarà il metodo di insegnamento principale, ma verranno presi in considerazione alcuni casi di studio che gli studenti dovranno affrontare in autonomia, da soli o in gruppo, in linea con il paradigma del “learning by doing”. La partecipazione degli studenti durante le lezioni è fortemente incoraggiata.
Modalità di verifica dell'apprendimento
La valutazione di questo corso si baserà su una combinazione di progetti di programmazione da svolgere durante le settimane di corso (70%) e di un esame finale (30%). L'esame finale sarà composto da un quiz a risposta multipla.
Tutti gli elaborati relativi a problemi di programmazione saranno valutati come segue:
• Se il codice fornisce la risposta corretta utilizzando l'approccio richiesto: 100%
• Se generalmente utilizza l'approccio corretto, ma la risposta è errata a causa di alcuni piccoli errori: 70-90%
• Se utilizza correttamente i concetti fondamentali e fa qualche progresso nel tentativo di risolvere il problema: 40-60%
• Se la risposta dimostra una mancanza di comprensione di alcuni o tutti i concetti fondamentali: 0-40%
A discrezione del docente, agli studenti può essere chiesto di fornire una descrizione completa del proprio codice.
Criteri per l’assegnazione dell’elaborato finale
Non è prevista l'assegnazione di tesi
Il syllabus affronta temi collegati alla sostenibilità?
No
Settimana 1
Classi e oggetti: classi, tipi, oggetti e istanze
Settimana 2
istanze come valori di ritorno; attributi e metodi; mutabilità degli oggetti
Settimana 3
l'istanziamento e il metodo __init__; overloading di un operatore e metodi speciali
Settimana 4
metodi statici e metodi di classe; ereditarietà.
Settimana 5
espressioni condizionali; EAFP (Easier to Ask for Forgiveness than Permission)
Settimana 6
list comprehension; generator expressions; operatori any e all; insiemi.
Settimana 7
Numpy, array e broadcasting
Settimana 8
Panda, dataframe e serie
Settimana 9
Scikit Learn e introduzione al machine learning con Python (1/2)
Settimana 10
Scikit Learn e introduzione al machine learning con Python (2/2)
Settimana 11
Matplotlib e visualizzazione dati in Python
Settimana 12
Ripasso finale ed esercizi