Corso di laurea

Bioinformatica

Università degli studi di Bari · 30 materie · 0 file condivisi

Ecco tutti i dettagli sul corso di laurea selezionato. Sul UniDocs troverai gli appunti condivisi dagli altri studenti del tuo corso di laurea, ordinati per materia. Ricordati che per poter visualizzare il materiale devi essere registrato al sito e possedere un numero di crediti sufficiente.

Sfoglia il materiale didattico

Con UniDocs hai l'opportunità di studiare insieme a tutto il tuo corso di laurea. Guadagna subito dei crediti, carica il materiale del tuo ultimo esame!
Più condividi, più tempo avrai per studiare con tutta la community!

Materie del corso

(integrato con 2) 1° anno · 3 CFU · BIO/13 · 0 file
(integrato con 3) 1° anno · 3 CFU · CHIM/02 · 0 file
A scelta dello studente 1° anno · 8 CFU · 0 file
Basi di dati 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

L’insegnamento si propone di fornire agli studenti i concetti fondamentali per la progettazione, realizzazione e interrogazione di basi di dati. Più in particolare: a) concetti e metodologie per lo sviluppo di sistemi…

Scheda dell'insegnamento

Obiettivi formativi

L’insegnamento si propone di fornire agli studenti i concetti fondamentali per la progettazione, realizzazione e interrogazione di basi di dati.
Più in particolare:
a) concetti e metodologie per lo sviluppo di sistemi software orientati ai dati, con particolare attenzione all’organizzazione, manipolazione ed accesso ai dati;
b) nozioni fondamentali di progettazione e realizzazione di basi di dati (DB) con particolare riferimento al modello di dati relazionale;
c) conoscenza di linguaggi teorici e pratici per l'interazione con DB.
Il corso copre l’intero ciclo di vita delle basi di dati, dalla progettazione al funzionamento, includendo gli strumenti per interrogare le basi di dati.
I contenuti del corso si integrano con il corso di Algoritmi e Strutture Dati in quanto ci sono svariate nozioni in comune, e precede la parte di progettazione dei sistemi software, che si approfondirà nel corso di Ingegneria del Software, specificatamente rispetto all’analisi dei requisiti e alla progettazione del software.

La valutazione sia della prova pratica che della prova orale prende in considerazione la capacità di comprendere il problema proposto.

Si valuta la capacità di risolvere il problema basandosi sugli argomenti trattati nel corso.

Autonomia di giudizio:
Si valuta la capacità di risolvere il problema proposto e le eventuali spiegazioni che la studentessa o lo studente fornirà a giustificazione delle soluzioni fornite.
Abilità comunicative:
Sia nella prova pratica che nella prova orale si terrà conto delle abilità comunicative della studentessa o dello studente e di come espone gli argomenti e le soluzioni ai problemi, in termini di chiarezza espositiva e di correttezza delle espressioni.
Capacità di apprendere:
Si valuta la capacità di apprendere gli argomenti trattati nel corso.

Programma

Introduzione

  • Architetture software e Database
  • Modelli per i dati (strutturati)
  • Linguaggi di Interrogazione
    Paradigma relazionale
  • Modello relazionale
  • DBMS Relazionali
  • Linguaggio SQL
    Paradigmi NoSQL
  • Modelli associativi
  • Modelli a grafo
  • Sistemi di indicizzazione
    Laboratorio con SQL
  • Storia ed evoluzione. Interrogazioni semplici in SQL.
  • Interrogazioni di tipo insiemistico e con raggruppamento.
  • SQL per definire e gestire basi di dati: creazione di una base di dati, di tabelle, definizione di domini, inserimento, cancellazione, modifica di tuple, vincoli d’integrità (intra/inter-relazionali), modifica di schemi, viste, asserzioni.
  • strumenti per la gestione di basi di dati

Modalità d'esame

L’esame si svolge in due prove.
Prova pratica per la verifica delle capacità di progettazione e di implementazione di una base di dati.
Prova orale per la verifica delle conoscenze teoriche delle basi di dati.
Le due prove devono essere superate nello stesso appello. Durante la prova orale, i risultati dell’esame sono comunicati allo studente seduta stante ed inseriti nella piattaforma Esse3.

Testi di riferimento

Libro di testo:
Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi e Riccardo Torlone. “Basi di dati” 6a edizione. McGraw-Hill. ISBN: 9788838668005.
Libri consigliati per approfondimento:
R.A. Elmasri, S.B. Navathe Sistemi di basi di dati: Fondamenti e complementi, Pearson - A. Wesley Italia, 7a Ed. 2018
Si può ottenere i testi in prestito dalla Biblioteca. Può convenire verificarne la disponibilità mediante il Sistema Bibliotecario di Ateneo https://opac.uniba.it/easyweb/w8018/ e contattare la biblioteca per concordare il prestito.

Codice insegnamento magistrale/bioinformatica::Basi di dati

Biochimica (3) 1° anno · 6 CFU · BIOS-07/A · 0 file
Scheda dell'insegnamento

Modalità d'esame

La verifica della parte di Fondamenti di Chimica avviene mediante colloquio orale. L'esame può essere sostenuto congiuntamente all'esame di Biochimica oppure, su richiesta dello studente, come esonero parziale dell'insegnamento integrato.
Durante il colloquio lo studente deve dimostrare la comprensione dei principi fondamentali della chimica, la capacità di applicarli a semplici problemi quantitativi e l'uso appropriato del linguaggio chimico. Potrà essere richiesto di discutere struttura e proprietà di elementi, composti e molecole; bilanciare una reazione; impostare semplici problemi di stechiometria, concentrazione, termodinamica, equilibrio e pH; interpretare qualitativamente fenomeni cinetici, elettrochimici e proprietà degli stati della materia.
Possono essere previste prove in itinere su richiesta degli studenti, con finalità di verifica progressiva della preparazione.
Criteri di valutazione

conoscenza e comprensione dei principi fondamentali della chimica;

capacità di applicare correttamente i concetti alla risoluzione di semplici problemi numerici;

capacità di collegare modelli teorici e fenomeni chimici;

correttezza del ragionamento e plausibilità dei risultati;

chiarezza espositiva e uso appropriato della terminologia scientifica.
Attribuzione del voto
Il voto finale dell'insegnamento integrato è espresso in trentesimi ed è attribuito collegialmente dalla Commissione, tenendo conto delle valutazioni conseguite nei due moduli e della loro diversa consistenza in termini di CFU. Il voto può essere determinato anche mediante una media ponderata delle valutazioni dei due moduli, senza che ciò costituisca un automatismo vincolante. L'esame è superato con una votazione pari o superiore a 18/30.

Codice insegnamento magistrale/bioinformatica::Biochimica (3)

Bioinformatica 1° anno · 9 CFU · BIO/11 · 0 file
Biologia Molecolare 1° anno · 1° semestre · 6 CFU · BIOS-08/A · 0 file

L'insegnamento si propone di fornire agli studenti conoscenze basilari della struttura e proprietà degli acidi nucleici e delle caratteristiche dei genomi, dei meccanismi alla base del flusso dell’informazione genetica e…

Scheda dell'insegnamento

Obiettivi formativi

L'insegnamento si propone di fornire agli studenti conoscenze basilari della struttura e proprietà degli acidi nucleici e delle caratteristiche dei genomi, dei meccanismi alla base del flusso dell’informazione genetica e della sua regolazione.

Lo studente acquisirà un’appropriata conoscenza della struttura degli acidi nucleici e del flusso dell’informazione genetica, degli aspetti di base della struttura e organizzazione dei genomi procariotici ed eucariotici, ed elementi di regolazione dell’espressione genica.

Le conoscenze acquisite sulla struttura e funzione delle molecole informazionali consentiranno di utilizzare e applicare con maggiore competenza e senso critico le risorse bioinformatiche oggetto di approfondimento del corso di laurea

  • Autonomia di giudizio
    Al termine dell’insegnamento, lo studente acquisirà le conoscenze e le competenze necessarie a sviluppare in autonomia il disegno sperimentale necessario a condurre un’analisi bioinformatica, definendo gli approcci metodologici più appropriati e autonomia nella capacità di interpretare i risultati per ottenere nuove conoscenze sul sistema biologico in esame.
  • Abilità comunicative
    Al termine dell’insegnamento lo studente avrà acquisito adeguate competenze e strumenti di comunicazione scritta e orale dei contenuti appresi, finalizzata allo scambio di informazioni, dati e metodologie su problematiche per le quali è possibile prevedere soluzioni attraverso metodi ed approcci bioinformatici. La verifica dell'acquisizione di abilità comunicative avverrà tramite la valutazione che sarà effettuata nell’esame orale.
  • Capacità di apprendere in modo autonomo
    Gli studenti saranno incoraggiati ad aggiornare e ad approfondire le proprie conoscenze tramite consultazione di materiale bibliografico e aggiornamento continuo su nuove conoscenze e metodologie nella gestione e analisi di dati biomolecolari. Al termine dell’insegnamento lo studente avrà sviluppato capacità di apprendimento che saranno necessarie per continuare gli studi in ambito bioinformatico in autonomia.

