Testi del Syllabus - Dipartimento di Informatica Sistemistica e

Testi del Syllabus
Resp. Did.
DE PAOLI FLAVIO MARIA
Anno offerta:
2016/2017
Insegnamento:
E3101Q112 - SISTEMI DISTRIBUITI
Corso di studio:
E3101Q - INFORMATICA
Anno regolamento:
2015
CFU:
8
Anno corso:
2
Periodo:
Secondo Semestre
Matricola:
012992
Testi in italiano
Contenuti
Concetti, modelli e architetture dei sistemi concorrenti e distribuiti. Elementi
fondamentali di progettazione e funzionamento dei sistemi distribuiti, con particolare
riferimento al Web e a Internet.
Testi di riferimento
Distributed Systems: Principles and Paradigms - 2nd edition, Andrew S.
Tanenbaum and Maarten van Steen, Pearson - Prentice Hall, 2007.
Traduzione italiana: Sistemi Distribuiti - Seconda edizione, Pearson - Prentice Hall,
2007.
Dal corso di Reti e Sistemi Operativi:
Reti di calcolatori e internet – Un approccio top-down 4a Edizione, James F.
Kurose, Keith W. Ross
Addison Wesley – 2008, ISBN 9788871924557
A. Silberschatz, P. Baer Galvin, G. Gagne, Sistemi operativi - Concetti ed esempi,
8/Ed. 2009, ISBN 9788871925691
Obiettivi formativi
Al termine del corso lo studente conoscerà le proprietà caratteristiche e le
architetture fondamentali dei sistemi concorrenti, client-server e peer-to-peer. Saprà
sviluppare semplici applicazioni distribuite in ambiente Web/Internet.
Prerequisiti
Programmazione a oggetti in Java e Junit test (Programmazione 2), Processi e
comunicazione tra processi (Reti e Sistemi Operativi), Protocollo TCP/IP e socket
(Reti e Sistemi Operativi), Linguaggi di markup (XML e HTML) e relativi strumenti di
manipolazione (Linguaggi e Computabilità), Automi a Stati Finiti.
Metodi didattici
Il corso prevede lezioni ed esercitazioni in aula con attività di studio individuale
supportate da materiali didattici in e-learning. Sono previste attività di laboratorio sia
individuale sia di gruppo per lo sviluppo di semplici applicazioni distribuite in
ambiente Web/Internet.
Modalità di verifica
dell'apprendimento
scritto con discussione orale.
Programma esteso
1 Concetti fondamentali: definizioni e proprietà caratteristiche; modelli client-server
e peer-to-peer; Architetture software (layers vs tiers); nomi, identificatori e indirizzi
(URI e DNS); Message Oriented Communication: modelli persistenti e transienti.
Modelli push e pull.
2 "Tecnologie di base
Socket TCP/IP: client server e protocolli applicativi. I modelli client/server e peer-topeer. Comunicazione basata su chiamata di procedura: Remote Procedure Call
(RPC) e Remote Object Invocation (Java RMI)."
3 "Applicazioni Web
Web Foundations (URI & HTTP) HTTP request/response. Web applications:
servlet/JSP Pattern MVC2. Client Web: Browser: Rich Interface Applications (Ajax).
Web services: REST e Web API vs WSDL/SOAP."
4 "Argomenti monografici
Sistemi distribuiti mobili: Android. Semantic Web Services: Service annotation."
5 "Applicazioni web dinamiche:
Introduzione a JavaScript; introduzione al framework jQuery; jQuery e tecniche
AJAX
Esempi di applicazioni web: esempi base JavaScript, debugging, modifica
dinamica di una pagina, invocazione di servizi remoti (es. Google Maps)"
6 "Rappresentazione dei dati
HTML5 & CSS come modello per la rappresentazione e presentazione dei dati
XML/ JSON come modello per il trasferimento dei dati
RDF come modello di dati per il web semantico
SPARQL come linguaggio di query per il web semantico
Esempi di applicazioni di web semantico: interrogazioni a DBPedia e altri endpoint SPARQL, piccoli mashup (es. visualizzazione su Google Maps di dati da
DBPedia)"
7 "Programmazione concorrente a memoria condivisa
Programmi basati su thread in Java
Modellazione con automi a stati finiti
Sincronizzazione e monitor
"
8 "Algoritmi distribuiti
Orologi logici scalari e vettoriali
Cenni ai principali algoritmi: sincronizzazione, mutua esclusione, elezione,
rilevamento dei fallimenti"
Testi in inglese
Contenuti
Concepts, models and architecture of cuncorrent and distributes systems.
Fundamentals of design and behavior of distributed systems, with specific reference
to the Web and the Internet.
Testi di riferimento
Distributed Systems: Principles and Paradigms - 2nd edition, Andrew S.
Tanenbaum and Maarten van Steen, Pearson - Prentice Hall, 2007.
Traduzione italiana: Sistemi Distribuiti - Seconda edizione, Pearson - Prentice Hall,
2007.
In use for “Network and Operating Systems”:
Reti di calcolatori e internet – Un approccio top-down 4a Edizione, James F.
Kurose, Keith W. Ross
Addison Wesley – 2008, ISBN 9788871924557
A. Silberschatz, P. Baer Galvin, G. Gagne, Sistemi operativi - Concetti ed
esempi, 8/Ed. 2009, ISBN 9788871925691
Obiettivi formativi
Students will know the characteristic properties and reference organizations of
concurrent, client-serve and peer-to-peer systems. They will be able to develop
simple distributed application in Web/Internet environments.
Prerequisiti
Principles of Object-Oriente programming in java and Junit tests (Programming 2);
Process and Interprocess Communication (Network and Operating Systems);
TCP/IP protocol and Sockets (Network and Operating Systems); Markup languages
(XML and HTML) and related manipulation tools (Languages and Computability);
Finite State Automata.
Metodi didattici
The course includes theoretical and exercises lectures integrated by individual
study activities with e-learning support. Individual and group laboratory activities to
develop simple distributed systems will be also part of the course.
Modalità di verifica
dell'apprendimento
Written exam with oral discussion
Programma esteso
1 Basic concepts: definition and characteristic properties; client-server and peer-topeer models; Software architectures (layers vs tiers); naming, identifier and address
(URI e DNS);
2 "Basic technologies
Socket TCP/IP: client server and application protocols.Client/server and peer-topeer models. Communication by procedure call: Remote Procedure Call (RPC) and
Remote Object Invocation (Java RMI)."
3 " Web Applications
Web Foundations (URI & HTTP) HTTP request/response. Web applications:
servlet/JSP Pattern MVC2. Client Web: Browser: Rich Interface Applications (Ajax).
Web services: REST and Web API vs WSDL/SOAP."
4 "Monografic topics
Mobile distributed systems: Android. Semantic Web Services: Service annotation."
5 "Dynamic Web applications
Introduction to JavaScript; introduction to the jQuery framework; jQuery and AJAX
techniques
Sample web applications: basic JavaScript examples, debugging, dynamic web
page modification, remote services invocation (ex. Google Maps)"
6 "Rappresentazione dei dati
HTML5 & CSS as a model for data represenation and presentation
XML/ JSON as a model for data tranfer
RDF as data model for the semantic web
SPARQL as query language for the semantic web
Sample semantic web applications: querying DBPedia and other SPARQL endpoints, small mashups (ex. Google Maps visualization of data from DBPedia)"
7 "Concurrent programming: models based on shared memory
multi-thread programming in Java.
finite state automata modeling
synchronization and monitor"
8 "Distributed Algorithms
Scalar and vectorial locical clocks
Overview of main algorithms: synchronizations, mutual exclusion, election and
failure detection"