PRINCIPI DI BIOINFORMATICA 1
Modulo PRINCIPI DI INFORMATICA

Anno accademico 2025/2026 - Docente: CAROLINA CRESPI

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.

Modalità di svolgimento dell'insegnamento

Le lezioni si svolgeranno mediante presentazioni PowerPoint e dimostrazioni pratiche in aula. Durante il corso saranno inoltre proposte esercitazioni guidate al computer per favorire l’acquisizione delle competenze di base nella programmazione. 

Prerequisiti richiesti

Non sono richieste conoscenze pregresse di programmazione. È tuttavia utile una familiarità di base con l’uso del computer e con i concetti generali di logica e matematica di livello liceale.

Frequenza lezioni

La frequenza è ritenuta obbligatoria per il corso di studio.

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.
Installazione 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).
Installazione di librerie in R da CRAN e Bioconductor.
Quiz di verifica.

Parte III - Introduzione a Python
Installazione 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).
Instalazione 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

  1. R in Action: data analysis and graphics with R - Robert I. Kabacoff
  2. Python for beginners: an essential guide to learn with basic exercises: Python programming crash course for data analysis and for beginners -  Conley Walsh
  3. Materiale didattico (slide, esercitazioni) fornito dal docente e reso disponibile sulla pagina Studium del corso

Programmazione del corso

 ArgomentiRiferimenti testi
1Parte II - RR in Action: data analysis and graphics with R - Robert I. Kabacoff (cap. 1-6)

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

Prova scritta e colloquio orale

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


ENGLISH VERSION