The contents of this master course aim at providing a solid combination between foundational and technical concepts, as well as the human factors involved in the rigorous development of Critical Computing Systems. With this goal in mind, the organization of the master course has identified and planned a set of curricular units that cover the several phases of a Critical Computing System development cycle and that provides a fair amount of hands-on practice so that graduated students are equipped with all the tools necessary to address the challenges of developing Critical Computing Systems in their future careers in industry or academy. The table below depicts the temporal organization of the course.


1st semester

2nd semester

11 weeks

4 weeks

11 weeks

4 weeks

Requirements and Model-driven Engineering (6.5 ECTS; 2T+3TP)

Critical Systems Lab (8 ECTS; 16PL)

Formal Verification of Critical Applications (6.5 ECTS; 2T+1TP+2PL)

Industry-driven Use-case Engineering (8 ECTS; 16PL)

Real-time & Embedded Systems (6.5 ECTS; 2T+1TP+2PL)

RTOS Programming (6.5 ECTS; 2T+3PL)

Communication Technologies for Critical Systems (6.5 ECTS; 2T+3PL)

Systems of Systems (6.5 ECTS; 2T+3PL)

Critical Computer Systems Architectures (2.5 ECTS; 2T)

Project Management and Development (2.5 ECTS; 2T)

3rd semester

4th semester

11 weeks

4 weeks

15 weeks

Advanced Programming Paradigms (6.5 ECTS; 2T+3PL)

Thesis Research Plan Development (8 ECTS; 16TP)

Project/Thesis/Internship (30 ECTS; 4OT)

Dependability and Cybersecurity (6.5 ECTS; 2T+1TP+2PL)

Intelligent, Autonomous, Cooperative Systems (6.5 ECTS; 2T+3PL)

Application Scenarios and Case Studies (2.5 ECTS; 2T)

1st Semester

First 11 weeks:

Requirements and Model-driven Engineering - RAMDE: Principles of model-driven development for critical systems, including requirements elicitation and analysis; Model-based verification & validation tools; Safety-driven assessment including relevant industrial standards and human factors; Testing and fault analysis.

Real-time & Embedded Systems - RTAES: Introduction to real-time & embedded computing systems; Scheduling algorithms and schedulability analysis for uni- and multi-processor systems; Mechanisms for shared resources management in RTES; Principles and techniques for mixed/multi-criticality in RTES.

Communication Technologies for Critical Systems - COMCS: Communication protocols for critical systems (e.g. factory automation, automotive, avionics); Modeling and analysis of critical communication systems.

Critical Computer Systems Architectures - CCSYA: Fundamental components of computer architectures: Processors, Memory, Memory hierarchy, Buses, I/O interfaces; Concepts of System on a Chip, Embedded Systems, High Performance Computing Systems, multi-/many-cores; OS and hypervisor handling.

Last 4 weeks:

Critical Systems Lab - CSLAB: Group project to implement critical systems or components applying concepts from the previous courses.

2nd Semester

First 11 weeks:

Formal Verification of Critical Applications - FVOCA: Foundations of formal verification of software and its support via automated and assisted theorem provers; Runtime verification based on formal specifications and contracts; Software code verification techniques and tools.

RTOS Programming - RTOSP: Real-Time Operating Systems, their architecture and operation; Mechanisms to ensure real-time requirements; Programing components and device drivers for RTOS, including scheduler and synchronization mechanisms.

Systems of Systems - SYOSY: Architectures for systems integration focusing upon system-oriented architectures, communication middlewares and paradigms of distributed computation; Integration of real-time/safety-critical aspects.

Project Management and Development - PMDEV: Systems engineering; Project development and management, including quality management, heterogeneous team coordination; Leadership and communication skills.

Last 4 weeks:

Industry-Driven Use-Case Engineering - IDUCE: Team system development with use-cases provided by industry partners, following industry-driven methodologies.

3rd Semester

First 11 weeks:

Advanced Programming Paradigms - APROP: Programming paradigms and languages for critical systems; Functional programming; Parallel and concurrent programming.

Dependability and Cybersecurity - DASYS: Risks and pathways of threats to critical systems (advanced driver-assistance systems, IoT, mobile applications, Industry 4.0); Intrusion detection and response; Cryptographic protocols and secure applications; Interplay between security and other non-functional properties.

Intelligent, Autonomous, Cooperative Systems - IACOS: Cooperative and intelligent vehicles, with hands-on implementation; Robotic development frameworks and simulation tools; Cooperation and artificial intelligence, focusing on deep-learning, computer vision and sensor fusion.

Application Scenarios and Case Studies - ASACS: Concrete industrial application examples of critical computing systems in various application domains: automotive, factory automation, medical, space, aeronautics, banking, etc; Case studies of successful and failed implementations.

Last 4 weeks:

Thesis Research Plan Development - TRPDE: Survey of the state-of-the-art; Identification of scientific and technological challenges; Planning; Scientific writing and presentation of results; Industrial seminars.

4th Semester

Project/Thesis/Internship - TMECS: Master thesis dissertation/project/internship; expected to occur in industrial context.