Seminari Python @Sociologia

Relatore :    David Leoni     david.leoni.work@gmail.com
Docente proponente: Ivano Bison
Edizione: 2020 Marzo/Aprile/Maggio/Giugno
Sede: Dipartimento di Sociologia e Ricerca Sociale, Università di Trento
Via Giuseppe Verdi 26, Trento
Sito del corso :     davidleoni.it/sps
Locandina
Modalità esame
Materiale del corso
Esami passati
Ricevimento
Sondaggio gradimento

NEWSCLICCA per annunci completi

Leggendo SoftPyhton vi sarete accorti che c’è una quantità spropositata di sezioni intitolate ‘Domande’ (esempio) tipo “Guarda i seguenti frammenti di codice, e per ciascuno cerca di indovinare quale risultato produce (o se da errore)”. Non sono lì a caso: le ho aggiunte perchè ho notato che molto spesso ci si porta all’esame dubbi che poi risultano in tempi lunghissimi passati a debuggare il codice.

Il modo corretto per rispondere a quelle domande è prima scrivere (scrivere con le dita, non pensare!) da qualche parte quello che ritenete sia il risultato che verrà prodotto, e POI provare ad eseguire il codice per sincerarsi che il risultato pensato sia corretto. Per quanto semplici possano sembrare, vi garantisco che avrete parecchie sorprese. 

Lo so che potrebbe anche apparire noioso, sarà esattamente quello che vi chiederò di fare per la prima mezz’ora quindi imparate a farlo bene.

Nella seconda metà vi chiederò di implementare funzioni. Se fate errori, non è un problema (in informatica come nella vita, quasi niente funziona al primo colpo), l’importante è che mi mostriate che sapete debuggarle e trovare in tempi ragionevoli i problemi. Quindi imparate ad aiutarvi: per esempio, quando qualcosa non funziona in qualche linea, sentitivi liberi di metterci prima una print.

Come editor per l’esame, useremo repl.it  – Non  vi lascerò usare Python Tutor, quindi ripeto imparate a debuggare le funzioni mettendo delle print in giro.

Ricordo che tra gli argomenti di esame vi saranno:

SoftPython:
– Fondamenti – TUTTO
– Analisi dati – argomenti scelti:
     – formati dati
     – Visualizzazione
     – Pandas
– Applicazioni: solo Database

David

Orario e contenuti

Vedi Google Calendar

lunedì 24 Febbraio ore 10:00-13:00
SALTATA

lunedì 2 Marzo ore 10:00-13:00
Basi Python
strumenti, variabili, tipi booleani, numerici, esempi applicazioni
slide intro
– SoftPython: Basi

lunedì 9 Marzo ore 10:00-13:00
Stringhe
– SoftPython stringhe 1, stringhe 2, stringhe 3, stringhe 4
– SoftPython: liste 1, liste 2, liste 3, liste 4
Pensare in Python, Capitolo 10, Liste Esercizi 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7
Nicola Cassetta, Lezione 11, Liste In particolare esercizio 11.1 e 11.2
– Capitolo 10 Pensare in Python
— Es 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7
– Lezione 11 Nicola Cassetta
— In particolare Esercizio 11.1 e 11.2
Esercizi Zoppetti 03 Tipi di base – Liste fino a find_indeces incluso

lunedì 16 Marzo ore 10:00-13:00
Tuple, Insiemi, Dizionari
– SoftPython: Tuple
– SoftPython: Insiemi
– SoftPython: dizionari1, dizionari2, dizionari3, dizionari4 e dizionari5
– Capitolo 11 Pensare in Python
Esercizi Zoppetti 05 Tipi di base – set e dizionari tutti
– Capitolo 12 Pensare in Python
File
– Capitolo 13 Pensare in Python
– SoftPython: Formati dati (fino a file a linee incluso)

lunedì 23 Marzo ore 10:00-13:00
Controllo di flusso (if, for, while)
– SoftPython: Condizionali if else
– SoftPython: Cicli for
– SoftPython: Cicli while

Capitolo 7 Pensare in Python
Lezione 8 Nicola Cassetta (Fare esercizi)
Lezione 9 di Nicola Cassetta (Fare esercizi)

lunedì 30 Marzo ore 10:00-13:00
Sequenze, Funzioni, gestione errori e testing
– SoftPython: Sequenze e comprehensions
– SoftPython: Funzioni
Capitolo 3 Pensare in Python
Lezione 4 Nicola Cassetta (Fare esercizi)

Funzioni con valori di ritorno, iterazione
Capitolo 6 Pensare in Python ‘Funzioni produttive’
Lezione 4 Nicola Cassetta (Fare esercizi)
NOTA 1: il libro chiama le funzioni con valori di ritorno Funzioni produttive, e le funzioni senza valori di ritorno funzioni nulle, ma nessuno usa questa terminologia !
NOTA 2: il libro tratta le funzioni ricorsive usando come esempi fattoriale e fibonacci . Tipicamente in Python non si scrivono funzioni ricorsive, quindi non ve le chiederò all’esame. In questo corso potete limitarvi a provare la fattoriale e fibonacci in Python Tutor e vedere che succede.
Se un giorno vorrete analizzare big data con framework scritti in programmazione funzionale tipo Apache Spark (come al master Data Science ..), allora sarà il caso di comprendere meglio la ricorsione

