PRINCIPI DI BIOINFORMATICA 3
Modulo PRINCIPI DI INFORMATICA

Anno accademico 2025/2026 - Docente: LORENZO FEDERICO SIGNORINI

Risultati di apprendimento attesi

Al termine del corso lo studente sarà in grado di comprendere i principi fondamentali della programmazione e la distinzione tra linguaggi compilati e interpretati, riconoscendo i principali costrutti logici (sequenza, selezione e iterazione) e la loro rappresentazione mediante diagrammi di flusso. 

Acquisirà familiarità con i linguaggi R e Python, conoscendone la struttura, la sintassi e i principali tipi di dato, sia primitivi che strutturati. Sarà in grado di tradurre semplici algoritmi in codice funzionante, utilizzare costrutti di controllo (if, for, while), creare e gestire strutture dati come liste, matrici e data frame, leggere e scrivere file e rappresentare graficamente i dati. 

Lo studente svilupperà inoltre la capacità di installare e utilizzare pacchetti esterni, applicare i principi della programmazione per risolvere problemi di base e selezionare l’ambiente di sviluppo più adatto al tipo di attività. 

Al termine del percorso formativo sarà in grado di lavorare in modo autonomo nella scrittura, esecuzione e verifica di script elementari, comprendendo la logica che guida la progettazione e l’implementazione degli algoritmi.

Prerequisiti richiesti

Non richiesti.

Contenuti del corso

Parte I - Introduzione alla programmazione.
Definizione di algoritmo e di linguaggio di programmazione.
Descrizione dei traduttori e distinzione tra linguaggi compilati e interpretati.
Concetti di base della programmazione: variabili, assegnamento, tipi di dato e tipi di operatori (aritmetici, relazionali e booleani).
Introduzione ai costrutti fondamentali della programmazione (sequenza, selezione e iterazione).
I diagrammi di flusso e la Notazione Lineare Strutturata.
Esercitazioni su algoritmi e diagrammi di flusso.
Quiz di verifica.

Parte II - Introduzione al linguaggio R.
Istallazione e introduzione a R e all'ambiente di sviluppo Rstudio.
Basi del linguaggio: commenti, assegnazione di valori a variabili, valori speciali, tipi di dato primitivi e avanzati, controllo e conversione del tipo di dato.
Sintassi degli operatori aritmetici, relazionali e booleani.
Sintassi dei costrutti fondamentali (if-else, while, for) e implementazione di semplici diagrammi di flusso.
Definizione di funzione e relative esercitazioni.
Introduzione del tipo di dato vettoriale (funzione di concatenazione, funzione seq(), rep() e altre funzioni di utilità sui vettori).
Introduzione al tipo di dato matriciale e relative funzioni (estrazione di elementi, filtri, gestione di righe e colonne).
Esercitazioni su vettori e matrici.
Introduziona al tipo di dato lista (la funzione list() e le funzioni di utilità, estrazioni di elementi).
Introduziona al tipo di dato dataframe (funzioni di utilità, estrazione di elementi, aggiunta/rimozione di righe e colonne, gestione dei valori NA).
Esercitazioni su liste e dataframes.
Lettura e scrittura files.
Grafici in R (line plots, bar plots, pie charts e parametri estetici).
Istallazione di librerie in R da CRAN e Bioconductor.
Quiz di verifica.

Parte III - Introduzione a Python
Istallazione e introduzione a Python e all'ambiente di sviluppo Spyder.
Basi del linguaggio: commenti, assegnazione di valori a variabili, valori speciali, tipi di dato primitivi e avanzati, controllo e conversione del tipo di dato, stringhe e relative operazioni.
Sintassi degli operatori aritmetici, relazionali e booleani.
Sintassi dei costrutti fondamentali (if-else, while, for) e implementazione di semplici diagrammi di flusso.
Definizione di funzioni e docstrings e relative esercitazioni.
La standard library di Python.
Introduziona al tipo di dato lista (creazione di una lista, estrazione di elementi e metodi relativi).
Tuple e set (definizione e metodi relativi).
Dizionari (definizione e metodi relativi).
Istallazione di moduli esterni tramite pip e installazione di pandas e numpy.
Introduzione alle matrici di numpy e relative operazioni. Esercitazioni su matrici.
Introduzione alle series di pandas e relative operazioni.
Introduzione ai dataframes di pandas e relative operazioni.
Esercitazioni su series e dataframes.
Grafici in Python con matplotlib (line plots, bar plots e parametri estetici).
Quiz di verifica.

Testi di riferimento

Il docente fornirà nella pagina Studium del corso il materiale didattico sottoforma di: 

  • Slides discusse a lezione 
  • Scripts R e Python contenenti il codice delle esercitazioni svolte a lezione 

Tale materiale rappresenta il principale supporto per lo studio alla materia, tuttavia i seguenti testi di approdondimento sono consigliati:

  • R in Action: data analysis and graphics with R - Robert I. Kabacoff
  • Python for beginners: an essential guide to learn with basic exercises: Python programming crash course for data analysis and for beginners -  Conley Walsh
  • Verifica dell'apprendimento

    Modalità di verifica dell'apprendimento

    Prova scritta con domande a risposta multipla e un esercizio. 

    Colloquio orale facoltativo. 

    Informazioni per studenti con disabilità e/o DSA

    A garanzia di pari opportunità e nel rispetto delle leggi vigenti, gli studenti interessati possono chiedere un colloquio personale in modo da programmare eventuali misure compensative e/o dispensative, in base agli obiettivi didattici ed alle specifiche esigenze. E' possibile rivolgersi anche al referente CInAP (Centro per l’integrazione Attiva e Partecipata - Servizi per le Disabilità e/o i DSA) del Dipartimento di Scienze Biomediche e Biotecnologiche.

    Esempi di domande e/o esercizi frequenti

    Quali dei seguenti tipi di dato può contenere elementi di tipo diverso?
    a.             Vettore
    b.             Matrice
    c.             Lista
    d.             Nessuna delle precedenti
     
    Quale è il modo corretto di assegnare una matrice alla variabile my_matrix in R?
    a. my_matrix = array([ [1,2], [5,3], [7,8] ])
    b. my_matrix = [ [1,2], [5,3], [7,8] ]
    c. my_matrix = matrix(c(1,2, 5,3, 7,8), nrow=3, ncol=2)
    d. my_matrix = m(c(1,2, 5,3, 7,8), nrow=3, ncol=2)

    Quale è il simbolo di assegnazione in R?
    a.        =
    b.        <-
    c.        <=
    d.        ==

    In RStudio, quale finestra viene utilizzata per visualizzare il contenuto delle variabili e gli oggetti caricati nell’ambiente di lavoro? 
    a.        Console
    b.        Plots
    c.        Editor per gli script
    d.        Environment


    ESERCIZIO

    Utilizzare un linguaggio a scelta tra R e Python per creare una funzione che, dati due numeri in input, restituisce il massimo dei due. 
    Indicare un esempio di chiamata della funzione con numeri in input scelti dallo studente.
    ENGLISH VERSION