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
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, CSS, 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
- 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)
- main 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;
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 onsite.
The individual project is a programming exercise similar to the ones 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, in a range from 10 to 20 days according to the complexity. 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. The final mark will be determined by assigning equal weights to the individual project and to the oral test.
Gli studenti e le studentesse con disabilitą o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unitą Special Needs, al fine di permettere al/la docente la declinazione pił idonea in riferimento alla specifica tipologia di esame.
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 onsite.
The individual project is a programming exercise similar to the ones 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, in a range from 10 to 20 days according to the complexity. 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. The final mark will be determined by assigning equal weights to the individual project and to the oral test.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.
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 is a programming exercise similar to the ones 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, in a range from 10 to 20 days according to the complexity. 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. The final mark will be determined by assigning equal weights to the individual project and to the oral test.
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 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: Compulsory oral exam; Individual project;
A student admitted to the blended exam has the possibility to choose between the online exam mode and the onsite exam mode (see previous sections).