B1703 - INTRODUZIONE ALLA PROGRAMMAZIONE (LM)

Anno Accademico 2024/2025

  • Docente: Michele Corazza
  • 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. Pipeline di analisi e visualizzazione dei dati (pandas, matplotlib, seaborn). 

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 via email per programmare un ricevimento.

Materiale didattico

I materiali del corso verranno resi disponibili su virtuale e in un repository Gitlab pubblico. 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 orale (50%): domande sui concetti affrontati durante il corso. Svariati appelli, indicativamente a Giugno, Luglio, Settembre.

  • Progetto (50%): un progetto individuale concordato con il docente, su tema a scelta degli studenti o usando uno dei temi suggeriti. Verrà richiesta una relazione sul lavoro svolto 20 giorni prima della giornata degli orali. Il progetto verrà poi discusso durante l'esame orale.

È possibile effettuare esame orale e discussione del progetto nella stessa sessione oppure chiedere di discutere solo la parte generale o il progetto.

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 orale può essere sostenuto anche prima della presentazione della componente progettuale, e il suo voto rimane valido per l'anno accademico.

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 Michele Corazza