Programma

Parte I
Il DNA è la molecola deputata alla trasmissione dell’informazione genetica. Struttura degli acidi nucleici: DNA e RNA. Basi azotate, nucleosidi, nucleotidi. La struttura a doppia elica del DNA (struttura A, B, Z). La struttura dell’RNA e le modifiche post-trascrizionali dei ribonucleotidi. Spettro di assorbimento degli acidi nucleici e legge di Lambert-Beer. Denaturazione degli acidi nucleici e determinazione della temperatura di melting. Il dogma centrale della Biologia Molecolare. Il codice genetico.
Il genoma dei procarioti: struttura ed organizzazione. Il genoma degli eucarioti: cromosomi, cromatina e nucleosomi. Frazione codificante e non codificante nei genomi eucariotici e procariotici. Duplicazione e segregazione dei cromosomi eucariotici.
Parte II
La cromatina. Struttura e proprietà dei nucleosomi. Le proteine istoniche. Modificazioni delle code N-terminali degli istoni.
La replicazione del DNA in procarioti ed eucarioti. Le DNA polimerasi. Replicazione delle estremità dei cromosomi eucariotici: i telomeri. Mutabilità e meccanismi di riparazione del DNA.
Parte III
Espressione del genoma: RNA polimerasi e trascrizione in procarioti ed eucarioti. La trascrizione nei procarioti: inizio, allungamento e terminazione. Struttura dei promotori. La trascrizione negli eucarioti: struttura del promotore, apparato trascrizionale basale, inizio, allungamento, e maturazione dell’mRNA. Le RNA polimerasi I e III. Maturazione del tRNA. Lo splicing dell’mRNA. Meccanismi di controllo dello splicing. Lo splicing alternativo. Editing dell’mRNA.
Parte IV
La traduzione. Il tRNA. Il ribosoma. Inizio, allungamento e terminazione della traduzione in procarioti ed eucarioti. Il codice genetico: degenerazione e universalità. tRNA e interazione codone-anticodone.
Parte V
Regolazione dell’espressione genica nei procarioti: l’operone lac, trp e ara. Regolazione del ciclo litico e lisogeno del fago lambda.
Regolazione dell’espressione genica negli eucarioti: attivatori e repressori trascrizionali. Trasduzione del segnale e controllo dei regolatori trascrizionali. Meccanismi di regolazione epigenetica. Regolazione mediata da piccoli RNA: short interfering RNA e microRNA.

Modalità d'esame

La valutazione avviene mediante verifica orale finale. Il voto complessivo sarà formulato sulla base della prova orale.

Testi di riferimento

1) “Biologia Molecolare” - F. Amaldi, P. Benedetti, G. Pesole, P. Plevani; Casa Editrice Ambrosiana, Terza edizione, 2020
2) “Tecniche e Metodi per la Biologia Molecolare” - F. Amaldi, P. Benedetti, G. Pesole, P. Plevani; Casa Editrice Ambrosiana, 2020

Codice insegnamento magistrale/bioinformatica::Biologia Molecolare

Elementi di architettura 1° anno · 9 CFU · ING-INF/05 · 0 file
Fondamenti di 1° anno · 3 CFU · MATH-05/A · 0 file

Conoscenza delle biomolecole, della struttura di cellule procariotiche ed eucariotiche, delle principali funzioni dei componenti cellulari, della compartimentazione dei principali processi biologici. Classificazione…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza delle biomolecole, della struttura di cellule procariotiche ed eucariotiche, delle principali funzioni dei componenti cellulari, della compartimentazione dei principali processi biologici. Classificazione degli organismi viventi.

Durante il corso gli studenti acquisiranno la conoscenza degli strumenti e dei concetti teorici relativi alla genetica di base.

Il corso promuove l’acquisizione delle conoscenze teoriche e metodologiche necessarie per affrontare e risolvere essercizi nei diversi ambiti della genetica di base.

Autonomia di giudizio
Al termine dell’insegnamento lo studente avrà acquisito autonomia di giudizio e di gestione dei quesiti proposti grazie alle numerose esercitazioni pratiche previste durante il corso .
Abilità comunicative
Durante il corso gli studenti acquisiranno le competenze necessarie per descrivere con un linguaggio tecnico appropriato sia in forma scritta che orale le problematiche affrontate e relative alla genetica di base.
Capacità di apprendere in modo autonomo
Al termine dell’insegnamento lo studente avrà sviluppato quelle capacità di apprendimento che sono loro necessarie per intraprendere studi successivi con un alto grado di autonomia.

Programma

Introduzione alla biologia: classificazione degli organismi viventi e cenni di tassonomia. Macromolecole biologiche, struttura e funzioni: proteine, acidi nucleici, carboidrati e lipidi. Biologia cellulare: strumenti di analisi, virus, caratteristiche strutturali e funzionali di cellula procariotica, cellula eucariotica animale e vegetale.

Modalità d'esame

Esame orale con voto in trentesimi. Il requisito minimo per superare l’esame è dato dalla dimostrazione di una conoscenza di base delle strutture e delle funzioni biologiche descritte a lezione. La formulazione del voto complessivo terrà conto del grado di approfondimento delle conoscenze acquisite, della conoscenza e dell’utilizzo appropriato del lessico specialistico e della capacità di integrazione ed elaborazione delle informazioni.

Testi di riferimento

-Reece et al. Campbell – Biologia e Genetica, Pearson
-Sadava et al., Biologia (o edizione in fascicoli) Ed. Zanichelli –
-Raven- Johnson-Mason-Logos-Singer, BIOLOGIA, ed Piccin
-Basi molecolari e cellulari della vita, ed Piccin
-L’essenziale di biologia molecolare della cellula, Alberts B. et al. V edizione, Zanichelli.

Codice insegnamento magistrale/bioinformatica::Fondamenti di

Fondamenti di Biologia 1° anno · 1° semestre · 3 CFU · BIOS-10/A · 0 file

Conoscenza delle biomolecole, della struttura di cellule procariotiche ed eucariotiche, delle principali funzioni dei componenti cellulari, della compartimentazione dei principali processi biologici. Classificazione…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza delle biomolecole, della struttura di cellule procariotiche ed eucariotiche, delle principali funzioni dei componenti cellulari, della compartimentazione dei principali processi biologici. Classificazione degli organismi viventi.

Durante il corso gli studenti acquisiranno la conoscenza degli strumenti e dei concetti teorici relativi alla genetica di base.

Il corso promuove l’acquisizione delle conoscenze teoriche e metodologiche necessarie per affrontare e risolvere essercizi nei diversi ambiti della genetica di base.

Autonomia di giudizio
Al termine dell’insegnamento lo studente avrà acquisito autonomia di giudizio e di gestione dei quesiti proposti grazie alle numerose esercitazioni pratiche previste durante il corso .
Abilità comunicative
Durante il corso gli studenti acquisiranno le competenze necessarie per descrivere con un linguaggio tecnico appropriato sia in forma scritta che orale le problematiche affrontate e relative alla genetica di base.
Capacità di apprendere in modo autonomo
Al termine dell’insegnamento lo studente avrà sviluppato quelle capacità di apprendimento che sono loro necessarie per intraprendere studi successivi con un alto grado di autonomia.

Programma

Introduzione alla biologia: classificazione degli organismi viventi e cenni di tassonomia. Macromolecole biologiche, struttura e funzioni: proteine, acidi nucleici, carboidrati e lipidi. Biologia cellulare: strumenti di analisi, virus, caratteristiche strutturali e funzionali di cellula procariotica, cellula eucariotica animale e vegetale.

Modalità d'esame

Esame orale con voto in trentesimi. Il requisito minimo per superare l’esame è dato dalla dimostrazione di una conoscenza di base delle strutture e delle funzioni biologiche descritte a lezione. La formulazione del voto complessivo terrà conto del grado di approfondimento delle conoscenze acquisite, della conoscenza e dell’utilizzo appropriato del lessico specialistico e della capacità di integrazione ed elaborazione delle informazioni.