Eccezioni, assert
SoftPython: Gestione errori e testing
– Lezione 19 Nicola Cassetta


giovedì 16 Aprile ore 10:00-13:00
Esame intermedio

giovedì 23 Aprile ore 10:00-13:00
Matrici: liste di liste
Intro matrici
– formato liste di liste
SoftPython: Matrici – liste di liste (no numpy)
– esempio applicazioni:
— display immagini, codifica RGB, esempio AstroPi (da fare online)
— rappresentazione relazioni: grafi sociali
Esercizi Zoppetti 03 Tipi di base – Liste dopo identity_matrix inclusi

giovedì 30 Aprile ore 10:00-13:00
Formati dati (a linee, CSV)
SoftPython: Formati dati

giovedì 14 Maggio ore 10:00-13:00
Numpy
– SoftPython: Matrici Numpy
– Esercizi Zoppetti 12, Numpy Base
– Approfondimenti: Python Data Science Handbook – numpy

giovedì 21 Maggio ore 10:00-10:00
Visualizzazione
SoftPython: Visualizzazione
– Formattazione testo in Jupyter:
SoftPython: Markdown

Ultima lezione: data da definire
Analisi dati con Pandas
– SoftPython: Analisi dati con Pandas (AstroPi + meteo)

Materiale del corso

Sito SoftPython di David Leoni
– Fondamenti – TUTTO
– Analisi dati – argomenti scelti:
Formati dati
Visualizzazione
Pandas
– Applicazioni: solo Database

Libro Pensare in Python (Think Python) seconda edizione, di Allen B. Downey
– Passo passo, molto discorsivo, adatto a principianti
– contiene esercizi, fateli
versione online
zip offline
PDF

Sito Tutorial Python di Nicola Cassetta
– Contiene esercizi utili, fateli

Corso Python 3 di Nicola Zoppetti
– contiene parecchi esercizi, fateli !

Sito W3resources:
– contiene parecchi esercizi facili in su basi Python, fateli
Basic1, Basic2, String, List, Dictionary, Tuple, Sets, Condition Statements and Loops, Functions, Lambda, CSV Read Write

Libro Passo dopo passo impariamo a programmare con Python
– di Aurora Martina, Angelo Raffaele Meo, Clotilde Moro, Mario Scovazzi
– espone argomenti di base di Python in modo molto dettagliato e contiene diversi esercizi facili. E’ inteso per ragazzini delle medie, ma non fatevi ingannare dalla grafica fumettosa: il materiale per i più giovani tende spesso ad avere il gran pregio di non lasciare nulla al caso.
– attenzione che è solo per Python 2, quindi se vedete print “Ciao” voi dovete scriverlo print(“ciao”) con le tonde
– il libro usa parecchio il comando input per chiedere dati all’utente, noi non l’abbiamo visto perchè in Jupyter tende a non funzionare bene. Conviene provarlo scrivendo script in Spyder, e inserendo le risposte nella tab dell’interprete
– EXTRA: se volete divertirvi, in fondo contiene anche tutorial su come creare giochi con pygame

Corso Scientific Programming Master Data Science, Trento (in inglese):
la parte A del corso ripercorre ciò che facciamo ai seminari quindi non serve guardarla, in più però potete trovare qualche testo d’esame che *dovreste* essere in grado di fare – sono più difficili di quelli che avrete alla triennale ma provarli già adesso è decisamente utile, in più offrono anche una panoramica su diversi tematiche con dati reali. Il formato sono fogli Jupyter simili a quello che trovate su SofyPython.
– 17/07/2020: NACE codes
– 16/06/2020: Zoom surveillance
– 07/11/2019: Eventi Comune di Trento
– 31/10/2019: Offerte lavoro EURES
– 26/08/2019: Staff Università of Trento
– 02/07/2019: Botteghe storiche
– 10/06/2019: Case ITEA e qualità dell’aria
– 13/11/2018: Matrici e numeri di telefono

Geeks for Geeks (in inglese)
Contiene molti esercizi – non ha soluzioni nè assert specifici ma se fate il login e spedite soluzioni, il sistema eseguirà dei test sul server e vidarà un repsonso.

Esempio: Filtra difficoltà per school+basic+easy con topic String

Potete selezionare molti più topic cliccando more>> in Topic Tags:

Introduction to Scientific Programming with Python (inglese) di Joakim Sundnes
– Introduzione con focus sul calcolo numerico, potete guardare i primi 7 capitoli fino ai dizionari.
PDF per Python (solo teoria)
Esercizi di accompagnamento – utili, anche se alcuni sono troppo ingegneristici per il taglio del nostro corso
– EXTRA: se volete approfondire, contiene anche capitoli sulle classi che sono certamente utili.

