CODING IN ACTION LAB (MODULE I)

CODING IN ACTION LAB (MODULE I)

Stefano Guarino

Obiettivi formativi

Il corso ambisce a fornire una comprensione del cosiddetto "pensiero computazionale" e un insieme di abilità di programmazione di base, utili in diversi contesti applicativi. Gli studenti impareranno prima come utilizzare la shell per dare istruzioni da riga di comando. Apprenderanno quindi le basi della programmazione, scoprendo come concetti comuni a tutti i linguaggi sono implementati in Python. Python è un linguaggio semplice da imparare ma estremamente flessibile e potente. Attraverso un metodo di insegnamento basato sull'alternanza tra lezioni frontali e sessioni di lavoro in gruppo, gli studenti impareranno come affrontare un problema di programmazione in completa autonomia e a collaborare con altri pari.

Risultati di apprendimento attesi

Conoscenza e comprensione: Il corso introdurrà gli studenti a bash, un linguaggio di scripting specifico della shell, rendendoli familiari con i comandi e la loro sintassi di chiamata. Fornirà agli studenti una comprensione delle principali strutture dati e dei flussi di controllo, per poi affrontare alcuni problemi comuni che includono la lettura di dati, l'importazione di pacchetti, la scrittura di funzioni e il debug. Entro la fine di questo corso, gli studenti acquisiranno una solida comprensione di come utilizzare la libreria standard Python per scrivere programmi, creare funzioni e classi, scrivere e accedere a moduli esterni. Oltre agli aspetti tecnici, le particolari modalità di apprendimento forniranno agli studenti importanti strumenti per capire come i problemi sono risolti in un ambiente professionale: come gestire un progetto, trovare le risorse necessarie per completarlo, lavorare in gruppo, chiedere aiuto o fornirlo ad altri. Applicare conoscenza e comprensione: Questo corso insegnerà agli studenti come: • Utilizzare un'interfaccia da riga di comando per esplorare un file system e accedere ai dati • Utilizzare i principali tipi di dati (stringhe, liste, dizionari e altro) • Implementare i flussi di controllo (istruzioni if-then, cicli while e for) • Organizzare codice (funzioni, moduli, pacchetti) • Leggere e scrivere dati da file locali (.txt, .csv, .json, ecc.) Esprimere giudizi: Al termine del percorso formativo gli studenti saranno in grado di: • Scomporre un problema in sottoproblemi più facili da risolvere • Cooperare con altri studenti per risolvere un problema di programmazione suddividendosi i compiti • Progettare semplici algoritmi per risolvere problemi di programmazione comuni • Identificare la struttura dati più adatta per l'attività in corso Capacità di comunicazione: Per completare il corso, gli studenti dovranno lavorare in gruppo, collaborare con la comunità per superare le sfide e condividere la loro esperienza con i loro pari. Ciò stimolerà le loro capacità comunicative in relazione a tutti gli aspetti della programmazione: descrivere un problema, discutere delle criticità, chiedere aiuto, spiegare un algoritmo, commentare il codice. Capacità di apprendimento: Il metodo di insegnamento innovativo costringerà gli studenti a trovare le risposte da soli o a chiedere agli altri studenti. A loro volta, sarà spesso chiesto loro di trasmettere nozioni a qualcun altro. Questo metodo consente agli studenti di affinare le proprie competenze attraverso la ricerca, la sperimentazione e la difesa del proprio approccio personale a un determinato problema.

Contenuti Del Corso

Il corso tratterà i seguenti aspetti della programmazione informatica: • Introduzione alla programmazione: architetture informatiche; memoria e dati; CPU e programmi; linguaggi di programmazione; problemi, algoritmi e programmi. • Le basi delle interfacce da riga di comando e del linguaggio di scripting bash. • Come utilizzare l'interprete Python: richiamare l'interprete; passaggio di argomenti; modalità interattiva; i notebook; piattaforme di codifica online. • Concetti base della programmazione Python: variabili e assegnamenti; espressioni ed istruzioni; operazioni; stampa; commenti; debugging; tipi di dati; numeri e stringhe; input. • Funzioni: funzioni builtin; chiamate di funzione; importazione di moduli e funzioni; funzioni matematiche; composizione di funzioni; definire nuove funzioni; parametri e argomenti; argomenti obbligatori e facoltativi; ordine degli argomenti e assegnazione delle parole chiave; ambito di una variabile. • Prendere decisioni: espressioni booleane e operatori logici; esecuzione condizionale e alternativa; costrutto if-elif-else; condizionali concatenati e annidati. • Iterazioni: riassegnazione e aggiornamento delle variabili; costrutto while; istruzione break; sequenze e cicli; l'operatore in; costrutto for. • Strutture dati (stringhe, liste, tuple, dizionari): definizione, proprietà, operazioni e metodi; indicizzazione vs assegnazione; mutabilità e immutabilità; map, flter e reduce; referenziazione e aliasing; impacchettamento spacchettamento; ricerca e ricerca inversa; argomenti di lunghezza variabile. • File: persistenza; apertura e chiusura e costrutto with; lettura e scrittura; operatore format; nomi di file e percorsi; catturare le eccezioni; pickling. • Moduli e pacchetti: definizione di un modulo; definire un pacchetto; importazione di un pacchetto vs. importazione di un modulo vs. importazione di una funzione; installazione di pacchetti.

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 in tramite lezioni frontali sarà arricchito da un programma basato sulla risoluzione dei problemi. Gli studenti dovranno realizzare progetti da soli o in gruppo e discuterli con l'insegnante e con altri studenti, che non hanno necessariamente progredito allo stesso ritmo. Gli studenti dovranno 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

Durante il corso, agli studenti verrà fornito un set di progetti che devono completare in gruppo per poter progredire nel corso e superare con successo l'esame. Questi progetti dovranno essere discussi con il docente in un esame orale.

Criteri per l’assegnazione dell’elaborato finale

Non è previsto l'assegnamento di un elaborato finale

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, tutti 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.