- Distributed Systems
- Summary
Course Syllabus
Obiettivi
Al termine del corso lo studente conoscerà le proprietà caratteristiche, i modelli di comunicazione 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. - Applicazioni web dinamiche:
Introduzione a JavaScript e tecniche AJAX
Esempi di applicazioni web: esempi base JavaScript, debugging, modifica dinamica di una pagina, invocazione di servizi remoti. Cenni a nodejs. - 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, 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 (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.
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: progetto -> 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
Prova scritta in laboratorio
• Fase 1: domande chiuse su tutti gli argomenti. Se superata (almeno il 50% di riposte corrette) si può accedere accedere alla fase 2
• Fase 2: domande miste (aperte o chiuse con commento) su tutti gli argomenti
• 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: progetto finale -> fino a 4 punti (facoltativo)
Prove in itinere (sostituiscono l’esame)
• prima prova: Domande chiuse
• seconda prova: Domande chiuse + domande miste
•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 (+ progetto facoltativo)
Orario di ricevimento
Prof. De Paoli: Mercoledì dalle 10:00 alle 12:00 o su appuntamento scrivendo a flavio.depaoli@unimib.it
Prof. Ciavotta: Martedì mattina dalle 12:30 alle 14:30 previo appuntamento.
Domande e discussioni sugli argomenti dell'insegnamento possono essere fatte utilizzando i forum presenti in elearning.
Aims
Students will know the characteristic properties, communication models 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-to-peer 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-to-peer models. 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. - Dynamic Web applications
Introduction to JavaScript and AJAX techniques. Sample web applications: basic JavaScript examples, debugging, dynamic web page modification, remote services invocation - HTML5 & CSS as a model for data representation and presentation. XML/ JSON as a model for data transfer RDF as a data model for the semantic web, simple mashups.
- Concurrent programming: synchronization and monitors. Models based on shared memory multi-thread programming in Java. Hints of finite-state automata modeling.
Prerequisites
Principles of Object-Oriented programming in java and Junit tests (Programming 2); Process and Interprocess Communication (Network and Operating Systems); TCP/IP protocol (Networks 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.
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: Fixed-choice questions. Admission to a second phase with 50% of correct answers.
Phase 2: Mixed questions (essay or fixed choice with comments)
The exam is passed with a score >= 18/30
Oral exam (optional)
It consists on the restitution of written tests with discussion, and any additional questions at the teacher's discretion.
Laboratory
Evaluation: final project -> up to 4 points (optional)
In itinere tests (replace exam)
First test: Closed questions
Second test: Closed questions + mixed questions
Whoever has scored >= 18/30 in the first test is admitted to the second test. There are no recovery tests.
It is possible to make additional work projects (optional, evaluated)
FINAL VOTE = EXAMINATION (+ optional work project)
Office hours
Prof. De Paoli: Thursday from 10:00 to 12:00 or by appointment by writing to flavio.depaoli@unimib.it
Prof. Ciavotta: Tuesday from 12:30 to 14:30 by appointment.
Questions and discussions on teaching topics can be posed using the forums in e-learning.