Guida Introduttiva a Python 3 guida ufficiale, traduzione di Maurizio Da Lio
– presenta vari argomenti (ma senza esercizi)
PDF

APPROFONDIMENTI: Il materiale seguente non è necessario ai fini della comprensione del corso, ma è un punto di partenza per ulteriori approfondimenti personali
– EXTRA: libro Immersione in Python 3 (traduzione in italiano di Dive Into Python 3 di Mark Pilgrim). Contiene approfondimenti per un uso pratico di Python, in particolare per lettura/scrittura su file, ma non ha esercizi.
– EXTRA: Corso Scientific programming (inglese), Graph formats e Visualization per basi su come analizzare e visualizzare reti (di trasporto, sociali, etc) usando matrici o dizionari di liste. Guardare anche esami (difficilotti): 2019/01/23 Bus stops, 10/02/2020 WordNet , 2020/01/23 Metamath

Modalità esame

Visto che quest’anno siamo online possiamo provare un orale individuale da max 1h per ciascuno in cui:

1. Collegatevi al meet.google.com/tbj-gbmo-yyd
2. vi chiederò di identificarvi con carta identità e condividere lo schermo
3. inizio con domande semplici  (es: cosa stampa  print([1,2].append(3))  )  come quelle che trovate nei tutorial che vi ho mandato – per queste prime domande data la semplicità mi aspetto che siate in grado di rispondere anche senza dover consultare manualistica / eseguire codice – se non sapete rispondere alla maggior parte, l’orale fallisce.
4. vi do un link su qualche editor Python online ( tipo repl.it)  e vi chiedo di implementare qualche funzione – qua se non vi ricordate sintassi / nomi di funzioni / etc è lo stesso, potete anche andare a consultare quanto indicato nel materiale del corso  l’importante è che mi mostriate che sapete come muovervi davanti a un problema nuovo – se incontrate ostacoli, posso darvi qualche aiutino.

Gli appelli concessi sono due perchè gli studenti che mi chiedono il terzo appello di solito sono anche quelli che arrivano ai primi due e palesemente non hanno alcuna idea di come si scriva un programma. Esercizi da fare ne avete e sicuramente anche un cronometro,  quindi penso potete ben valutare da voi quando è il caso di presentarsi. Per dare un idea, mi aspetto che per ciascuno esercizio negli ultimi tutorial (es dizionari5, matrici liste di liste) ci mettiate max 30 min. Vedere anche sezione esami passati sul sito del corso (gli anni scorsi era scritto)


PER CHI E’ RIMASTO INDIETRO: Cominciate a studiare da subito, anche se intendete dare appelli a Settembre. Capisco ben che stare tutto il giorno davanti al pc non sia salutare (ne so qualcosa!), ma purtroppo i tempi accademici sono questi e la programmazione non è qualcosa che si impara la settimana prima dell’esame. Io vi ho avvisato ..

La partecipazione al seminario per almeno al 75 % delle ore di lezione (=27h = 9 lezioni su 12) e lo svolgimento del lavoro assegnato dal docente (Esame finale) determineranno l’attribuzione di 6 CFU (crediti formativi universitari) in INF/01.

  • L’esame sarà open book, se volete potete portarvi stampe del materiale sopracitato e le slide del corso, più la documentazione ufficiale di Python 3. Questo materiale sarà comunque anche disponibile nei computer del laboratorio.
  • L’esame sarà svolto sui computer di laboratorio, senza connessione internet. Non sarà possibile usare il computer personale. Se proprio non sopportate la tastiera del laboratorio, potete portarvene una vostra.
  • Molto probabilmente gli esercizi dell’esame saranno versioni leggermente modificate di esempi presi dal libro Pensare in Python, dai tutorial di Nicola Cassetta, o dagli esempi visti in classe, quindi se vi fate tutte la parti indicate avrete ottime probabilità di passare l’esame.

Esami passati

21 giugno 2019 : Risultati | Correzioni | Testo + soluzioni
5 giugno 2019 : Risultati | Correzioni | Testo + soluzioni

AA 2018/19: Vedere esami seminari Fondamenti Python e Algoritmi Python 2018. Differenze per quest’anno:
– l’esame sarà un po’ più difficile
– ci saranno anche esercizi su Numpy e Pandas

Ricevimento

Per orari / luoghi ricevimento, vedere qui.

Se per caso avete progetti in altri corsi o interesse personale per cui volete usare Python, sono disponibile a dare indicazioni.

In particolare, posso offrire aiuto per

  • Installazione
  • Comandi Python base
  • Errori logici
  • Lettura / conversione dati
  • Formati (CSV / JSON / XML / HTML)
  • Cercare dataset
  • Tutorial
  • Licenze dati & software

Difficile aiutare per

  • librerie particolari (i.e. rotazione bracci robotici con 80 gradi libertà …)
  • statistiche avanzate
  • visualizzazioni incredibili in 3d

Sondaggio gradimento corso

Si possono inviare commenti, suggerimenti, critiche anonime a questo link