B1703 - INTRODUZIONE ALLA PROGRAMMAZIONE (LM)

Anno Accademico 2023/2024

  • Docente: Giovanni Colavizza
  • Crediti formativi: 12
  • SSD: INF/01
  • Lingua di insegnamento: Italiano
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Bologna
  • Corso: Laurea Magistrale in Dati, metodi e modelli per le scienze linguistiche (cod. 5946)

Conoscenze e abilità da conseguire

Al termine del corso, lo studente possiede il necessario background informatico ed una appropriata conoscenza dei linguaggi di programmazione. Sa utilizzare le conoscenze acquisite per progettare autonomamente algoritmi e strutture dati. Sa lavorare in modo autonomo, ma anche inserirsi in un gruppo di lavoro.

Contenuti

Risultati dell'apprendimento

L'introduzione alla programmazione fornisce agli studenti le basi della programmazione informatica in Python.

Dopo aver completato questo corso, lo studente è in grado di:

  • Comprendere i concetti di base della programmazione informatica generali ai linguaggi di programmazione.

  • Applicare le competenze di programmazione per affrontare una varietà di compiti pratici.

  • Applicare le competenze di programmazione per creare analisi realistiche e piccole applicazioni.

  • Selezionare e riutilizza le risorse di programmazione esistenti per il linguaggio Python.

  • Comprendere e applicare le competenze fondamentali di programmazione alla linguistica.

Contenuti del corso

Le competenze di programmazione sono sempre più richieste: ci consentono di sviluppare applicazioni adeguate per l'elaborazione e l'analisi dei dati linguistici, su larga scala. Questo corso insegna le competenze fondamentali di programmazione utilizzando Python, un popolare linguaggio di programmazione. Le competenze acquisite durante il corso consentiranno agli studenti di ottenere il massimo dai numerosi corsi più avanzati del programma.

L'obiettivo pratico è mostrare agli studenti 1) quando e come è possibile e consigliabile automatizzare un'attività o analizzare i dati in modo programmatico; 2) come sviluppare applicazioni personalizzate, anziché affidarsi solo a quelle già pronte. A tal fine, il corso introduce concetti fondamentali di programmazione (variabili, tipi di dati, controllo di flusso, funzioni, input/output), tecniche e risorse specifiche per la linguistica (stringhe, espressioni regolari, file di testo) ed estensioni utili focalizzate sull'analisi dei dati e sulla visualizzazione, manipolazione numerica, scansione Web e query API.

La suddivisione degli argomenti è la seguente:

Parte I (settimane 1-5): Fondamenti di Python
  1. Perché è necessario sapere come programmare. Nozioni di base su funzionamento di un computer, algoritmi, computabilità e linguaggi di programmazione.

  2. Configurazione dell'ambiente e primi passi con i notebook.

  3. Variabili, tipi di dati di base, conversione di tipi, libreria standard.

  4. Strutture dati di base.

  5. Controllo del flusso.

  6. Funzioni, lettura/scrittura file.

  7. Testare e ‘loggare’ il codice, la documentazione.

Parte II (settimane 6-10): Python per la linguistica
  1. Tutto sulle stringhe.

  2. Espressioni regolari.

  3. File di testo, codifiche e formati di file utili.

  4. Array e matrici con numpy.

  5. Ottenere dati dal Web e utilizzare le API.

  6. La tua prima pipeline di analisi e visualizzazione dei dati (pandas, matplotlib, seaborn).

  7. Programmazione ad oggetti (cenni)

Questo elenco di argomenti è provvisorio e potrebbe ancora cambiare leggermente.

 

 

Testi/Bibliografia

Si consigliano le seguenti risorse per ulteriori letture e per svolgere esercizi extra:

  • Peroni, Silvio, et al. 'Computational Thinking and Programming', ongoing. https://comp-think.github.io. Capitoli 1-4 + esercizi.

  • Walsh, Melanie. 'Introduction to Cultural Analytics & Python', 2021. https://melaniewalsh.github.io/Intro-Cultural-Analytics/welcome.html .

  • Tagliaferri, Lisa. 'How to Code in Python', 2021. https://www.digitalocean.com/community/tutorial-series/how-to-code-in-python-3 .

Metodi didattici

Conoscenze preliminari consigliate

Non è richiesta alcuna conoscenza preliminare.

Metodo didattico e orari di contatto

Lezioni frontali, con live coding, e laboratori, con molti esercizi. Per quanto possibile, gli esempi e gli esercizi forniti saranno rilevanti per gli studenti di linguistica. Tutte le sessioni si svolgono di persona.

Gli studenti possono contattarci dopo le lezioni, durante l'orario di ricevimento (si prega di fare riferimento alla pagina del docente) e via email (come ultima risorsa).

Materiale didattico

I materiali del corso sono resi disponibili in un repository GitHub pubblico e possono essere utilizzati online tramite un'applicazione chiamata Binder. All'inizio del corso verranno fornite istruzioni su come utilizzare i materiali, anche localmente sulla propria postazione di lavoro, se si preferisce.

 

Modalità di verifica e valutazione dell'apprendimento

  • Esame intermedio (20%): composto da domande a scelta singola, a scelta multipla e aperte. In classe con carta e penna, niente dispositivi digitali. Si svolge a marzo, tra i periodi di insegnamento.

  • Esame finale (30%): composto da domande a scelta singola, a scelta multipla e aperte. In classe con carta e penna, niente dispositivi digitali. Indicativamente, si svolge a maggio.

  • Progetto (50%): un progetto da fare in piccoli gruppi (~3 ciascuno, +/-1) proposto dagli studenti o scelto da un'opzione predefinita fornita dal docente. Il progetto consiste principalmente nella scrittura di codice e di una relazione o documentazione tecnica. Gli studenti possono utilizzare qualsiasi risorsa disponibile per completarlo. Idealmente, il progetto è proposto dagli studenti. Ad esempio, può concentrarsi sull'analisi linguistica di un corpus o sulla replica di uno studio pubblicato. Ogni progetto deve essere applicato e comportare sostanziali attività di coding. Le linee guida del progetto verranno condivise all'inizio della seconda parte del corso.

Una volta presentato e valutato positivamente, il voto del progetto resta valido per l'anno accademico, fino al superamento dell'esame. Allo stesso modo, l'esame può essere sostenuto anche prima della presentazione della componente progettuale, e il suo voto rimane valido per l'anno accademico.

Gli studenti che non hanno condotto o non hanno superato l'esame intermedio potranno sostenere un esame finale scritto più approfondito in un secondo momento (indicativamente a giugno, prima della pausa estiva). Se perdono anche questa opportunità, dovranno sostenere una prova orale (50%) parallelamente al loro progetto.

La valutazione per gli studenti non frequentanti è la stessa. Possono lavorare individualmente al loro progetto.

Per trarre il massimo beneficio dal corso, si consiglia vivamente di frequentarlo regolarmente e di sostenere gli esami e il progetto il prima possibile.

Strumenti a supporto della didattica

Diapositive, codice con esercizi, dimostrazioni, letture e discussioni seminariali.

Le lezioni si svolgono in un'aula attrezzata con personal computer collegati a Intranet e Internet.

Orario di ricevimento

Consulta il sito web di Giovanni Colavizza