Scuola di Medicina e Chirurgia

Università Magna Graecia di Catanzaro

Infrastrutture di Calcolo e Algoritmi Efficienti per la Biologia e Medicina

Ingegneria Biomedica

Il corso presenta le principali problematiche, metodologie, infrastrutture di calcolo, ambienti di programmazione, algoritmi e strumenti software per la memorizzazione, gestione ed analisi efficiente dei principali dati biomedici, con particolare riferimento ai dati sperimentali generati in biologia (es. dati omici quali dati genomici, proteomici, interattomici) ed ai dati utilizzati in medicina (es. biosegnali, bioimmagini, dati clinici e sanitari).

Inoltre, il corso fornisce le basi per progettare e sviluppare applicazioni parallele, distribuite, web-based o cloud-based, per la gestione ed analisi di grossi quantitativi di dati biomedici.

Infine, il corso presenta le principali tecniche per l'estrazione di conoscenza dai dati con particolare riferimento alle tecniche di preprocessing e agli algoritmi di data mining.

Collegamenti Veloci:
Docente:
Mario Cannataro
cannataro@unicz.it
09613694100
Edificio Edificio Bioscienze Stanza: Stanza 9, Livello IV
Martedi e Mercoledi dalle 14:00 alle 15:00

SSD:
ING-INF/05 - Sistemi di elaborazione delle informazioni

CFU:
9
Obiettivi del Corso e Risultati di apprendimento attesi

i. Conoscenza e capacità di comprensione (knowledge and understanding)

Conoscenza delle principali architetture di calcolo parallele e distribuite, dei principali modelli ed ambienti di programmazione parallela e distribuita;

Conoscenza delle principali metodologie per la progettazione e sviluppo di applicazioni parallele, distribuite e web-based;

Conoscenza delle principali tecniche di preprocessing dei dati e di analisi data mining

ii. Capacità di applicare conoscenza a comprensione (applying knowledge and understanding)

Capacità di effettuare l'analisi dei requisiti, la progettazione e l'implementazione di applicazioni parallele o distribuite web-based per l'analisi di grossi volumi di dati biomedici,

Capacità di valutare le principali prestazioni (speed-up e scale-up) delle applicazioni parallele o distribuite.

Capacità di condurre un esperimento di analisi dati comprendente preprocessing, scelta della tecnica di data mining (es. classificazione, clustering, regressione), valutazione della qualità dei risultati.

Capacità di utilizzo dei linguaggi/librerie/ambienti software per la progettazione e sviluppo di applicazioni parallele o distribuite o web/cloud-based (MPI,WebML).

Capacità di utilizzo dei linguaggi/ambienti software per l'analisi dati (Python, Weka).

iii. Autonomia di giudizio (making judgement)

Capacità di raccogliere e interpretare i dati rilevanti ai fini della progettazione di applicazioni parallele o distribuite o al fine di condurre di un esperimento di analisi dati;

Capacità di integrare le conoscenze di diverse tipologie di dati (es. dati omici) e di gestire la complessità di un esperimento di analisi dati che comprende vari passi.

Capacità di impostare un esperimento con dati incompleti.

iv. Capacità di apprendimento (learning skills)

Capacità di studiare in un modo ampiamente auto-gestito o autonomo.

Capacità di studiare e analizzare articoli scientifici nel settore informatico.

v. Abilità comunicative (communication skills)

Capacità di comunicare la progettazione di un sistema software o di un esperimento di analisi dati tramite la stesura di relazioni tecniche o la presentazione orale tramite slides

Programma

Introduzione al corso: Motivazioni e casi applicativi.

PARTE I: Calcolo Parallelo

Architetture parallele (Tassonomia di Flynn, Tassonomia estesa di Tanen baum)

Richiami di Sistemi Operativi (Processi, Scheduling dei processi, Multiprogrammazione, Comunicazione e Interazione tra processi)

Modelli di calcolo parallelo: ambiente globale (shared-memory) e ambiente locale (message-passing)

Cenni a Semafori e Monitor

Paradigmi a memoria condivisa: OpenMP

Paradigmi a scambio messaggi: MPI

Data Parallelism e Task Parallelism

Thread: Programmazione Multithreaded in Java

Metriche ed indici per la valutazione delle prestazioni (legge di Amhdal, speed-up, scale-up)

PARTE II: Cloud Computing

Introduzione al Cloud Computing

Virtualizzazione

La Definizione NIST (National Institute of Standards and Technology) di Cloud Computing:

Caratteristiche: on demand self service, broad network access, resource pooling, rapid elasticity, measured services

Modelli di Cloud Computing: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS)

Tipi di Cloud: Public Cloud, Private Cloud, Community Cloud, Hybrid Cloud

Principali Piattaforme Cloud Industriali: Amazon Web Services, Google AppEngine, Microsoft Azure

Principali Piattaforme Cloud Open Source: OpenNebula, Eucapyptus

Sviluppo di applicazioni Cloud su Google AppEngine

PARTE III: Analisi e progettazione di applicazioni web-based

Richiami ad Internet, World Wide Web, protocollo HTTP

Evoluzione Web: distribuzione di contenuti vs erogazione di applicazioni

Architettura multi-tier delle applicazioni Web-based

     °  Elaborazione lato client: Client-side scripting & programming (JavaScript, Java Applet)

     °  Elaborazione lato server: Server-side scripting and programming (JSP, Java Servlets)

     °  Accesso ai dati: Data access layer (JDBC)

Analisi e progettazione delle applicazioni Web

     °  Analisi dei requisiti, Specifica, Progettazione, Realizzazione e rilascio, Verifica e manutenzione

     °  Uso del linguaggio di specifica WebML: modellazione dei dati, dell'ipertesto, della navigazione

     °  Uso dello strumento WebRatio per la progettazione e sviluppo di applicazioni web-based

PARTE IV: Data Mining

Preprocessing dei dati in biologia e medicina (data cleaning, data reduction, normalization, data transformation, distribuzione statistica dei dati)

Esempi di analisi data mining di dataset in biologia e medicina

Principali misure di qualità nella classificazione (accuratezza, precisione)

Valutazione di un esperimento di classificazione (10-fold cross validation, leave-1-out)

 

Stima dell’impegno orario richiesto per lo studio individuale del programma

Didattica Frontale 72 Ore

Studio Individuale 153

Risorse per l'apprendimento

Testi di Riferimento

PARTE I

° A. Grama, A Gupta, G. Karypis, V. Kumar. Introduction to Parallel Computing, Addison-Wesley, 2003

° Bruce Eckel - Thinking in JAVA, 4th Edition, Prentice Hall, Capitolo Concurrency sui thread.

      Scaricabile qui: https://ia800103.us.archive.org/20/items/TIJ4CcR1/TIJ4-cc-R1.pdf

° I. Foster. Designing and Building Parallel Programs. Addison-Wesley, 1995, Versione online

       disponibile qui: http://www.mcs.anl.gov/dbpp.

PARTE II

Christian Baun, Marcel Kunze, Jens Nimis, Stefan Tai. Cloud Computing. Web-Based Dynamic IT Services, Springer Science & Business Media, 2011. ISBN 978-3-642-20916-1   http://www.springer.com/gp/book/9783642209161

Rajkumar Buyya, Christian Vecchiola, S. Thamarai Selvi: Mastering Cloud Computing - Foundations and Applications Programming. Morgan Kaufmann, 468 Pages, May 2013, ISBN: 978-0-12-411454-8.  http://www.buyya.com/MasteringClouds/

PARTE III

Stefano Ceri, Piero Fraternali, Aldo Bongio, Marco Brambilla, Sara Comai, Maristella Matera, Progettazione di dati e applicazioni per il web, McGraw Hill, 2003, ISBN: 8838661389   http://www.ateneonline.it/LibroAteneo.asp?item_id=1588

WebML: www.webml.org

WebRatio: www.webratio.com

Core Web Programming: http://www.corewebprogramming.com/

PARTE IV

Ian H. Witten, Eibe Frank, Mark A. Hall. Data Mining: Practical Machine Learning Tools and Techniques, Morgan Kaufmann Series in Data Management Systems.

 

Attività di supporto

Articoli scientifici forniti dal docente

Diapositive fornite dal docente

Modalità di frequenza

Le modalità sono indicate dal Regolamento didattico d’Ateneo.

Modalità di accertamento

L'esame finale sarà svolto attraverso: (1) l'elaborato di un progetto individuale o di gruppo, (2) l'approfondimento di un argomento inerente il corso; (3) una prova orale.

1. Il progetto comprenderà l'analisi dei requisiti, la progettazione e lo sviluppo di un'applicazione parallela o distribuita o web-based, eventualmente usando metodologie e ambienti di progettazione software assistita da computer (es. WebML e WebRatio). In alternativa, il progetto comprenderà la realizzazione di un esperimento completo di analisi dati (preprocessing, feature selection, data mining, valutazione qualità dell'analisi, visualizzazione dei risultati) a partire da un dataset fornito dal docente e utilizzando piattaforme open source di analisi data. Il progetto dovrà contenere il codice realizzato, una relazione tecnica ed una presentazione che verrà presentata dallo studente durante la prova orale.

2. L'approfondimento consisterà nella stesura di una relazione tecnica individuale riguardante l'approfondimento di uno dei temi svolti a lezione.

3. La prova orale verterà sul programma svolto a lezione.

Voto finale in trentesimi

Il voto finale è una media ponderata dalla valutazione del progetto (40%), della tesina (30%) e della prova orale (30%)

 

 

Conoscenza e comprensione argomento

Capacità di analisi e sintesi

Utilizzo di referenze

Non idoneo

Importanti carenze.

Significative inaccuratezze

Irrilevanti. Frequenti generalizzazioni. Incapacità di sintesi

Completamente inappropriato

18-20

A livello soglia. Imperfezioni evidenti

Capacità appena sufficienti

Appena appropriato

21-23

Conoscenza routinaria

E’ in grado di analisi e sintesi corrette. Argomenta in modo logico e coerente

Utilizza le referenze standard

24-26

Conoscenza buona

Ha capacità di a. e s. buone gli argomenti sono espressi coerentemente

Utilizza le referenze standard

27-29

Conoscenza più che buona

Ha notevoli capacità di a. e s.

Ha approfondito gli argomenti

30-30L

Conoscenza ottima

Ha notevoli capacità di a. e s.

Importanti approfondimenti