Testi di riferimento

-Reece et al. Campbell – Biologia e Genetica, Pearson
-Sadava et al., Biologia (o edizione in fascicoli) Ed. Zanichelli –
-Raven- Johnson-Mason-Logos-Singer, BIOLOGIA, ed Piccin
-Basi molecolari e cellulari della vita, ed Piccin
-L’essenziale di biologia molecolare della cellula, Alberts B. et al. V edizione, Zanichelli.

Codice insegnamento magistrale/bioinformatica::Fondamenti di Biologia

Fondamenti di Chimica 1° anno · 1° semestre · 3 CFU · CHEM-02/A · 0 file

Il corso intende fornire le nozioni fondamentali della chimica e della struttura della materia. Al termine dell'insegnamento lo studente dovrà conoscere e comprendere: le proprietà fondamentali della materia, degli…

Scheda dell'insegnamento

Obiettivi formativi

Il corso intende fornire le nozioni fondamentali della chimica e della struttura della materia.

Al termine dell'insegnamento lo studente dovrà conoscere e comprendere:

  • le proprietà fondamentali della materia, degli elementi e dei composti e le principali trasformazioni chimiche;
  • i principi della struttura atomica, della configurazione elettronica e della periodicità delle proprietà degli elementi;
  • i principali modelli del legame chimico, della geometria molecolare e delle interazioni intermolecolari;
  • i principi fondamentali della stechiometria e della nomenclatura chimica;
  • i concetti fondamentali della termodinamica chimica, della spontaneità e dell'equilibrio;
  • le proprietà fondamentali degli stati della materia e delle soluzioni;
  • i principi degli equilibri acido-base e il significato del pH;
  • i concetti di base della cinetica chimica, della catalisi e dell'elettrochimica;
  • le principali classi di composti organici e i gruppi funzionali di maggiore interesse biologico.

Al termine dell'insegnamento lo studente dovrà essere in grado di:

  • scrivere e bilanciare semplici reazioni chimiche ed effettuare calcoli stechiometrici;
  • utilizzare la configurazione elettronica e la tavola periodica per interpretare proprietà e reattività elementari delle specie chimiche;
  • utilizzare semplici modelli di legame per prevedere la geometria molecolare e interpretare le proprietà delle sostanze;
  • utilizzare correttamente la nomenclatura dei principali composti inorganici e riconoscere i principali gruppi funzionali organici;
  • calcolare concentrazioni delle specie in soluzione;
  • determinare, in semplici casi, grandezze termodinamiche di reazione e interpretare la spontaneità e l'equilibrio di una trasformazione;
  • effettuare semplici calcoli di equilibrio chimico, pH e composizione di soluzioni tampone;
  • interpretare semplici reazioni redox e i relativi potenziali di ossidoriduzione;
  • interpretare quantitativamente i risultati ottenuti negli esercizi e verificarne la plausibilità fisico-chimica.

Autonomia di giudizio - DD3

  • interpretare fenomeni chimici sulla base di modelli teorici, distinguendo tra descrizione macroscopica e interpretazione microscopica;
  • riconoscere le ipotesi e le approssimazioni utilizzate nei modelli chimici elementari;
  • scegliere le relazioni e i modelli appropriati per affrontare semplici problemi chimici;
  • valutare criticamente la plausibilità di un risultato numerico sulla base delle grandezze fisiche e chimiche coinvolte.
    Abilità comunicative - DD4
  • descrivere strutture, proprietà e trasformazioni chimiche utilizzando una terminologia scientifica appropriata;
  • utilizzare correttamente simboli, formule e nomenclatura chimica;
  • illustrare in maniera chiara il procedimento seguito nella risoluzione di un semplice problema quantitativo;
  • interpretare e discutere formule, grafici e diagrammi relativi ai fenomeni chimici trattati.
    Capacità di apprendere in modo autonomo - DD5
  • utilizzare autonomamente dispense, testi di riferimento e altre fonti scientifiche affidabili per approfondire semplici argomenti di chimica;
  • affrontare problemi chimici elementari non identici a quelli svolti durante le esercitazioni applicando i principi acquisiti;
  • utilizzare le conoscenze chimiche acquisite come base per lo studio della biochimica, delle biomolecole e dei sistemi biologici.

Programma

Materia, elementi e composti
Stati della materia; elementi e composti; atomi e molecole; trasformazioni fisiche e chimiche; reazioni chimiche; principi di stechiometria.
Struttura atomica e configurazione elettronica
Modelli atomici classici e quantistici; cenni di spettroscopia; configurazione elettronica degli elementi; tavola periodica e proprietà periodiche.
Legame chimico e struttura molecolare
Legame ionico, covalente e metallico; geometria molecolare; interazioni intermolecolari; relazioni tra struttura e proprietà delle sostanze.
Nomenclatura dei composti inorganici
Nomenclatura tradizionale e IUPAC; composti binari e ternari.
Termodinamica chimica ed equilibrio
Principi fondamentali della termodinamica; stato standard; entalpia ed energia libera di Gibbs; entalpia ed energia libera di reazione; spontaneità delle trasformazioni; equilibrio chimico e costante di equilibrio.
Stati della materia e soluzioni
Proprietà degli stati della materia; trasformazioni di fase e diagrammi di stato, con particolare riferimento all'acqua; equazione di Clapeyron; miscugli omogenei ed eterogenei; soluzioni e unità di concentrazione; soluzioni ideali ed energia libera di mescolamento; proprietà colligative; legge di Henry.
Acidi e basi
Definizioni di acido e base; prodotto ionico dell'acqua e pH; equilibri acido-base; calcolo del pH in sistemi semplici; soluzioni tampone.
Cinetica chimica
Reazioni elementari; velocità di reazione; legge di azione di massa; legge di Arrhenius; concetti fondamentali di catalisi.
Elettrochimica
Reazioni di ossidoriduzione; celle galvaniche; potenziali standard di riduzione; relazione tra potenziale elettrochimico, spontaneità ed energia libera.
Elementi di chimica organica
Ibridizzazione del carbonio; idrocarburi alifatici e aromatici: nomenclatura e isomeria; principali derivati degli idrocarburi; gruppi funzionali di interesse biologico.
Esercitazioni
Bilanciamento delle reazioni e semplici calcoli stechiometrici; calcolo delle concentrazioni; applicazioni elementari della termodinamica e dell'equilibrio chimico; calcolo del pH e di soluzioni tampone; semplici applicazioni relative ai processi redox.

Modalità d'esame

La verifica della parte di Fondamenti di Chimica avviene mediante colloquio orale. L'esame può essere sostenuto congiuntamente all'esame di Biochimica oppure, su richiesta dello studente, come esonero parziale dell'insegnamento integrato.
Durante il colloquio lo studente deve dimostrare la comprensione dei principi fondamentali della chimica, la capacità di applicarli a semplici problemi quantitativi e l'uso appropriato del linguaggio chimico. Potrà essere richiesto di discutere struttura e proprietà di elementi, composti e molecole; bilanciare una reazione; impostare semplici problemi di stechiometria, concentrazione, termodinamica, equilibrio e pH; interpretare qualitativamente fenomeni cinetici, elettrochimici e proprietà degli stati della materia.
Possono essere previste prove in itinere su richiesta degli studenti, con finalità di verifica progressiva della preparazione.
Criteri di valutazione

conoscenza e comprensione dei principi fondamentali della chimica;

capacità di applicare correttamente i concetti alla risoluzione di semplici problemi numerici;

capacità di collegare modelli teorici e fenomeni chimici;

correttezza del ragionamento e plausibilità dei risultati;

chiarezza espositiva e uso appropriato della terminologia scientifica.
Attribuzione del voto
Il voto finale dell'insegnamento integrato è espresso in trentesimi ed è attribuito collegialmente dalla Commissione, tenendo conto delle valutazioni conseguite nei due moduli e della loro diversa consistenza in termini di CFU. Il voto può essere determinato anche mediante una media ponderata delle valutazioni dei due moduli, senza che ciò costituisca un automatismo vincolante. L'esame è superato con una votazione pari o superiore a 18/30.

Testi di riferimento

  • A. Silvestroni, L. Silvestroni, Chimica Generale, Zanichelli, Bologna.
  • Rodomontano, Chimica Generale, testo disponibile online.
  • Dispense e materiale didattico predisposti dal docente.
    Le dispense e il materiale fornito dal docente coprono gli argomenti trattati durante il corso. I testi di riferimento sono consigliati per approfondimenti.

Codice insegnamento magistrale/bioinformatica::Fondamenti di Chimica

Fondamenti di Matematica per L'Analisi dei Dati Integrato con Metodi Numerici per la Bioinformatica 1° anno · 1° semestre · 9 CFU · MATH-05/A · 0 file

Fondamenti di Matematica per l’Analisi dei Dati: Acquisizione degli strumenti matematico-statistici per l’analisi dei dati e delle tecniche numeriche per il pre-processing del dato -Metodi numerici per la bioinformatica:…

Scheda dell'insegnamento

Obiettivi formativi

  • Fondamenti di Matematica per l’Analisi dei Dati:
    Acquisizione degli strumenti matematico-statistici per l’analisi dei dati e delle tecniche numeriche per il pre-processing del dato
    -Metodi numerici per la bioinformatica:
    Acquisizione delle metodologie numeriche classiche e delle tecniche di algebra lineare per l’analisi di dati biomedici strutturati

Metodi Numerici per la Bioinformatica

  • Formalizzazione matematica dei problemi di analisi dei dati
  • Approcci e tecniche numeriche e di algebra lineare per l'analisi dei dati
  • Comprensione e utilizzo di codici numerici per l'analisi di insiemi di dati biologici
    Fondamenti di Matematica per l'analisi dei dati
  • Struttura e tipologia dei dati
  • Concetti di statistica descrittiva per l'analisi del dato
  • Test di ipotesi di statistica parametrica e non parametrica
  • Approcci e tecniche matematiche per il pre-processing del dato
  • Codici numerici che implementano le tecniche standard per l'analisi dei dati

Metodi Numerici per la Bioinformatica

  • Conoscenza e utilizzo dei meccanismi di base dell'algebra lineare per l'analisi dei dati biomedici.
  • Comprensione e implementazione dei flussi di lavoro per l'analisi numerica dei dati biomedici.
    Fondamenti di Matematica per l'Analisi dei dati
  • Conoscenza dei concetti matematico-statistici e utilizzo delle tecniche standard per l’analisi dei dati biomedici
  • Implementazione di workflow per l’analisi dei dati biomedici

Al termine dell’insegnamento lo studente dovrà essere in grado di applicare le tecniche matematico statistiche di analisi di dati di tipo biomedico e identificare le eventuali problematiche da trattare. Inoltre avrà acquisito
Autonomia di giudizio per

  • Comprendere la struttura del dato proposto e identificare la metodologia più appropriata per descriverlo
  • Individuare la tecnica adatta a rispondere ai quesiti posti
  • Gestire la presenza di outlier, missing data e saper gestire eventuali normalizzazioni
  • Implementare un workflow per l'analisi del dati.
  • Esporre i concetti appresi e le scelte fatte per l'analisi del dato in esame con formalismo matematico.
  • Dimostrare di aver acquisito un metodo di studio adeguato, supportato dalla consultazione dei testi, da percorsi di approfondimento individuali o e in gruppo e dalla implementazione al calcolatore delle tecniche esposte durante il corso.

Programma

Metodi Numerici per la Bioinformatica
Algebra Lineare per la bioinformatica: concetti di vettore, matrice, operazioni vettoriali e matriciali. Concetti di norme matriciali di spazi vettoriali, spazi di matrici, spazi vettoriali generati. Basi di spazi vettoriali e di matrici. Sistemi lineari e loro rappresentazione matriciale. Prodotto di matrici di dati e fattorizzazioni di matrici di dati. Fattorizzazione QR e concetti di ortogonalità tra vettori e matrici. Metodi per il calcolo di autovalori e autovettori di una matrice di dati. Decomposizione a Valori Singolari (SVD) e SVD troncata.
-Analisi delle componenti principali (PCA): Matrice di covarianza e di correlazione dei dati. Diagonalizzazione di una matrice simmetrica. Autovalori di una forma quadratica definita positiva. Componenti principali di vettori di variabili aleatorie. Combinazioni lineari di massima varianza. Significato statistico e probabilistico delle componenti principali. Analisi delle componenti principali per insiemi di dati multivariati. Euristiche per il calcolo del numero ottimale delle componenti principali. PCA come metodo di feature selection. Interpretazione delle componenti principali: il cerchio delle correlazioni, gli Z-scores. Applicazioni reali della PCA.
-Cenni su metodi di approssimazione low rank di matrici di dati omici. SVD, Fattorizzazioni nonnegative di matrici (NMF). Sparse Nonnegative Matrix Factorization per il Clustering.
-Introduzione al problema di clustering, distanze utili per il clustering. Clustering Gerarchico divisivo e agglomerativo (rappresentazioni tramite dendrogramma e metodi di linkaggio: singolo, completo, medio), K-means. Metodi euristici per la scelta del numero ottimale di clusters nel K-means, Equivalenza tra NMF e K-means con vincolo rilassato di ortogonalità (Teoremi e dimostrazioni), K- medoide (cenni). Indici Interni, Indici Esterni e altre misure di bontà degli algoritmi di clustering. Algoritmi Model e Density Based (Mixture Model e DBSCAN): cenni.
-Introduzione ai modelli di regressione Lineare Semplice e Multipla, Stima dei coefficienti con OLS (Ordinary Least Squares ed equazioni Normali). Teorema di Gauss-Markov e condizioni per il miglior stimatore lineare corretto. Interpretazione geometrica della regressione. Regressione per lo studio della collinearità e l’individuazione degli outliers in matrici di dati. Misure di valutazione dei modelli di regressione. Regressione logistica semplice e multipla. Regressione logistica e distribuzioni bernulliana e multinomiale.
-Esercitazioni al calcolatore tramite il software statistico R https://www.r-project.org
Fondamenti di Matematica per l'Analisi dei dati
-Statistica descrittiva per l'analisi esplorativa dei dati. Tabelle di contingenza e rappresentazioni grafiche. Definizione di campione aleatorio, di statistica e di stimatore. Esempi di stimatori della media e della varianza di una variabile aleatoria. Test parametrici di verifica delle ipotesi. Ipotesi semplici e ipotesi composte. L’errore del primo e del secondo tipo. Livello di significatività di un test. I test per i parametri della distribuzione normale. Test per la media, per il confronto di medie tra campioni indipendenti e dipendenti, per il confronto di varianze. L''analisi per grandi campioni.
-Statistica non parametrica. Il test del chi-quadro di bontà di adattamento, di indipendenza, di omogeneità. Il test dei ranghi di Wilcoxon. Il test dei ranghi di Wilcoxon-Mann-Whitney per due campioni indipendenti. Il test di Wilcoxon dei ranghi segnati (per dati appaiati). Il test di bontà di adattamento di Kolmogorov-Smirnov.
-Analisi della Varianza a una via. Cenni di analisi della varianza a due vie. Il test per i confronti multipli di Tukey. Correlazione, coefficienti di correlazione di Pearson e Spearman.
-Pre-processing del dato: definizione/classificazione e trattamento di missing values, definizione outlier e identificazione outlier. Cenni sui metodi di individuazione e trattamento statistico di oulier. Trasformazioni e normalizzazioni del dato. Cenni sul problema della Curse of Dimensionality e come risolverlo con tecniche di fattorizzazione lineare.
-Esercitazioni al calcolatore tramite il software statistico R https://www.r-project.org

Modalità d'esame

Prova orale sul programma svolto nel corso delle lezioni ed esercitazioni e/o progetto assegnato dai docenti

Testi di riferimento

