- Sistemi Distribuiti
- Introduzione
Syllabus del corso
Obiettivi
Al
termine del corso lo studente conoscerà le proprietà caratteristiche e le architetture
fondamentali dei sistemi distribuiti: concorrenti, client-server e peer-to-peer. Saprà sviluppare
semplici applicazioni distribuite in ambiente Web/Internet.
Contenuti sintetici
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.
Programma esteso
- 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.
- Tecnologie di base Socket TCP/IP: client server e protocolli applicativi. I modelli client/server e peer-to-peer. Comunicazione basata su chiamata di procedura: Remote Procedure Call (RPC) e Remote Object Invocation (Java RMI).
- Applicazioni Web: Web Foundations (URI & HTTP) HTTP request/response.
Web applications: servlet/JSP Pattern MVC.
Client Web: Browser: Rich Interface Applications (Ajax).
Web services: REST e Web API vs WSDL/SOAP. - Argomenti monografici
Semantic Web Services: Service annotation. - 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. - 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, semplici mashup.
- Programmazione concorrente: Sincronizzazione e monitor. Modelli di programmazione multi-thread in Java con memoria condivisa. Cenni di modellazione con automi a stati finiti.
Prerequisiti
Programmazione
a oggetti in Java e Junit test (Programmazione 2), Processi e comunicazione tra
processi (Reti e Sistemi Operativi), Protocollo TCP/IP e socie (Reti e Sistemi
Operativi), Linguaggi di markup (XML e HTML) e relativi strumenti di manipolazione , Automi a Stati Finiti (Linguaggi e Computabilità).
Modalità didattica
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 di rete e in ambiente Web.
Nel periodo di emergenza Covid-19 le lezioni si svolgeranno in modalità mista: lezioni videoregistrate asincrone e lezioni sincrone in teleconferenza, con alcuni eventi in presenza fisica. Anche per il laboratorio si prevedono analoghe modalità: sessioni asincrone con presentazione di esercizi e assegnazione di nuovi esercizi da svolgere in autonomia, sessioni sincrone in teleconferenza di revisione e discussione degli esercizi svolti dagli studenti.
Lingua di erogazione dell’insegnamento: italiano
Materiale didattico
Sul sito elearning sono disponibili :
- le slide delle lezioni in formato pdf.
- ulteriore materiali (articoli a completamento dei testi di riferimento, link a risorse in rete, esercizi da svolgere) .
- il materiale e le soluzioni degli esercizi svolti in laboratorio.
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.
Già adottati nel 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
Capitoli 1 e 2
A. Silberschatz, P. Baer Galvin, G. Gagne, Sistemi
operativi - Concetti ed esempi, 8/Ed. 2009, ISBN 9788871925691
Capitoli
3, 4, 6, 7 e 16
Periodo di erogazione dell'insegnamento
secondo semestre
Modalità di verifica del profitto e valutazione
• Esame: prova scritta e eventuale orale -> fino a 30 punti
• Laboratorio -> fino a 4 punti
La prova consiste in:
a) domande sulle nozioni presentate
b) domande di ragionamento e deduzione
c) risoluzione di esercizi che richiedono lo sviluppo di una soluzione ad un problema assegnato
• Fase 1: domande chiuse su argomenti di base per accedere alla fase 2 (punteggio maggiore di 4/6)
• Fase 2: domande chiuse + domande aperte
• Superamento dell'esame con punteggio >= 18/30
Prova orale (opzionale)
• Consiste nella restituzione dei compiti scritti con discussione ed eventuali domande supplementari a discrezione del docente.
Laboratorio
• Valutazione: svolgimento e consegna degli esercizi e di un piccolo progetto finale -> fino a 4 punti
• Alternativa per studenti lavoratori: PROGETTO da concordare -> fino a 4 punti
Prove in itinere (sostituiscono l’esame)
• prima prova: Domande chiuse
• seconda prova: Domande chiuse + domande aperte
•Alla seconda prova è ammesso chi ha ottenuto un punteggio >= 18/30 nella prima prova. Non ci sono recuperi.
È possibile fare progetti di approfondimento (facoltativi, valutati)
VOTO FINALE = ESAME + LABORATORIO (se frequentato) (+ progetto facoltativo)
VOTO FINALE studenti lavoratori = ESAME (+ PROGETTO facoltativo)
Nel periodo di emergenza Covid-19 la prova scritta sarà sostituita da una prova da remoto supervisionata: una sessione con domande aperte/chiuse sulla piattaforma ESAMI-ONLINE (HTTPS://ESAMIONLINE.ELEARNING.UNIMIB.IT) con monitoraggio PROCTORING/RESPONDUS, e una sessione orale in teleconferenza su un campione di studenti selezionato dai docenti. Le prove in itinere potrebbero non essere svolte
Orario di ricevimento
Prof. De Paoli: Mercoledì dalle 10:00 alle 12:00 o su appuntamento scrivendo a flavio.depaoli@unimib.it
Prof. Vizzari: Mercoledì mattina dalle 9:30 alle 11:30 o altro orario sempre su appuntamento.
Domande e discussioni sugli argomenti dell'insegnamento possono essere fatte utilizzando i forum presenti in elearning.
Aims
Students will know the
characteristic properties and reference organizations of concurrent,
client-server and peer-to-peer distributed systems. They will be able to develop simple
distributed applications in Web/Internet environments.
Contents
Concepts, models and
architecture of concurrent and distributes systems. Fundamentals of design and
behavior of distributed systems, with specific reference to the Web and the
Internet.
Detailed program
- Basic concepts: definition and characteristic properties; client-server and peer-topeer models; Software architectures (layers vs tiers); naming, identifier and address (URI e DNS);
- Basic technologies
Socket TCP/IP: client server and application protocols.Client/server and peer-topeermodels. Communication by procedure call: Remote Procedure Call (RPC) and Remote Object Invocation (Java RMI). - Web Applications
Web Foundations (URI & HTTP) HTTP request/response. Web applications:
servlet/JSP Pattern MVC. Client Web: Browser: Rich Interface Applications (Ajax).
Web services: REST and Web API vs WSDL/SOAP. - Monografic topics
Semantic Web Services: Service annotation. - 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. - Rappresentazione dei dati HTML5 & CSS as a model for data represenation and presentation XML/ JSON as a model for data transfer 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, simple mashups.
- Concurrent programming: synchronization and monitors. Models based on shared memory multi-thread programming in Java. Hints of finite state automata modelling.
Prerequisites
Principles of
Object-Oriented 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),
related manipulation tools, and Finite State Automata (Languages and Computability) .
Teaching form
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 and Web applications will be also part of the course.
In the Covid-19 emergency period the lessons
will be held in mixed mode: asynchronous video-recorded lessons and synchronous
teleconference lessons, with some events in physical presence. Similar
modalities are foreseen for the workshop: asynchronous sessions with
presentation of exercises and assignment of new exercises to be carried out
autonomously, synchronous teleconference sessions to review and discuss the exercises
carried out by the students.
Teaching language: Italian
Textbook and teaching resource
On the e-learning site are available :
- slides of the lessons in pdf format.
- further material (articles to complete the reference texts, links to online resources, exercises to be carried out).
- equipment and solutions for exercises carried out in the laboratory.
Textbooks:
Distributed Systems:
Principles and Paradigms - 2nd edition, Andrew S. Tanenbaum and Maarten van
Steen, Pearson - Prentice Hall, 2007.
Already adopted in the course of Networks 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
Chapter 1, 2
A. Silberschatz, P. Baer Galvin, G. Gagne, Sistemi
operativi - Concetti ed esempi, 8/Ed. 2009, ISBN 9788871925691
Chapter 3, 4, 6, 7, 16
Semester
second semester
Assessment method
Examination: separate written test and optional oral exam -> up to 30 points
Laboratory -> up to 4 points
The test deals with:
(a) questions on the concepts presented
(b) requests for reasoning and deduction
(c) resolution of exercises that require the development of a solution to an assigned problem
Written test in the laboratory
Phase 1: Multiple chiose questions on basic subjects for admission to Phase 2 (score higher then 4/6)
Phase 2: Multiple chiose questions + open questions
The exam is passed with score >= 18/30
Oral exam (optional)
It
consists of the restitution of written tests with discussion, and any additional questions at the teacher's discretion.
Laboratory
Evaluation: development and delivery of exercises and a final small project -> up to 4 points
Alternative for student workers: PROJECT to be agreed with teachers -> up to 4 points
In itinere tests (replace exam)
First test: Closed questions
Second test: Closed questions + open questions
Whoever has scored >= 18/30 in the first test is admitted in the second test. There are no recovery tests.
It is
possible to make additional work projects (optional, evaluated)
FINAL VOTE = EXAMINATION + LABORATORY (if attended) (+ optional work project)
FINAL VOTE for working students = EXAMINATION (+ optional PROJECT)
In the Covid-19 emergency period the written test will be replaced by a supervised remote test: a session with open/closed questions on ESAMI-ONLINE (HTTPS://ESAMIONLINE.ELEARNING.UNIMIB.IT) with monitoring with PROCTORING/RESPONDUS, and an oral session in teleconference for a sample of students selected by the teachers. The in-itinere tests
may not be held
Office hours
Prof. De Paoli: Thuresday from 10:00 to 12:00 or by appointment by writing to flavio.depaoli@unimib.it
Prof. Vizzari: Wednesday from 9:30 to 11:30 or other days/times always by appointment.
Questions and discussions on teaching topics can be posed using the forums in e-learning.