Programmazione distribuita e mobile
Questa pagina fornisce il materiale didattico e le informazioni relative all'insegnamento di Programmazione distribuita e mobile (9 CFU) per il Corso di Laurea Magistrale in Informatica a partire dall'AA 2017/2018.
News
Ultime news
La lezione di martedì 2 ottobre 2018 non si terrà per permettere agli studenti di frequentare MoreJobs
Vecchie news
Informazioni sul docente
Dipartimento di Scienze Fisiche, Informatiche e Matematiche
Università di Modena e Reggio Emilia, Via Campi 213/B - 41125 Modena
Telefono 0592058320 - Fax 0592055216
Orario delle Lezioni
Orario dell'AA 2018/19
Le lezioni dell'AA 2018/19 inizieranno il 24 settembre 2018 con il seguente orario:
- Lunedì dalle 14 alle 16 in aula M2.4 presso Matematica
- Martedì dalle 11 alle 13 in aula M2.4 presso Matematica
- Venerdì dalle 11 alle 13 in aula M2.4 presso Matematica
Orario dell'AA 2017/18
Le lezioni dell'AA 2017/18 inizieranno il 25 settembre 2017 con il seguente orario:
- Mercoledì dalle 9 alle 11 in aula M2.5 presso Matematica
- Giovedì dalle 11 alle 13 in aula M2.3 presso Matematica
- Venerdì dalle 14 alle 16 in aula M2.1 presso Matematica
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
Contenuti dell'insegnamento
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
- Virtual Machine per dispositivi mobili
- Un esempio: Android
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.
Linee guida per lo sviluppo di una App Android (A.A. 17/18)
Linee guida per lo sviluppo di una App Android (A.A. 18/19)
Appelli
Le date degli appelli sono disponibili sul sito ESSE3 (http://www.esse3.unimore.it).
Testi Consigliati
Dispense a cura del docente.
Libri consigliati:
- A. Tanenbaum, M. van Steen, Distributed Systems - Principles and Paradigms, Prentice Hall
Slide dell'insegnamento
In questa pagina sono riportati alcuni lucidi usati a lezione.
- Introduzione ai sistemi distribuiti / Introduction to distributed systems
- Comunicazione e sincronizzazione / Communication and synchronization
- Sistemi di naming / Naming systems
- File system distribuiti / Distributed file systems
- Oggetti distribuiti / Distributed objects
- Remote Procedure Call (RPC)
- Remote Method Invocation (RMI)
- Introduzione ai sistemi mobili / Introduction to mobile systems
- Android managers, resources and activities
- Android intents and events
- Android content provider - contprovexample.zip
- Android threads - allegatoandroidthreads.zip
- JNI_JNA And Multiplatform development
- Kotlin - allegatokotlin.zip
- JVM DVM ART and GC
- Il block layer e lo scheduler BFQ
- Compilazione kernel
- Collaudo ed analisi delle tracce
- Uso di git
- Kernel OOPS
- Creazione e sottomissione commit
- Miscellanea
- Esame
Seminari
Esercizi presentati a lezione
- Socket exercises
- RPC exercises - solutions
- RMI exercises
- Exercises on Android managers, resources and activities - solutions
- Exercises on Android explicit intents and events - solutions
- Exercises on Android implicit intents and advanced events
- Exercises on Android multithread - attachments - solutions
Strumenti Software
Si indicano di seguito gli strumenti software che si utilizzano durante l'insegnamento e si indica dove e' possibile reperirli.
Programmazione socket in Java: è sufficiente un JDK di qualsiasi versione; si raccomanda un JDK >= 1.5
RMI: è necessario un JDK di versione >= 1.2; si raccomanda un JDK >= 1.5