Dependable Distributed Systems


The main goal of this course is to specialize the knowledge of the students in the area of Dependable Distributed Systems. This knowledge is addressed by gaining a better understanding on foundations and proposals from the recent research on dependable computing systems, advanced techniques,  algorithms and mechanisms involved in the design of large-scale and complex distributed systems, with fault-tolerance, security, privacy and intrusion tolerance services. 

The course addresses the study of foundations and formalisms on algorithms, mechanisms and services used in the design of distributed dependable systems for critical applications, in which the above properties must be conjugated in the identified requirements. This knowledge is strongly supported by the domain of practical implementation tools and techniques, experimental evaluation criteria and critical analysis form design foundations and experimental observation of practical dependable distributed systems.

Skills as objectives:


  • Concepts, principles, paradigms to the analysis and synthesis of dependable distributed systems, namely their mechanisms and services for design goals and operation support;
  • Foundations and abstractions for the design and construction of mechanisms and services for dependable distributed systems;
  • Techniques to combine security, privacy, reliability, fault-tolerance and intrusion tolerance for dependable distributed systems and their software components;
  • Domain of technqiues and solutions for trusted execution environments and related support at hardware-level.


  • Designing mechanisms and services, including their components and algorithms to build critical distributed systems;
  • Analysis and experimental assessement of dependable properties in a dependable distributed system;
  • Programming and development of dependable distributed systems to support critical applications and services, incolving blockchain platforms, dependable services for cloud computing and cloud-storage platforms, trusted mobile computing and trustworthy solutions for IoT platfroms and applications

General characterization





Responsible teacher

Henrique João Lopes Domingos, Nuno Manuel Ribeiro Preguiça


Weekly - 4

Total - 52

Teaching language



The course as no previous mandatory requirements, beyond the normal sequence of the study plan in the MIEI curricula (Mestrado em Engenharia Informática). However, the following aspects must be considered as relevant base knowledge by the students interested in following the course, for the achievment of the proposed objectives.

  • Completion of the Distributed Systems course (as a consolidation course)
  • Strong knowldge on Computer Networks and TCP/IP stack protocols
  • A solid knowledge on principles and practice on distributed systems programming tools and paradigms (ex., Sockets, Rest). Some practice in web-programming enviroments or programming with cloud-platforms is also  recommended, as well as initial practice in the desogn and implementation of distributed systems'' algorithms.
  • Strong skills in programming with Java language, as well practive with programming environments and tools (ex., Eclipse IDE) 
  • Is strongly recommended a previous knowldege and practical experience on Operating Systems and particularly UNIX (ex., Linux distributions or Mac OS X), practice in using virtualized OS or application-support environments (ex., VMWare, Virtual Box, or Docker-based Containerization)



  • W. Zhao, Building Dependable Distributed Systems, Wiley, 2014
  • W. Stallings, L. Brown, Computer Security - Principles and Practice, Prent. Hall, 2014
  • C. Cachin, R. Guerraoui, L. Rodrigues, Introduction to Reliable and Secure Distributed Programming (2nd Ed), Springer, 2011.

Complementary Readings

  • W. Stallings, Nework Security Essentials, 6th Ed. Pearson, 2017
  • K. Birman, Reliable Distributed Computing, Springer 2005
  • A.S. Tanenbaum and M. Van Steen. Distributed Systems Principles and Paradigms, Prent. Hall,
  • M. Correia, P. Sousa, Segurança no Software, FCA Ed. 2010

Obs) Suggested readings and selected papers from relevant rsearch venues will be presented and proposed on the lectures. Additonal materials for practical/lab activities and practical work-assignments will be available as lab materials.

Teaching method

The classes  (lectures and laboratories) and the provided materials are prepared for the course to be taught in English.

The course is organized in lectures for presenting and discussing foundations, concepts, principles, paradigms,  techniques or algorithms, covering the course program topics, as well as, to conduct specific discussions, analysis and clarifications on suggested readings.

Labs are organized for conducting programming exercises involving mechanisms, techniques and algorithms involving software and hardware components and cloud-based resources. Some labs also involve the demonstration of techniques or related components, including demonstrations supporting tutorial explanations on the use of tools. Some labs are planned to support students in the development of practical work assignments and mini-projects, discussion and clarification of requirements and design criteria, and orientation on implementation options.

Evaluation method


  • 2 midterm quizzes (tests T1, T2), including a closed book part
  • 5 Lab work assignments (E, exercises E1 to E5) with demo/proof in Lab
  • 1 Final Project (P) developed as groupwork

- Frequency (F)1

  • Includes E and P components
  • Frequency condition: F > 9,5/20

- Grade with frequency evaluation (AF)

  • Frequency condition
  • AF  = 22,5% (T1) + 22,5% (T2) + 15% (E) +  40% (P)
  • Project evaluation
    • Design, development, demonstration and experimental evaluation; 40%
    • Report quality: 20%
    • Group discussion: 20%
    • Individual evaluation: 10%
    • Individual evaluation from the group: 10%
  • Grade condition
    • average of tests  > 8/20 and AF >  9,5/20

- Evaluation with Appeal Exam (ER)

  • Frequency condition
  • Final Evaluation AR = F (55%) + 45% ER
  • Grade condition:  
    • ER > 8/20 and AR > 9,5/20

 1) Frequency obtained in 2018/2019 is valid for 2019/2020.

Subject matter

  1. Introduction
  2. Dependability model for large scale distributed systems: properties and support typology
  3. Reliable and secure communication channels
    • Pont-to-Point vs. End-to-End channels
    • Reliable group-oriented communication
    • Secure group-oriented communication
  4. Intrusion prevention, detection and recovery
    • Perimeter defenses and Intrusion prevention systems
    • Intrusion detection (HIDS, NIDS and HIDS platforms)
    • Intrusion recovery: reactive recovery and pro-active recovery
    • Mechanisms, technique and services for intrusion tolerance
    • Intrusion tolerance and diversity approaches
  5. Consensus with intrusion tolerance guarantees 
    • Consensus, FLP impossibility and probabilistic consensus 
    • Services stack for consensus in asyncronous distributed systems
    • Byzantine quorum systems
  6. Blockchain platforms
    • Platforms typology and applications 
    • Service planes in Blockchain platforms
    • Blockchain programming and programming with smart contracts
    • Consensus solutions with different Blockchain models and proofs
    • Scalability guarantees and sustainability issues
    • Case studies
  7. Privacy-enhanced data management 
    • Advanced techniques  for privacy-enhanced data management and computation
    • Replication and data fragmentation, fragmentation with erasure-coding
    • Availability and replication with data confidentiality, authentication and integrity
    • Operations with encrypted data: security-at-the-rest techniques and homomorphic encryption 
    • Case studies: SQL databases, NoSQL platforms and storage clouds 
  8. Trusted computing and trustworthy software
    • Techniques, mechanisms and environments for trusted computing
    • Trusted computing with software attestation
    • Trusted execution environments (TEE) and Hardware-based platforms
    • Programming with TEE platforms
    • Case-studies: IntelSGX, TrustZone and Virtualized Trusted Computing


Programs where the course is taught: