Foto personale

Pagina personale di Paolo VALENTE

Dipartimento di Scienze Fisiche, Informatiche e Matematiche
Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica

Contenuti Insegnamento: Programmazione distribuita e mobile

Corso di studio: INFORMATICA (D.M. 270/04) (offerta formativa anno 2017)
  • CFU: 9
  • SSD: INF/01

Obiettivi formativi

Gli obiettivi dell'insegnamento sono: - introdurre le problematiche dello sviluppo dei sistemi distribuiti e dei sistemi mobili - presentare le tecnologie per lo sviluppo di applicazioni distribuite - presentare le piattaforme per i dispositivi mobili - presentare le tecnologie di sviluppo di applicazioni mobili

Prerequisiti

Conoscenze di sistemi operativi e reti di calcolatori

Programma del corso

Programmazione distribuita - Dalle reti di comunicazione ai sistemi distribuiti, sistemi operativi di rete e distribuiti, modelli di interazione tra componenti distribuiti - Comunicazione e sincronizzazione distribuita, clock logici e fisici, mutua esclusione distribuita - Tecnologie ad oggetti per lo sviluppo di applicazioni distribuite, problematiche - Esempio: Java RMI - Sistemi a multiagente: definizioni, problematiche, modelli decisionali ed esempi d'applicazione - Autonomic Computing: definizioni, problematiche e applicazioni. Programmazione mobile - Progettazione software su Android: dalle problematiche di progettazione alla gestione di memoria ed energia - Architetture per lo sviluppo su multipiattaforma - Il sistema operativo Linux come ambiente di riferimento e lavoro - Teoria e pratica di sviluppo di nuclei di sistemi operativi - Analisi e modifica di componenti scelti di un nucleo di sistema operativo - Profiling e debugging all'interno di un nucleo di sistema operativo

Testi di riferimento

Dispense a cura del docente. Libri consigliati: - A. Tanenbaum, M. van Steen, Distributed Systems - Principles and Paradigms, Prentice Hall

Metodi Didattici

Lezioni frontali tramite slide sulla teoria ed esercitazioni in aula di applicazione della teoria. Gli studenti non frequentanti possono accedere alle slide delle lezioni e al materiale delle esercitazioni.

Verifica dell'apprendimento

La verifica di svolgerà attraverso lo sviluppo di un progetto e una prova orale. Il progetto consisterà nello sviluppo di una applicazione distribuita o mobile, in accordo con il docente, e nella produzione della relativa documentazione. Il progetto potrà essere svolto anche in gruppo nominando un project leader. La prova orale consisterà nella presentazione del progetto e in domande per la verifica della comprensione del programma svolto.

Risultati attesi

Conoscenza e comprensione Alla fine dell’insegnamento, lo studente conosce le tecnologie per sviluppare applicazioni distribuite e per dispositivi mobili Capacità di applicare conoscenza e comprensione Alla fine dell’insegnamento, lo studente è in grado di progettare, sviluppare e testare applicazioni software distribuite e mobili, scegliendo le piattaforme e le tecnologie più appropriate 
 Autonomia di giudizio Alla fine dell’insegnamento, lo studente: - ha la capacità di giudicare le tecnologie e gli strumenti informatici più adatti a ogni contesto, valutando le possibili alternative; Abilità comunicative Alla fine dell’insegnamento, lo studente: - ha la capacità di sfruttare strumenti tecnologici per comunicare; - ha la capacità di redigere report;
 Capacità di apprendimento Alla fine dell’insegnamento, lo studente: - ha la capacità di valutare la propria preparazione in relazione allo stato dell'arte delle tecnologie informatiche; - ha la capacità di individuare le competenze mancanti per affrontare il lavoro che gli viene proposto; - ha la capacità di fare formazione continua per colmare le lacune e mantenersi aggiornato;
 - ha la capacità di sfruttare le fonti appropriate;
 - ha la capacità di affrontare problemi sempre nuovi con un approccio scientifico e metodologico.