-Carl D. Meyer - Matrix Analysis and Applied Linear Algebra: 1st (first). Siam, 2001. http://matrixanalysis.com/
-Gilbert Strang - Linear Algebra and Learning from Data, Wellesley-Cambridge Press, 2019 https://math.mit.edu/~gs/learningfromdata/
-Robert Gentleman, Vince Carey, Wolfgang Huber, Rafael Irizarry, Sandrine Dudoit, Bioinformatics and Computational Biology Solutions Using R and Bioconductor, Springer 2005. (http://www.bioconductor.org/help/publications/books/bioinformatics-and-computational-biology- solutions/)
-Matthew He, Sergey Petoukhov. Mathematics of Bioinformatics: Theory, Practice, and Applications. Wiley&Sons 2011 https://onlinelibrary.wiley.com/doi/book/10.1002/9780470904640

  • Michael C. Whitlock, Dolph Schluter. Analisi statistica dei dati biologici. Zanichelli
    -I.T. Jolliffe, Principal Component Analysis, Second Edition, 2002, Springer https://link.springer.com/book/10.1007/b98835

Codice insegnamento 66146

Genetica (2) 1° anno · 6 CFU · BIOS-14/A · 0 file
Indicare la denominazione della disciplina, elencando eventuali moduli/ tirocinio o altra attività formativa 1° anno · 0 file
Machine Learning e Intelligenza Artificiale 1° anno · 2° semestre · 6 CFU · 0 file
Matematica per l’analisi 1° anno · 3 CFU · MAT/08 · 0 file
Metodi numerici per la 1° anno · 1° semestre · 6 CFU · MATH-05/A · 0 file

Fondamenti di Matematica per l’Analisi dei Dati: Acquisizione degli strumenti matematico-statistici per l’analisi dei dati e delle tecniche numeriche per il pre-processing del dato -Metodi numerici per la bioinformatica:…

Scheda dell'insegnamento

Obiettivi formativi

  • Fondamenti di Matematica per l’Analisi dei Dati:
    Acquisizione degli strumenti matematico-statistici per l’analisi dei dati e delle tecniche numeriche per il pre-processing del dato
    -Metodi numerici per la bioinformatica:
    Acquisizione delle metodologie numeriche classiche e delle tecniche di algebra lineare per l’analisi di dati biomedici strutturati

Metodi Numerici per la Bioinformatica

  • Formalizzazione matematica dei problemi di analisi dei dati
  • Approcci e tecniche numeriche e di algebra lineare per l'analisi dei dati
  • Comprensione e utilizzo di codici numerici per l'analisi di insiemi di dati biologici
    Fondamenti di Matematica per l'analisi dei dati
  • Struttura e tipologia dei dati
  • Concetti di statistica descrittiva per l'analisi del dato
  • Test di ipotesi di statistica parametrica e non parametrica
  • Approcci e tecniche matematiche per il pre-processing del dato
  • Codici numerici che implementano le tecniche standard per l'analisi dei dati

Metodi Numerici per la Bioinformatica

  • Conoscenza e utilizzo dei meccanismi di base dell'algebra lineare per l'analisi dei dati biomedici.
  • Comprensione e implementazione dei flussi di lavoro per l'analisi numerica dei dati biomedici.
    Fondamenti di Matematica per l'Analisi dei dati
  • Conoscenza dei concetti matematico-statistici e utilizzo delle tecniche standard per l’analisi dei dati biomedici
  • Implementazione di workflow per l’analisi dei dati biomedici

Al termine dell’insegnamento lo studente dovrà essere in grado di applicare le tecniche matematico statistiche di analisi di dati di tipo biomedico e identificare le eventuali problematiche da trattare. Inoltre avrà acquisito
Autonomia di giudizio per

  • Comprendere la struttura del dato proposto e identificare la metodologia più appropriata per descriverlo
  • Individuare la tecnica adatta a rispondere ai quesiti posti
  • Gestire la presenza di outlier, missing data e saper gestire eventuali normalizzazioni
  • Implementare un workflow per l'analisi del dati.
  • Esporre i concetti appresi e le scelte fatte per l'analisi del dato in esame con formalismo matematico.
  • Dimostrare di aver acquisito un metodo di studio adeguato, supportato dalla consultazione dei testi, da percorsi di approfondimento individuali o e in gruppo e dalla implementazione al calcolatore delle tecniche esposte durante il corso.

Programma

Metodi Numerici per la Bioinformatica
Algebra Lineare per la bioinformatica: concetti di vettore, matrice, operazioni vettoriali e matriciali. Concetti di norme matriciali di spazi vettoriali, spazi di matrici, spazi vettoriali generati. Basi di spazi vettoriali e di matrici. Sistemi lineari e loro rappresentazione matriciale. Prodotto di matrici di dati e fattorizzazioni di matrici di dati. Fattorizzazione QR e concetti di ortogonalità tra vettori e matrici. Metodi per il calcolo di autovalori e autovettori di una matrice di dati. Decomposizione a Valori Singolari (SVD) e SVD troncata.
-Analisi delle componenti principali (PCA): Matrice di covarianza e di correlazione dei dati. Diagonalizzazione di una matrice simmetrica. Autovalori di una forma quadratica definita positiva. Componenti principali di vettori di variabili aleatorie. Combinazioni lineari di massima varianza. Significato statistico e probabilistico delle componenti principali. Analisi delle componenti principali per insiemi di dati multivariati. Euristiche per il calcolo del numero ottimale delle componenti principali. PCA come metodo di feature selection. Interpretazione delle componenti principali: il cerchio delle correlazioni, gli Z-scores. Applicazioni reali della PCA.
-Cenni su metodi di approssimazione low rank di matrici di dati omici. SVD, Fattorizzazioni nonnegative di matrici (NMF). Sparse Nonnegative Matrix Factorization per il Clustering.
-Introduzione al problema di clustering, distanze utili per il clustering. Clustering Gerarchico divisivo e agglomerativo (rappresentazioni tramite dendrogramma e metodi di linkaggio: singolo, completo, medio), K-means. Metodi euristici per la scelta del numero ottimale di clusters nel K-means, Equivalenza tra NMF e K-means con vincolo rilassato di ortogonalità (Teoremi e dimostrazioni), K- medoide (cenni). Indici Interni, Indici Esterni e altre misure di bontà degli algoritmi di clustering. Algoritmi Model e Density Based (Mixture Model e DBSCAN): cenni.
-Introduzione ai modelli di regressione Lineare Semplice e Multipla, Stima dei coefficienti con OLS (Ordinary Least Squares ed equazioni Normali). Teorema di Gauss-Markov e condizioni per il miglior stimatore lineare corretto. Interpretazione geometrica della regressione. Regressione per lo studio della collinearità e l’individuazione degli outliers in matrici di dati. Misure di valutazione dei modelli di regressione. Regressione logistica semplice e multipla. Regressione logistica e distribuzioni bernulliana e multinomiale.
-Esercitazioni al calcolatore tramite il software statistico R https://www.r-project.org
Fondamenti di Matematica per l'Analisi dei dati
-Statistica descrittiva per l'analisi esplorativa dei dati. Tabelle di contingenza e rappresentazioni grafiche. Definizione di campione aleatorio, di statistica e di stimatore. Esempi di stimatori della media e della varianza di una variabile aleatoria. Test parametrici di verifica delle ipotesi. Ipotesi semplici e ipotesi composte. L’errore del primo e del secondo tipo. Livello di significatività di un test. I test per i parametri della distribuzione normale. Test per la media, per il confronto di medie tra campioni indipendenti e dipendenti, per il confronto di varianze. L''analisi per grandi campioni.
-Statistica non parametrica. Il test del chi-quadro di bontà di adattamento, di indipendenza, di omogeneità. Il test dei ranghi di Wilcoxon. Il test dei ranghi di Wilcoxon-Mann-Whitney per due campioni indipendenti. Il test di Wilcoxon dei ranghi segnati (per dati appaiati). Il test di bontà di adattamento di Kolmogorov-Smirnov.
-Analisi della Varianza a una via. Cenni di analisi della varianza a due vie. Il test per i confronti multipli di Tukey. Correlazione, coefficienti di correlazione di Pearson e Spearman.
-Pre-processing del dato: definizione/classificazione e trattamento di missing values, definizione outlier e identificazione outlier. Cenni sui metodi di individuazione e trattamento statistico di oulier. Trasformazioni e normalizzazioni del dato. Cenni sul problema della Curse of Dimensionality e come risolverlo con tecniche di fattorizzazione lineare.
-Esercitazioni al calcolatore tramite il software statistico R https://www.r-project.org

Modalità d'esame

Prova orale sul programma svolto nel corso delle lezioni ed esercitazioni e/o progetto assegnato dai docenti

Testi di riferimento

-Carl D. Meyer - Matrix Analysis and Applied Linear Algebra: 1st (first). Siam, 2001. http://matrixanalysis.com/
-Gilbert Strang - Linear Algebra and Learning from Data, Wellesley-Cambridge Press, 2019 https://math.mit.edu/~gs/learningfromdata/
-Robert Gentleman, Vince Carey, Wolfgang Huber, Rafael Irizarry, Sandrine Dudoit, Bioinformatics and Computational Biology Solutions Using R and Bioconductor, Springer 2005. (http://www.bioconductor.org/help/publications/books/bioinformatics-and-computational-biology- solutions/)
-Matthew He, Sergey Petoukhov. Mathematics of Bioinformatics: Theory, Practice, and Applications. Wiley&Sons 2011 https://onlinelibrary.wiley.com/doi/book/10.1002/9780470904640

  • Michael C. Whitlock, Dolph Schluter. Analisi statistica dei dati biologici. Zanichelli
    -I.T. Jolliffe, Principal Component Analysis, Second Edition, 2002, Springer https://link.springer.com/book/10.1007/b98835

Codice insegnamento magistrale/bioinformatica::Metodi numerici per la

Progettazione di molecole 1° anno · 6 CFU · CHEM-07/A · 0 file
Programmazione ed 1° anno · 9 CFU · IINF-05/A · 0 file

Il corso si propone di introdurre gli elementi base della programmazione imperativa strutturata per formulare soluzioni algoritmiche a problemi di complessità limitata. In particolare lo studente acquisirà la capacità di…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di introdurre gli elementi base della programmazione imperativa strutturata per formulare soluzioni algoritmiche a problemi di complessità limitata. In particolare lo studente acquisirà la capacità di usare il linguaggio di programmazione C come strumento per modellare problemi e formalizzarne le soluzioni.

  • Acquisire conoscenze che consentano allo studente di comprendere come si può indicare ad un elaboratore elettronico (macchina automatica di impiego universale, hardware) la soluzione di un problema o di una classe di problemi, che l'elaboratore può risolvere, con un metodo ed un linguaggio appropriato, creando un apposito programma (software) eseguibile dall'elaboratore.
  • Acquisire la capacità di ragionare ed individuare una soluzione ad un problema (algoritmo) secondo il paradigma della programmazione imperativa strutturata;
  • Comprendere l'uso di un linguaggio di progettazione non convenzionale (es. pseudocodice) e l'uso di una rappresentazione grafica (es. flow chart) per descrivere con un formalismo semplice un algoritmo;
  • Comprendere il lessico, la sintassi e la semantica del linguaggio di programmazione C;
  • Acquisire la capacità di scrivere un programma strutturato in linguaggio C;
  • Acquisire la capacità di individuare casi di test per il dominio cui fa riferimento il programma creato;
  • Acquisire la capacità di utilizzare un ambiente di sviluppo (es. DevC++, Xcode, Visual Studio) per trasformare il programma sorgente (in C) in programma eseguibile ed eseguirlo.

Autonomia di giudizio

  • Acquisire la capacità di verificare che l'algoritmo individuato risponda alle specifiche di un problema;
  • Acquisire la capacità di verificare che i risultati ottenuti dopo l'esecuzione del programma siano quelli attesi.
    Abilità comunicative
  • Imparare a commentare il codice prodotto al fine di renderlo comprensibile e agevolmente modificabile da altri professionisti, con l'obiettivo di sviluppare in team.
    Capacità di apprendere in modo autonomo
  • Capacità di approfondire concetti attraverso lo studio autonomo di materiale video prodotto e proposto dal docente;
  • Capacità di completare autonomamente il percorso formativo previsto dal testo di riferimento, oltre i contenuti previsti dal programma dell'insegnamento.

Programma

Modulo 1: Algoritmi, sequenze e istruzioni condizionali

  • Introduzione al linguaggio C
  • Tipi di dato e variabili
  • Input e output (printf, scanf)
  • Architettura degli elaboratori: modello architetturale di von Neumann e concetti di memoria (stack e heap)
  • Operatori aritmetici e precedenza degli operatori
  • Strutture di controllo condizionali: if, if...else, if...else if...else
  • Operatori relazionali e logici
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 2: Cicli while, do...while e for
  • Il costrutto while
  • Condizioni complesse nei cicli
  • Concetto di ciclo infinito
  • Diagramma di flusso e pseudocodice del ciclo while
  • Operatori di assegnazione, incremento e decremento
  • Il costrutto do...while
  • Applicazioni tipiche del do...while
  • Il costrutto for e confronto con while
  • Utilizzo di size_t nei cicli for
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 3: Fondamenti della programmazione strutturata
  • Concetto di algoritmo
  • Diagrammi di flusso e principali simboli
  • Teorema di Böhm-Jacopini
  • Diagrammi di flusso strutturati e non strutturati
  • Normalizzazione di pseudocodice non strutturato
  • Convenzioni per la scrittura del codice
  • Istruzioni da evitare: goto, break, continue
  • Il costrutto switch...case
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 4: Corretta scrittura del codice e convenzioni
  • Importanza dello stile di programmazione
  • Convenzioni di indentazione e leggibilità del codice
  • Convenzioni per i nomi di variabili e funzioni (Camel Case, Pascal Case, pratiche industriali)
  • Regole fondamentali: Commenti, Coerenza e Chiarezza (3C)
  • Variabili: dichiarazione, inizializzazione, visibilità e scelta corretta del tipo
  • Funzioni: prototipi, nomi significativi e dimensioni contenute
  • Strutture di controllo (if/else, for, while, do...while) e buone pratiche
  • Parametri nei sottoprogrammi e passaggio di array
  • Eliminazione del codice ridondante e dei sottoprogrammi non necessari
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 5: Array
  • Definizione e caratteristiche degli array
  • Utilità degli array: gestione di dati omogenei, ordinamento, ricerca, statistiche, serie temporali, grafici, record, funzioni matematiche e stringhe
  • Dichiarazione e utilizzo degli array
  • Inizializzazione: a zero, completa, parziale, selettiva e senza indicazione esplicita della dimensione
  • Array di caratteri e stringhe
  • Array costanti
  • Variable Length Arrays (VLA)
  • Operatore ternario e sue applicazioni
  • Numeri casuali e funzioni rand, srand e time
  • Applicazioni pratiche con gli array: giochi ed esercizi
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 6: Modularizzazione, procedure e funzioni
  • Concetto di modularità del software e approccio top-down
  • Definizione e vantaggi delle funzioni
  • Struttura di una funzione: nome, parametri, istruzioni e valore di ritorno
  • Prototipi di funzione e loro utilizzo
  • Passaggio dei parametri: per valore e per riferimento
  • Valori di ritorno e chiamate di funzione
  • Conversioni automatiche di tipo negli argomenti
  • Passaggio di array alle funzioni
  • Funzioni ricorsive: concetto e condizione di terminazione
  • Funzioni variadiche e gestione degli argomenti mediante stdarg.h
  • Organizzazione dei programmi su più file (.h e .c)
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 7: Debugging del codice
  • Tipologie di errore: errori sintattici, logici e malfunzionamenti in esecuzione
  • Concetto e tecniche di debugging
  • Attivazione e utilizzo del debugger in Dev-C++
  • Modalità di esecuzione: Step Over e Step Into
  • Breakpoint: inserimento e utilizzo
  • Watch delle variabili: monitoraggio dei valori durante l'esecuzione
  • Valutazione delle espressioni logiche durante il debugging
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo: Coding – esercitazioni pratiche
  • Lettura di sequenze di numeri e calcolo delle medie progressive
  • Verifica di parole palindrome
  • Somma progressiva di sequenze di numeri
  • Calcolo del massimo, della media e della radice quadrata della somma di cinque numeri
  • Disegno di un rettangolo mediante caratteri ASCII
  • Utilizzo della funzione system() per la pausa e la pulizia dello schermo
  • Gioco di individuazione di un numero casuale con indicazioni maggiore/minore
  • Verifica dei multipli tra numeri interi
  • Calcolo del Massimo Comune Divisore (MCD)
  • Classificazione dei triangoli: equilatero, isoscele e scaleno
  • Implementazione di una semplice calcolatrice
  • Verifica degli anni bisestili
  • Esercizi con diagrammi di flusso: fattoriale e area di un poligono regolare
    Modulo 8: Stili di programmazione e corretta scrittura del codice
  • Importanza dello stile di programmazione: leggibilità, riusabilità e manutenibilità
  • Esempi estremi di codice offuscato (IOCCC)
  • Regole C-ZEN per la buona scrittura del codice
  • Convenzioni di scrittura: Camel Case, Pascal Case, denominazione di variabili e funzioni
  • Stili di indentazione, spaziatura e leggibilità del codice
  • Uso corretto di variabili, funzioni e parametri
  • Buone pratiche nell'utilizzo dei costrutti (if/else, for, while, do...while)
  • Gestione della memoria e accesso ai file con controllo degli errori
  • Passaggio di array e parametri alle funzioni
  • Riduzione del codice ridondante e restituzione di più risultati da una funzione
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 9: Caratteri e stringhe
  • Gestione dei caratteri in C (char)
  • Codifica ASCII e Unicode
  • Stringhe come array di caratteri
  • Dichiarazione e inizializzazione delle stringhe
  • Input e output delle stringhe (scanf, gets, fgets, printf, puts)
  • Funzioni della libreria (strlen, strcpy, strcat, strcmp, ecc.)
  • Iterazione sulle stringhe mediante cicli
  • Manipolazione delle stringhe: copia, concatenazione, confronto e ricerca
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 10: Strutture e union
  • Introduzione alle strutture (struct) come aggregazioni di dati eterogenei
  • Membri (attributi) delle strutture e regole di dichiarazione
  • Definizione, inizializzazione e accesso ai membri (. e ->)
  • Utilizzo di typedef con le strutture
  • Strutture annidate e gerarchie di dati
  • Passaggio delle strutture alle funzioni: per valore e per riferimento
  • Strutture autoreferenziali e applicazioni: liste, code, alberi e grafi
  • Introduzione alle union (union) e differenze rispetto alle strutture
  • Inizializzazione e regole di utilizzo delle union
  • Strutture e union annidate e anonime
  • Progettazione di strutture dati complesse
  • Coding in action: esercizi pratici sugli argomenti trattati

Modalità d'esame

La verifica dell’apprendimento prevede la possibilità di sostenere due prove intermedie, con valore esonerante, oppure l’esame regolare. La prima prova intermedia si tiene in prossimità della settimana di interruzione delle lezioni, normalmente collocata intorno alla metà di novembre, e consiste nella soluzione di un problema mediante l’individuazione dell’algoritmo e lo sviluppo del relativo flowchart strutturato; sono inoltre somministrate una serie di domande.
Il voto è espresso in trentesimi.
La seconda prova intermedia si svolge immediatamente prima o dopo le vacanze natalizie, a seconda dell’andamento del corso, e consiste nello sviluppo di un algoritmo utilizzando il linguaggio di programmazione C, sulla base di requisiti forniti nella traccia.
Anche in questo caso la valutazione è espressa in trentesimi.
La media dei voti conseguiti nelle due prove costituisce il voto finale proposto dal docente per la verbalizzazione. I voti degli esoneri hanno validità esclusivamente per la prima sessione di esami (gennaio/febbraio). Lo studente ha comunque la possibilità di integrare il percorso con una prova orale facoltativa.
Gli studenti che non partecipano alle prove intermedie o che non le superano sostengono l’esame a partire dalla sessione di gennaio. La modalità dell’esame regolare è analoga a quella delle prove intermedie e prevede sia la parte scritta, con sviluppo di un algoritmo e relativo flowchart strutturato, sia lo svolgimento di domande, oltre alla realizzazione di un algoritmo in linguaggio C. La votazione finale è espressa in trentesimi.
Materiali permessi per sostenere la prima prova di valutazione intermedia e la prova scritta d'esame: testo di riferimento in formato esclusivamente cartaceo. Slides e materiale del corso in formato rigorosamente cartaceo.
I risultati di tutte le prove vengono comunicati con lista pubblica (numero di matricola e voto conseguito) per email o social. Il voto finale conseguito viene proposto esclusivamente sulla piattaforma Esse3.
Incentivi alla frequenza: l'eventuale lode viene più frequentemente attribuita agli studenti che per la stragrande maggioranza delle lezioni hanno frequentato, interagito nel corso della lezione, proposto soluzioni e risolto i casi proposti dal docente a lezione.

Testi di riferimento

Testo da cui studiare:
P. Deitel e H. Deitel
Il linguaggio C – Fondamenti e tecniche di programmazione
8^edizione
Pearson 2016
ISBN: 9788891901651
(vanno bene anche le edizioni successive e precedenti dalla 4^ in poi)
Testo integrativo, facoltativo:
Kim N. King, Programmazione in C, Maggioli Editore, ISBN 8838785821

Codice insegnamento magistrale/bioinformatica::Programmazione ed

Programmazione ed Elementi 1° anno · 1° semestre · 9 CFU · IINF-05/A · 0 file

Il corso si propone di introdurre gli elementi base della programmazione imperativa strutturata per formulare soluzioni algoritmiche a problemi di complessità limitata. In particolare lo studente acquisirà la capacità di…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di introdurre gli elementi base della programmazione imperativa strutturata per formulare soluzioni algoritmiche a problemi di complessità limitata. In particolare lo studente acquisirà la capacità di usare il linguaggio di programmazione C come strumento per modellare problemi e formalizzarne le soluzioni.

  • Acquisire conoscenze che consentano allo studente di comprendere come si può indicare ad un elaboratore elettronico (macchina automatica di impiego universale, hardware) la soluzione di un problema o di una classe di problemi, che l'elaboratore può risolvere, con un metodo ed un linguaggio appropriato, creando un apposito programma (software) eseguibile dall'elaboratore.
  • Acquisire la capacità di ragionare ed individuare una soluzione ad un problema (algoritmo) secondo il paradigma della programmazione imperativa strutturata;
  • Comprendere l'uso di un linguaggio di progettazione non convenzionale (es. pseudocodice) e l'uso di una rappresentazione grafica (es. flow chart) per descrivere con un formalismo semplice un algoritmo;
  • Comprendere il lessico, la sintassi e la semantica del linguaggio di programmazione C;
  • Acquisire la capacità di scrivere un programma strutturato in linguaggio C;
  • Acquisire la capacità di individuare casi di test per il dominio cui fa riferimento il programma creato;
  • Acquisire la capacità di utilizzare un ambiente di sviluppo (es. DevC++, Xcode, Visual Studio) per trasformare il programma sorgente (in C) in programma eseguibile ed eseguirlo.

Autonomia di giudizio

  • Acquisire la capacità di verificare che l'algoritmo individuato risponda alle specifiche di un problema;
  • Acquisire la capacità di verificare che i risultati ottenuti dopo l'esecuzione del programma siano quelli attesi.
    Abilità comunicative
  • Imparare a commentare il codice prodotto al fine di renderlo comprensibile e agevolmente modificabile da altri professionisti, con l'obiettivo di sviluppare in team.
    Capacità di apprendere in modo autonomo
  • Capacità di approfondire concetti attraverso lo studio autonomo di materiale video prodotto e proposto dal docente;
  • Capacità di completare autonomamente il percorso formativo previsto dal testo di riferimento, oltre i contenuti previsti dal programma dell'insegnamento.

Programma

Modulo 1: Algoritmi, sequenze e istruzioni condizionali

  • Introduzione al linguaggio C
  • Tipi di dato e variabili
  • Input e output (printf, scanf)
  • Architettura degli elaboratori: modello architetturale di von Neumann e concetti di memoria (stack e heap)
  • Operatori aritmetici e precedenza degli operatori
  • Strutture di controllo condizionali: if, if...else, if...else if...else
  • Operatori relazionali e logici
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 2: Cicli while, do...while e for
  • Il costrutto while
  • Condizioni complesse nei cicli
  • Concetto di ciclo infinito
  • Diagramma di flusso e pseudocodice del ciclo while
  • Operatori di assegnazione, incremento e decremento
  • Il costrutto do...while
  • Applicazioni tipiche del do...while
  • Il costrutto for e confronto con while
  • Utilizzo di size_t nei cicli for
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 3: Fondamenti della programmazione strutturata
  • Concetto di algoritmo
  • Diagrammi di flusso e principali simboli
  • Teorema di Böhm-Jacopini
  • Diagrammi di flusso strutturati e non strutturati
  • Normalizzazione di pseudocodice non strutturato
  • Convenzioni per la scrittura del codice
  • Istruzioni da evitare: goto, break, continue
  • Il costrutto switch...case
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 4: Corretta scrittura del codice e convenzioni
  • Importanza dello stile di programmazione
  • Convenzioni di indentazione e leggibilità del codice
  • Convenzioni per i nomi di variabili e funzioni (Camel Case, Pascal Case, pratiche industriali)
  • Regole fondamentali: Commenti, Coerenza e Chiarezza (3C)
  • Variabili: dichiarazione, inizializzazione, visibilità e scelta corretta del tipo
  • Funzioni: prototipi, nomi significativi e dimensioni contenute
  • Strutture di controllo (if/else, for, while, do...while) e buone pratiche
  • Parametri nei sottoprogrammi e passaggio di array
  • Eliminazione del codice ridondante e dei sottoprogrammi non necessari
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 5: Array
  • Definizione e caratteristiche degli array
  • Utilità degli array: gestione di dati omogenei, ordinamento, ricerca, statistiche, serie temporali, grafici, record, funzioni matematiche e stringhe
  • Dichiarazione e utilizzo degli array
  • Inizializzazione: a zero, completa, parziale, selettiva e senza indicazione esplicita della dimensione
  • Array di caratteri e stringhe
  • Array costanti
  • Variable Length Arrays (VLA)
  • Operatore ternario e sue applicazioni
  • Numeri casuali e funzioni rand, srand e time
  • Applicazioni pratiche con gli array: giochi ed esercizi
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 6: Modularizzazione, procedure e funzioni
  • Concetto di modularità del software e approccio top-down
  • Definizione e vantaggi delle funzioni
  • Struttura di una funzione: nome, parametri, istruzioni e valore di ritorno
  • Prototipi di funzione e loro utilizzo
  • Passaggio dei parametri: per valore e per riferimento
  • Valori di ritorno e chiamate di funzione
  • Conversioni automatiche di tipo negli argomenti
  • Passaggio di array alle funzioni
  • Funzioni ricorsive: concetto e condizione di terminazione
  • Funzioni variadiche e gestione degli argomenti mediante stdarg.h
  • Organizzazione dei programmi su più file (.h e .c)
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 7: Debugging del codice
  • Tipologie di errore: errori sintattici, logici e malfunzionamenti in esecuzione
  • Concetto e tecniche di debugging
  • Attivazione e utilizzo del debugger in Dev-C++
  • Modalità di esecuzione: Step Over e Step Into
  • Breakpoint: inserimento e utilizzo
  • Watch delle variabili: monitoraggio dei valori durante l'esecuzione
  • Valutazione delle espressioni logiche durante il debugging
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo: Coding – esercitazioni pratiche
  • Lettura di sequenze di numeri e calcolo delle medie progressive
  • Verifica di parole palindrome
  • Somma progressiva di sequenze di numeri
  • Calcolo del massimo, della media e della radice quadrata della somma di cinque numeri
  • Disegno di un rettangolo mediante caratteri ASCII
  • Utilizzo della funzione system() per la pausa e la pulizia dello schermo
  • Gioco di individuazione di un numero casuale con indicazioni maggiore/minore
  • Verifica dei multipli tra numeri interi
  • Calcolo del Massimo Comune Divisore (MCD)
  • Classificazione dei triangoli: equilatero, isoscele e scaleno
  • Implementazione di una semplice calcolatrice
  • Verifica degli anni bisestili
  • Esercizi con diagrammi di flusso: fattoriale e area di un poligono regolare
    Modulo 8: Stili di programmazione e corretta scrittura del codice
  • Importanza dello stile di programmazione: leggibilità, riusabilità e manutenibilità
  • Esempi estremi di codice offuscato (IOCCC)
  • Regole C-ZEN per la buona scrittura del codice
  • Convenzioni di scrittura: Camel Case, Pascal Case, denominazione di variabili e funzioni
  • Stili di indentazione, spaziatura e leggibilità del codice
  • Uso corretto di variabili, funzioni e parametri
  • Buone pratiche nell'utilizzo dei costrutti (if/else, for, while, do...while)
  • Gestione della memoria e accesso ai file con controllo degli errori
  • Passaggio di array e parametri alle funzioni
  • Riduzione del codice ridondante e restituzione di più risultati da una funzione
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 9: Caratteri e stringhe
  • Gestione dei caratteri in C (char)
  • Codifica ASCII e Unicode
  • Stringhe come array di caratteri
  • Dichiarazione e inizializzazione delle stringhe
  • Input e output delle stringhe (scanf, gets, fgets, printf, puts)
  • Funzioni della libreria (strlen, strcpy, strcat, strcmp, ecc.)
  • Iterazione sulle stringhe mediante cicli
  • Manipolazione delle stringhe: copia, concatenazione, confronto e ricerca
  • Coding in action: esercizi pratici sugli argomenti trattati
    Modulo 10: Strutture e union
  • Introduzione alle strutture (struct) come aggregazioni di dati eterogenei
  • Membri (attributi) delle strutture e regole di dichiarazione
  • Definizione, inizializzazione e accesso ai membri (. e ->)
  • Utilizzo di typedef con le strutture
  • Strutture annidate e gerarchie di dati
  • Passaggio delle strutture alle funzioni: per valore e per riferimento
  • Strutture autoreferenziali e applicazioni: liste, code, alberi e grafi
  • Introduzione alle union (union) e differenze rispetto alle strutture
  • Inizializzazione e regole di utilizzo delle union
  • Strutture e union annidate e anonime
  • Progettazione di strutture dati complesse
  • Coding in action: esercizi pratici sugli argomenti trattati

Modalità d'esame

La verifica dell’apprendimento prevede la possibilità di sostenere due prove intermedie, con valore esonerante, oppure l’esame regolare. La prima prova intermedia si tiene in prossimità della settimana di interruzione delle lezioni, normalmente collocata intorno alla metà di novembre, e consiste nella soluzione di un problema mediante l’individuazione dell’algoritmo e lo sviluppo del relativo flowchart strutturato; sono inoltre somministrate una serie di domande.
Il voto è espresso in trentesimi.
La seconda prova intermedia si svolge immediatamente prima o dopo le vacanze natalizie, a seconda dell’andamento del corso, e consiste nello sviluppo di un algoritmo utilizzando il linguaggio di programmazione C, sulla base di requisiti forniti nella traccia.
Anche in questo caso la valutazione è espressa in trentesimi.
La media dei voti conseguiti nelle due prove costituisce il voto finale proposto dal docente per la verbalizzazione. I voti degli esoneri hanno validità esclusivamente per la prima sessione di esami (gennaio/febbraio). Lo studente ha comunque la possibilità di integrare il percorso con una prova orale facoltativa.
Gli studenti che non partecipano alle prove intermedie o che non le superano sostengono l’esame a partire dalla sessione di gennaio. La modalità dell’esame regolare è analoga a quella delle prove intermedie e prevede sia la parte scritta, con sviluppo di un algoritmo e relativo flowchart strutturato, sia lo svolgimento di domande, oltre alla realizzazione di un algoritmo in linguaggio C. La votazione finale è espressa in trentesimi.
Materiali permessi per sostenere la prima prova di valutazione intermedia e la prova scritta d'esame: testo di riferimento in formato esclusivamente cartaceo. Slides e materiale del corso in formato rigorosamente cartaceo.
I risultati di tutte le prove vengono comunicati con lista pubblica (numero di matricola e voto conseguito) per email o social. Il voto finale conseguito viene proposto esclusivamente sulla piattaforma Esse3.
Incentivi alla frequenza: l'eventuale lode viene più frequentemente attribuita agli studenti che per la stragrande maggioranza delle lezioni hanno frequentato, interagito nel corso della lezione, proposto soluzioni e risolto i casi proposti dal docente a lezione.

Testi di riferimento

Testo da cui studiare:
P. Deitel e H. Deitel
Il linguaggio C – Fondamenti e tecniche di programmazione
8^edizione
Pearson 2016
ISBN: 9788891901651
(vanno bene anche le edizioni successive e precedenti dalla 4^ in poi)
Testo integrativo, facoltativo:
Kim N. King, Programmazione in C, Maggioli Editore, ISBN 8838785821

Codice insegnamento UC418387

Programmazione per la 1° anno · 9 CFU · BIOS-08/A · 0 file
Scienze Omiche: Genomica e Trascrittomica Integrato con Scienze Omiche: Proteomica e Metabolomica 1° anno · 2° semestre · 9 CFU · 0 file
Systems biology (5) 1° anno · 6 CFU · BIOS-10/A · 0 file
Tecnologie per le 1° anno · 1° semestre · 6 CFU · PHYS-06/A · 0 file
Intelligenza Artificiale 2° anno · 6 CFU · ING-INF/05 · 0 file
Metabolomica (4) 2° anno · 3 CFU · BIO/10 · 0 file
Modellistica dei sistemi 2° anno · 2° semestre · 6 CFU · CHEM-02/A · 0 file
Modellistica molecolare 2° anno · 2° semestre · 6 CFU · BIOS-07/A · 0 file
Prova finale 2° anno · 6 CFU · 0 file
Tirocinio per la prova finale 2° anno · 22 CFU · 0 file

Recensioni del corso

Studi qui? Accedi per lasciare la tua recensione e aiutare altri studenti a scegliere.

★

Nessuna recensione per ora — e la prima è la più preziosa. Condividi la tua esperienza e orienta le future matricole.