PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

Elenco notifiche



Distributed systems programming

01TXZOV, 01TXZSM

A.A. 2020/21

Course Language

Inglese

Degree programme(s)

Master of science-level of the Bologna process in Ingegneria Informatica (Computer Engineering) - Torino
Master of science-level of the Bologna process in Data Science And Engineering - Torino

Course structure
Teaching Hours
Lezioni 39
Esercitazioni in laboratorio 21
Lecturers
Teacher Status SSD h.Les h.Ex h.Lab h.Tut Years teaching
Sisto Riccardo Professore Ordinario IINF-05/A 39 0 27 0 5
Co-lectures
Espandi

Context
SSD CFU Activities Area context
ING-INF/05 6 C - Affini o integrative Attivitą formative affini o integrative
2020/21
The course, taught in English in the first semester of the second year of the Master of Science in Computer Engineering, aims at presenting the main theoretical and practical foundations of the most widely used software architectures and programming paradigms for distributed systems. The students are expected to gain the knowledge of such foundations, as well as the ability to apply them within different distributed systems architectures.
The course, taught in English in the first semester of the second year of the Master of Science in Computer Engineering, aims at presenting the main theoretical and practical foundations of the most widely used software architectures and programming paradigms for distributed systems. The students are expected to gain the knowledge of such foundations, as well as the ability to apply them within different distributed systems architectures.
Knowledge of the following foundations of software architectures and programming paradigms for distributed systems: - distributed systems properties, architectural styles, protocol styles, - the web architecture and its main alternatives, - main distributed algorithms and techniques for error management, serialization/deserialization and validation - principles and guidelines for distributed services design, with special emphasis on REST APIs. Skill to apply the learned foundations to the design and implementation of distributed applications and services
Knowledge of the following foundations of software architectures and programming paradigms for distributed systems: - distributed systems properties, architectural styles, protocol styles, - the web architecture and its main alternatives, - main distributed algorithms and techniques for error management, serialization/deserialization and validation - principles and guidelines for distributed services design, with special emphasis on REST APIs. Skill to apply the learned foundations to the design and implementation of distributed applications and services
The course builds upon knowledge and skills provided by the "System and device programming" and "Web applications I" courses: Prerequirements coming from Web Applications I: - Knowledge of the main aspects of HTML, Javascript - Ability to use Javascript at an advanced level for creating web applications at the front-end level. - Ability to create complete web applications, by using a simple back-end server. Prerequirements coming from System and Device Programming: - Knowledge of system programming APIs (system calls) - Skill to understand and implement concurrent programs based on processes/threads - Skill to understand and implement concurrent programs exploiting advanced synchronization, message passing, and data sharing techniques Other basic prerequirements: - Ability to program in procedural languages and object oriented languages (Java in particular), and corresponding debugging skills. - Basic knowledge of computer network architectures, TCP/IP, HTTP.
The course builds upon knowledge and skills provided by the "System and device programming" and "Web applications I" courses: Prerequirements coming from Web Applications I: - Knowledge of the main aspects of HTML, Javascript - Ability to use Javascript at an advanced level for creating web applications at the front-end level. - Ability to create complete web applications, by using a simple back-end server. Prerequirements coming from System and Device Programming: - Knowledge of system programming APIs (system calls) - Skill to understand and implement concurrent programs based on processes/threads - Skill to understand and implement concurrent programs exploiting advanced synchronization, message passing, and data sharing techniques Other basic prerequirements: - Ability to program in procedural languages and object oriented languages (Java in particular), and corresponding debugging skills. - Basic knowledge of computer network architectures, TCP/IP, HTTP.
Distributed Systems foundations - properties of distributed systems (scalability, consistency, partition tolerance, replication, fault-tolerance, CAP theorem, security properties) - architectural styles for distributed systems (client-server, peer-to-peer, master-slave) and relative roles, main protocol styles (request/response, publish/subscribe) - distributed algorithms (election, consensus, etc) - techniques for error management (management of timeouts, disconnections, soft failures and error recovery strategies) - techniques for serialization/deserialization and validation (JSON, XML, protocol buffers, schema, abstract syntaxes) Web and non-web architectures - HTTP and the REST architecture - HTTP2.0, gRPC, protocol buffers - Websockets and realtime web - main alternatives to the web, TCP/IP sockets, MQTT Design aspects - principles and guidelines for designing distributed services and their interfaces, with special emphasis on REST APIs: models and patterns, management of robustness, performance, and security aspects - REST maturity levels The foundations and the design aspects will be illustrated with reference to the architectures illustrated in the course.
Distributed Systems foundations - properties of distributed systems (scalability, consistency, partition tolerance, replication, fault-tolerance, CAP theorem, security properties) - architectural styles for distributed systems (client-server, peer-to-peer, master-slave) and relative roles, main protocol styles (request/response, publish/subscribe) - distributed algorithms (election, consensus, etc) - techniques for error management (management of timeouts, disconnections, soft failures and error recovery strategies) - techniques for serialization/deserialization and validation (JSON, XML, protocol buffers, schema, abstract syntaxes) Web and non-web architectures - HTTP and the REST architecture - HTTP2.0, gRPC, protocol buffers - Websockets and realtime web - main alternatives to the web, TCP/IP sockets, MQTT Design aspects - principles and guidelines for designing distributed services and their interfaces, with special emphasis on REST APIs: models and patterns, management of robustness, performance, and security aspects - REST maturity levels The foundations and the design aspects will be illustrated with reference to the architectures illustrated in the course.
In addition to classes, that include both lectures and exercises in classroom (4 credits), the course includes programming laboratories (2 credits) consisting of exercises on the application of the topics presented in the classes. The laboratories consist of programming exercises about the application of the topics learnt during the classes. During the labs the students will discuss with the teachers on their solutions to the assigned exercises.
In addition to classes, that include both lectures and exercises in classroom (4 credits), the course includes programming laboratories (2 credits) consisting of exercises on the application of the topics presented in the classes. The laboratories consist of programming exercises about the application of the topics learnt during the classes. During the labs the students will discuss with the teachers on their solutions to the assigned exercises.
The teacher will provide the material (copy of slides and links to on-line resources) on the website of the course. Textbooks: M. van Steen, A. S. Tanenbaum, Distributed Systems, 3rd Edition, 2017-2018, available online (https://www.distributed-systems.net/index.php/books/ds3/) L. Richardson, S. Ruby, RESTful Web Services, O'Reilly 2007, available online (http://restfulwebapis.org/RESTful_Web_Services.pdf)
The teacher will provide the material (copy of slides and links to on-line resources) on the website of the course. Textbooks: M. van Steen, A. S. Tanenbaum, Distributed Systems, 3rd Edition, 2017-2018, available online (https://www.distributed-systems.net/index.php/books/ds3/) L. Richardson, S. Ruby, RESTful Web Services, O'Reilly 2007, available online (http://restfulwebapis.org/RESTful_Web_Services.pdf)
Modalitą di esame: Prova orale obbligatoria; Elaborato progettuale individuale;
The exam consists of verifying the expected knowledge and skills acquired by the student (see expected learning outcomes). The exam includes an individual project, to be developed at home, and a mandatory oral test, to be taken online. The individual project consists of developing a variation or extension of one of the exercises proposed in the laboratories. Its aim is to check that the student has acquired the expected design and development skills. The individual project will be assigned some days before the exam call date. Only the students who submit their solution by the deadline specified in the assignment are admitted to the oral test. The oral test consists of a discussion of the solution of the individual project, with related questions about the course topics, aiming at checking that the student has acquired the expected knowledge about the course topics and that the student has a detailed knowledge of the submitted code and of the choices made while developing it.
Exam: Compulsory oral exam; Individual project;
The exam consists of verifying the expected knowledge and skills acquired by the student (see expected learning outcomes). The exam includes an individual project, to be developed at home, and a mandatory oral test, to be taken online. The individual project consists of developing a variation or extension of one of the exercises proposed in the laboratories. Its aim is to check that the student has acquired the expected design and development skills. The individual project will be assigned some days before the exam call date. Only the students who submit their solution by the deadline specified in the assignment are admitted to the oral test. The oral test consists of a discussion of the solution of the individual project, with related questions about the course topics, aiming at checking that the student has acquired the expected knowledge about the course topics and that the student has a detailed knowledge of the submitted code and of the choices made while developing it.
Modalitą di esame: Test informatizzato in laboratorio; Prova orale obbligatoria; Prova orale facoltativa; Elaborato progettuale individuale;
The exam consists of verifying the expected knowledge and skills acquired by the student (see expected learning outcomes). The student will have the possibility to choose between the online exam mode (see previous section) and the onsite exam mode. The onsite exam mode includes a test in the Lab and an optional oral exam. The oral exam can be requested by the student or by the professors, in case of doubts in the evaluation. The oral exam consists of discussion of the lab test and questions about the course topics. The test in the lab aims at checking the student's knowledge of the topics presented in the course and the student's design and development skills. It is composed of a programming exercise, which consists of extending or modifying one of the exercises proposed in the laboratories, and one or more open-answer questions. The duration of the test is approximately 2 hours. On the days before the test, each student can upload any material (e.g. course notes, slides etc.) into his/her personal area on the lab network disks. During the test, this material will be accessible to the student, while no internet access will be possible. In addition, during the test, each student can bring and use a single piece of paper material, that is, one set of bound notes or book. No other material and no personal electronic device is admitted. The weights of the programming exercise and of the questions for the final grade are respectively 50% and 50%. Laude requires oral exam. Examples of exam tests will be provided to the students during the course.
Exam: Computer lab-based test; Compulsory oral exam; Optional oral exam; Individual project;
The exam consists of verifying the expected knowledge and skills acquired by the student (see expected learning outcomes). The student will have the possibility to choose between the online exam mode (see previous section) and the onsite exam mode. The onsite exam mode includes a test in the Lab and an optional oral exam. The oral exam can be requested by the student or by the professors, in case of doubts in the evaluation. The oral exam consists of discussion of the lab test and questions about the course topics. The test in the lab aims at checking the student's knowledge of the topics presented in the course and the student's design and development skills. It is composed of a programming exercise, which consists of extending or modifying one of the exercises proposed in the laboratories, and one or more open-answer questions. The duration of the test is approximately 2 hours. On the days before the test, each student can upload any material (e.g. course notes, slides etc.) into his/her personal area on the lab network disks. During the test, this material will be accessible to the student, while no internet access will be possible. In addition, during the test, each student can bring and use a single piece of paper material, that is, one set of bound notes or book. No other material and no personal electronic device is admitted. The weights of the programming exercise and of the questions for the final grade are respectively 50% and 50%. Laude requires oral exam. Examples of exam tests will be provided to the students during the course.
Esporta Word