PRINCIPI DI BIOINFORMATICA 2
Modulo PRINCIPI DI INFORMATICA

Anno accademico 2025/2026 - Docente: ELISABETTA SCIACCA

Risultati di apprendimento attesi

Conoscenza e comprensione

Al termine del corso lo studente conosce i principi fondamentali della programmazione e la distinzione tra linguaggi compilati e interpretati. Conosce i principali costrutti logici (sequenza, selezione e iterazione) e la loro rappresentazione mediante diagrammi di flusso. Conosce la struttura e la sintassi di base dei linguaggi R e Python, gli operatori (aritmetici, relazionali e logici), i principali tipi di dato (primitivi e strutturati). Sa cos'è un ambiente di sviluppo e a cosa serve, ed è familiare con RStudio per R e Spyder per Python.

 

Capacità di applicare conoscenza e comprensione

Al termine del corso lo studente è in grado di tradurre semplici algoritmi in codice funzionante, utilizzando gli operatori e i costrutti di controllo (if, for, while). Sa creare e gestire strutture dati quali vettori, liste, matrici e data frame, leggere e scrivere file e rappresentare graficamente i dati. È in grado di installare e utilizzare pacchetti esterni e di applicare i principi della programmazione per risolvere problemi di base, lavorando in modo autonomo nella scrittura, esecuzione e verifica di script elementari.

Le seguenti competenze trasversali concorrono al raggiungimento dei risultati di apprendimento attraverso le attività indicate.

Autonomia di giudizio

Lo studente acquisisce consapevolezza degli ambiti di applicazione tipici dei due linguaggi presentati e sviluppa la capacità di valutare la correttezza dei propri script. Tale capacità è esercitata attraverso le esercitazioni al computer e la risoluzione guidata di problemi di programmazione.

Abilità comunicative

Lo studente acquisisce la capacità di documentare il proprio codice (commenti, docstring) e di descrivere la logica di un algoritmo mediante diagrammi di flusso e notazione lineare strutturata.

Capacità di apprendimento

Lo studente sviluppa la capacità di proseguire autonomamente l'apprendimento di nuovi costrutti e librerie, consultando la documentazione dei linguaggi e installando pacchetti da repository quali CRAN, Bioconductor, PyPI e GitHub.

Modalità di svolgimento dell'insegnamento

Il modulo di Principi di Informatica prevede 26 ore di attività, così articolate:

       14 ore di Didattica Erogativa (DE), dedicate alla presentazione dei contenuti teorici mediante lezioni con il supporto di slide;

       12 ore di Didattica Interattiva (DI), dedicate a esercitazioni al computer in cui gli studenti scrivono ed eseguono script in R o Python, applicando i concetti presentati a lezione.

La Didattica Erogativa è orientata prevalentemente all'acquisizione di conoscenze (costrutti, sintassi, tipi di dato), mentre la Didattica Interattiva sviluppa le competenze applicative attraverso la scrittura e la verifica di codice, concorrendo al raggiungimento dei risultati di apprendimento relativi alla capacità di applicare conoscenza e comprensione e all'autonomia di giudizio.

Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto sopra dichiarato, al fine di rispettare il programma previsto e riportato nel presente syllabus.

Prerequisiti richiesti

Non richiesti.

Frequenza lezioni

La frequenza è obbligatoria. La partecipazione attiva alle lezioni e, in particolare, alle esercitazioni al computer è essenziale per acquisire le competenze pratiche di programmazione in R e Python, che difficilmente possono essere sviluppate con il solo studio individuale.

Contenuti del corso

Parte I - Introduzione alla programmazione (Slides del docente).

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 (Slides e scripts del docente, testo [1] per approfondimenti)

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.

Introduzione al tipo di dato lista (la funzione list() e le funzioni di utilità, estrazioni di elementi).

Introduzione 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 (Slides e scripts del docente, testo [2] per approfondimenti)

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.

Introduzione 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).

Installazione di moduli esterni tramite pip e installazione di pandas e numpy.

Introduzione alle matrici di numpy e relative operazioni. Esercitazioni su matrici.

Filtraggio di matrici tramite maschere booleane e funzione np.where.

Introduzione alle series di pandas e relative operazioni.

Introduzione ai dataframes di pandas e relative operazioni.

Esercitazioni su series e dataframes.

Lettura e scrittura files (formato CSV).

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 sotto forma di:

       slide discusse a lezione;

       script R e Python contenenti il codice delle esercitazioni svolte a lezione.

Tale materiale rappresenta il principale supporto per lo studio della materia; i seguenti testi sono consigliati per gli approfondimenti:

[1]   R. I. Kabacoff, R in Action: data analysis and graphics with R, Manning.

[2]   C. Walsh, Python for beginners: an essential guide to learn with basic exercises.


Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame è unico per l'insegnamento integrato di Principi di Bioinformatica e consiste in una prova scritta, eventualmente seguita da un colloquio orale.


La prova scritta ha una durata di 60 minuti e si compone di:

  • un test a risposta multipla di 30 domande, di cui 15 relative al modulo di Principi di Informatica e 15 relative al modulo di Principi di Bioinformatica; ogni domanda presenta una sola risposta corretta e quattro errate (risposta corretta: +1 punto; risposta errata: −0,25 punti; risposta non data: 0 punti);
  • due esercizi, uno per ciascun modulo, valutati ciascuno da 0 a 2 punti.

Ciascuna prova scritta ha validità limitata all'appello in cui viene sostenuta.

Il punteggio del test e quello degli esercizi concorrono a determinare la votazione dello scritto. La prova scritta si intende superata con un punteggio minimo di 16. Il colloquio orale è obbligatorio per chi ottiene allo scritto un punteggio di 16 o 17, mentre è facoltativo per chi ottiene un punteggio maggiore o uguale a 18. Il colloquio orale può confermare o migliorare la votazione conseguita allo scritto. La lode è attribuita agli studenti che superano il punteggio di 30, sommando alla prova scritta il contributo degli esercizi oppure del colloquio orale.


Per quanto riguarda il colloquio orale, gli elementi di valutazione riguarderanno: la pertinenza delle risposte rispetto alle domande formulate, la proprietà di linguaggio tecnico, la capacità di fornire esempi e la capacità espressiva complessiva dello studente.


La verifica dell'apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.


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. È possibile rivolgersi anche al docente referente CInAP (Centro per l'integrazione Attiva e Partecipata — Servizi per le Disabilità e/o i DSA) del proprio Dipartimento (https://www.cinap.unict.it/content/referenti).


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

e.     Vettori, Matrici e Liste 

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)

e. my_matrix = matrix(1,2, 5,3, 7,8, nrow=3, ncol=2)


Quale è il simbolo di assegnazione in R?

    a.  =
    b.  <-
    c.  <=

    d.  ==

    e.  -> 

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

  e.  Files 



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