Seleziona l'Anno Accademico:     2016/2017 2017/2018 2018/2019 2019/2020 2020/2021 2021/2022
Docente
GIULIANO ARMANO (Tit.)
Periodo
Primo Semestre 
Modalità d'Erogazione
Convenzionale 
Lingua Insegnamento
ITALIANO 



Informazioni aggiuntive

Corso Percorso CFU Durata(h)
[60/65]  MATEMATICA [65/50 - Ord. 2020]  MATEMATICA PER LA DIDATTICA E LA DIVULGAZIONE 6 48
[60/65]  MATEMATICA [65/60 - Ord. 2020]  MATEMATICA APPLICATA 6 48

Obiettivi

Il corso intende fornire basi concettuali e conoscenze concrete utili allo studente per la stesura di programmi informatici in ambito matematico e statistico. L'articolazione del corso sarà focalizzata a far acquisire allo studente prima i concetti informativi e le necessarie conoscenze di base su cui si fonda la programmazione moderna, e poi la loro implementazione in un linguaggio di programmazione ad hoc (Python). Si provvederà ad operare in modo da favorire anche il processo dell'elaborazione autonoma delle nozioni e pratiche appresi, con la finalità di creare un substrato utile per la risoluzione di problemi complessi.

Prerequisiti

Non sono richiesti prerequisiti specifici. La conoscenza di uno o più linguaggi di programmazione in ambito imperativo-procedurale è comunque gradita.

Contenuti

Il corso si articolerà come segue: a) cenni sui principali paradigmi di programmazione; b) introduzione al linguaggio Python; c) programmazione matriciale e visualizzazione scientifica in Python; d) librerie di Python per l'elaborazione statistica dei dati e per l'apprendimento automatico.

Più in dettaglio:

a) In relazione ai principali paradigmi di programmazione sarà svolta una breve panoramica finalizzata ad illustrare le caratteristiche distintive della programmazione imperativo-procedurale, di quella dichiarativa, di quella funzionale, e di quella orientata agli oggetti. Maggiore spazio sarà lasciato alla descrizione della programmazione orientata agli oggetti. [4h]

b) In questa parte saranno introdotte le caratteristiche principali del linguaggio Python. In particolare saranno svolti in sequenza i seguenti argomenti: tipi di dati (con liste, tuple e dizionari), strutture di controllo, funzioni e passaggio di parametri. Saranno introdotti anche i concetti di iteratore e generatore. Successivamente saranno illustrate le modalità con cui Python implementa la programmazione orientata agli oggetti --con particolare riferimento ai concetti di classe, oggetto, metodo, ereditarietà, e polimorfismo. Saranno fatti anche brevi cenni sull'overloading di operatori. [8+4 ore]

c) La parte su programmazione matriciale e visualizzazione scientifica in Python sarà incentrata sulle caratteristiche e l'uso delle librerie numpy (vettori e matrici) e matplotlib (visualizzazione scientifica). Saranno fatti anche brevi cenni su modalità avanzate di gestione dei dataframe (tramite Pandas) e su ulteriori librerie per la visualizzzione scientifica (seaborn e bokeh). [6+8 ore]

d) In quest'ultima parte del corso saranno introdotte alcune librerie per l'elaborazione statistica dei dati (scipy, Pandas) e per l'apprendimento automatico (sklearn, keras). Sarà anche illustrata brevemente l'applicazione denominata Orange, scritta in Python, che consente di sviluppare applicazioni di statistica e data mining senza la necessità di dover ricorrere alla programmazione esplicita di codice. [6+10 ore]

Metodi Didattici

La didattica sarà svolta bilanciando opportunamente la teoria con esercitazioni e attività laboratoriali. In particolare, con l'eccezione dei principali concetti informativi, ogni aspetto legato agli strumenti illustrati dovrà essere opportunamente messo in pratica. Si fa l'ipotesi che la didattica sarà erogata contemporaneamente sia in presenza sia online, delineando dunque una didattica mista che possa essere fruita nelle aule universitarie ma al contempo anche a distanza. Ogni studente, all'inizio del semestre potrà optare, con scelta vincolante, per la didattica in presenza o a distanza. In funzione della disponibilità delle aule e del numero di studenti che opteranno per la modalità in presenza, potrà essere prevista una turnazione per l'effettivo accesso in aula. In ogni caso tutti gli studenti dovranno poter disporre di strumenti adeguati per effettuare esercitazioni e attività laboratoriali. In merito alla presenza nei laboratori, sulla base della situazione effettiva e delle decisioni prese dall'Ateneo in materia di lotta alla pandemia Covid-19, potranno eventualmente essere effettuate turnazioni e/o attività sostitutive on-line.

Verifica dell'apprendimento

La modalità di verifica sarà effettuata in forma scritta. Il risultato dello scritto dovrà essere integrato da una prova al calcolatore oppure dallo svolgimento di una tesina di programmazione. Sulla base della situazione effettiva e delle decisioni prese dall'Ateneo in materia di lotta alla pandemia Covid-19, potranno anche essere utilizzate modalità di verifica alternative mediante supporti online. Non sono previste prove intermedie.

Testi

- O'Reilly, Alex Martelli, Anna Ravenscroft, Steve Holden, Python in a Nutshell, 2017.
- Mark Pilgrim, Dive into Python 3 [in inglese, online su GitHub]
- Allen B. Downey, Pensare in Python - Come pensare da informatico (seconda edizione) [anche online].

Altre Informazioni

Il link Web contenente il programma del corso, le slide, nonché ogni notizia riguardante il corso stesso sarà reso noto nel corso della prima lezione effettiva.

Questionario e social

Condividi su: