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

In vista degli orali, mi raccomando una cosa:

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, ma sarà esattamente quello che vi chiederò di fare per la prima mezz’ora di orale 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
Come promesso ho sistemato il tutorial per Controllo di flusso che adesso è diviso in:
Condizionali if else
Cicli for
Cicli while
in più ho aggiunto Sequenze e comprehensions

Di ancora in-progress resta solo il tutorial sulle Funzioni, comunque per quello potete far riferimento alle alternative citate in precedenza
Come materiale complessivo da guardare per l’esame, potete principalmente far riferimento al paragrafo Materiale del corso sezione SoftPython che riporto qui:

SoftPython:
– Fondamenti – TUTTO
        NOTA: il tutorial Funzioni è IN-PROGRESS, trovate
alternative in messaggi precedenti
– Analisi dati – argomenti scelti:
     – formati dati
     – Visualizzazione
     – Pandas
– Applicazioni: solo Database

Nei vari tutorial troverete poi riferimenti ad altro materiale, tipo il libro Pensare in Python e le lezioni di Nicola Cassetta e di Zoppetta. Quelle sono intese come rinforzo per capire i vari argomenti. Per vedere se avete capito un argomento, usate la regola del cronometro: gli esercizi su SoftPython con 3 stelle dovreste riuscire a farli in mezz’ora, se non ce la fate, approfondite altrove (o chiedete !)
Vedi sotto
Ho uploadato i tutorial dizionari1, dizionari2, dizionari3, dizionari4 e dizionari5
Ovviamente gli ultimi sono più complicati: in particolare quelli con gli assert indicano di leggere la guida Gestione errori e testing che potete guardare, è completa. Da finire, mi rimangono i tutorial su Controllo di flusso e Funzioni, ma per il momento per quegli argomenti potete guardare questo altro materiale:

Nicola Cassetta, Lezione 7, le istruzioni condizionali
Pensare un Python, Capitolo 5, Istruzioni condizionali (saltare Ricorsione, dal 5.8 in poi)
Pensare in Python, Capitolo 7, Iterazione
Nicola Cassetta, Lezione 8, L’istruzione while
Nicola Cassetta, Lezione 13, il ciclo for
Pensare in Python, Capitolo 3, Funzioni
Pensare in Python, Capitolo 6, Funzioni produttive puoi fare tutto saltando la parte 6.5 sulla ricorsione. NOTA: nel libro viene usato il termine strano “funzioni produttive” per quelle funzioni che ritornano un valore, ed il termine ancora più strano “funzioni vuote” per funzioni che non ritornano nulla ma fanno qualche effetto tipo stampa a video: ignora e dimentica questi termini !
Nicola Cassetta, Lezione 4, Funzioni
Dopo un mese orribile finalmente sono riuscito a essere operativo per ben un giorno intero

Ho uploadato i tutorial liste1, liste2, liste3, liste4

Allargo anche le modalità per interagire, in ordine di preferenza potete aggiungermi ai contatti su:

Skype: david.leoni.dev
Telegram: DavidLeoni
Zoom: david.leoni@unitn.it
Hangout: david.leoni.work@gmail.com (mi par di capire che gli inviti non arrivino anche quando fatti da account non unitn, quindi gli altri sistemi sono preferibili)

Mi trovate ad ogni ora (giorno o notte, di questi tempi non fa differenza)

Keep resisting,
David
Buongiorno

Vi aggiorno sulle future modalità di svolgimento del seminario Python, a partire da oggi Mercoledì 11 Marzo.

Mi scuso per il ritardo nelle comunicazioni, gli avvenimenti recenti richiedono cambiamenti radicali e non mi era chiarissimo come fornire supporto tecnico da remoto a 30 persone.

Il sito del corso è  davidleoni.it/sps
Al momento non è previsto l’uso di piattaforme particolari come Moodle

Quanto alle lezioni, ho pensato alle alternative:

a) lezioni video sincrone:   scartate, avendole sperimentate da studente non le ho trovate affatto utili, con problemi di connessione a non finire, etc
b) lezioni video asincrone: scartate (per adesso) – non mi sento un grande youtuber , di video di ottima fattura già se ne trovano a volontà in inglese e probabilmente anche qualcosa in italiano
c) scrivere materiale
d) chat/mail per aiutarvi con eventuali dubbi

Visto quanto sopra, preferisco dedicare il mio tempo per:

c) scrivere materiale: sto mettendo per iscritto tutto quanto solitamente dico a voce a lezione

 Per adesso di abbastanza aggiornati che potete iniziare a guardare trovate:
    – tutorial sulle basi
    – tutorial sulle stringhe   
 – all’inizio di ogni tutorial trovate riferimenti altro materiale, come i tutorial di Nicola Cassetta e il libro Pensare in Python . E’ importante che leggiate e facciate esercizi anche su quelli.
 – Per ciascuno dei tutorial potete fermarvi quando arrivate alla sezione “Esercizi con le funzioni”
  
d) chat online: grazie alla quarantena sono praticamente disoccupato, quindi per vostra fortuna dispongo di molto tempo per eventuali domande

Potete contattarmi ad ogni orario provando ad aggiungere l’account david.leoni.work@gmail.com su Google hangout  per chattare (si può usare anche via web), oppure mandatemi una mail, di giorno dovrei poter rispondere abbastanza in fretta.
NOTA: Google Hangout NON funziona con account @studenti.unitn.it, in caso dovete usarne uno @gmail.com personale, se non l’avete scrivetemi e troviamo altre soluzioni.

– quanto a un forum del corso, non so quanto sia utile, l’ho già usato in passato con zero persone che postavano.
– Una chat di gruppo mi sa che diventa presto una tempesta di notifiche, quindi al momento la eviterei

 PRIMA DI INIZIARE:
  – provate tutti ad installare Anaconda per Python 3.7 c
he contiene tutto il necessario (occupa diversi giga), in particolare Python 3, Jupyter e Spyder. Se non potete per limiti di spazio scrivetemi
  – poi probabilmente vorrete Installare questo plugin per vedere meglio la tabella dei contenuti nei fogli in Jupyter (ma non è indispensabile, l’importante è Anaconda)

Per condividere codice con me o tra di voi: Ci sono vari modi, purtroppo ho la sensazione che diversi servizi online siano sovraccarichi, quindi intanto quando serve aiuto contattatemi via mail o chat su hangout e poi troveremo un servizio al momento. Intanto ne elenco qui qualcuno:

Python tutor : permette visualizzazione E condivisione realtime . Inoltre, ha anche un sistema di chat integrato e richiesta aiuto, è molto bello. ho la spiacevole impressione che al momento sia sovraccarico, ma se funziona sarebbe bello usarlo. Se non sapete come usarlo ve lo spiego in chat.

trinket.io : non permette condivisione realtime ma può comunque essere utile

Dato che questo è un esperimento, non è affatto detto che i ragionamenti fatti sopra siano necesseriamente i migliori. Se avete proposte / alternative / obiezioni fatevi pure avanti.

A presto,
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.

PRENOTAZIONE: Potete prenotarvi su questo foglio condiviso DUE appelli quando volete fino al 13 Settembre.

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)

SIMULAZIONI ESAME: Per agevolarvi, nel frattempo possiamo fare simulazioni di esame, in cui partecipate in gruppo (senza voto) e a turno provate a rispondere alle domande. Possiamo provare a vederci una volta in settimana a partire da lunedì 18 Maggio 10:00-12:00 e fino al 15 Giugno incluso su Google Meet al link  meet.google.com/tbj-gbmo-yyd (possono anche proseguire anche dopo, vediamo)
Non è una lezione e la presenza non è obbligatoria, mi dite che cosa avete guardato finora e io vi faccio domande su quello che sapete, restando ovviamente disponibile per chiarimenti. Se volete contattarmi ad altri orari, scrivetemi pure.

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