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"