General objectives:
– It is intended to provide students with knowledge to enable them to understand and identify emerging techniques and methods to support software development and to develop the capacity to identify and instantiate technological infrastructures supporting the construction and operation of complex, modular, distributed and developed software in collaborative way in short and demanding circuits.

Specific objectives:
i) Understand the emerging changes and challenges associated with the software development lifecycle requirement.
ii) Understand trends / approaches associated with the development of business WEB platforms, and the models and / or approaches underlying them
iii) Identify tools and mechanisms that support the stages of software construction and integration
iv) Design and operationalize technological infrastructures that allow to accelerate the construction and delivery of functional software in a collaborative way.

1. Software Development Life-Cycle
2. Risk Factors in Software Development phases
3. Domain-Driven Design
4. Virtualization techniques to support software development
5. Migrate monolithic applications to microservices
6. Development of modern web applications
7. Patterns for the development of microservice-based architectures



1. Know and to identify applicability scenarios for different methodologies/models and techniques for data storage;
2. Identify all aspects for the development and implementation of a Business Intelligence system;
3. Know and apply modeling techniques and concepts for building data storage systems and explore their potential through advanced techniques for knowledge discovery;
4. Know and identify the main methods and techniques for identifying, extracting, processing and loading data;
5. Identify and apply data exploration and analysis techniques.

1. Exploring Operational Databases
2. NoSQL Databases
2.1. Document-oriented database
2.2. Graph-oriented database
3. Business Intelligence Systems planning and implementation
3.1. Study of Data Warehousing System Architecture and Components
3.2. Study of methodologies and application for Data Warehouse implementation
3.3. Study of concepts and techniques applied to multidimensional data modeling
3.4. Hierarchy concept, its study, and implementation
4. Study and application of analytical data processing techniques
5. Introduction to Big Data concept and associated technologies



The objectives of this curricular unit are:
– know the fundamental concepts of machine learning;
– know the main techniques/algorithms according to the current state of the art;
– identify the best technique/algorithm to apply in a given scenario;
– creation of pipelines for model development;
– integration of models in software development.

More specifically, after completing this curricular unit, the student should be able to:
1. Know the fundamentals of Machine Learning
2. Know and understand the algorithms that are more used
3. Identify and apply the best algorithm given a specific scenario
4. Development of pipelines with integration of multiple models
5. Development and integration of models in software applications

1. Machine Learning Concepts
2. Linear Algebra Review
3. Machine Learning Libraries/Packages
4. Supervised Learning
a. Linear Regression
b. Logistic Regression
c. Support Vector Machines
d. Deep Learning
5. Unsupervised Learning
a. Clustering
b. Dimensionality Reduction
6. Applying ML in large datasets
7. Case studies



The general objectives of this course are:
– Identify, understand and characterize Virtual Reality and Augmented Reality projects
– Design, evaluate and develop applications in the field of Virtual Reality and Augmented Reality

More specifically, after completing this course the student should be able to:
I) Know the existing challenges in the development of applications for Virtual Reality and Augmented Reality;
II) Structure and distinguish the different components of a functional application of Virtual Reality and Augmented Reality;
III) Understand the use of frameworks and software standards used in the implementation of Virtual Reality and Augmented Reality components;
IV) Integrate principles of Computer Vision and object tracking in Augmented Reality applications integration between real world images and virtual object images;
V) Recognize examples of applications for Virtual Reality and Augmented Reality projects.

1 – Introduction to Virtual Reality (VR), Augmented Reality (AR) and Mixed Reality (MR)
2 – Architecture of VR and AR systems and main components used
3 – Study of an example of a VR and AR framework
3.1 – Characterization of an VR and AR framework
3.2 – Overlapping virtual and real resources
3.3 – Description of the processing phases of AR applications: recognition and tracking of recognized patterns / objects
4 – Computer vision and dedicated algorithms for object recognition and tracking in virtual and real environments
4.1 – Characterization of a computer vision system and its application in RA
4.2 – Introduction to image acquisition, processing and analysis techniques
4.3 – Application of deep learning models to detect objects / patterns
4.4 – Application of computer vision algorithms and frameworks in VR and AR applications
5 – Examples of VR and AR applications in Industry 4.0



Study of the techniques, methodologies, tools and legal constrains related to the implementation of privacy enabled systems.

After concluding this Curricular Unit, the student should be able to:
1. Identify problems that have impact on data privacy.
2. Know and understand privacy enhancing technologies.
3. Know and understand data anonymization techniques.
4. Know and understand techniques for the evaluation of the privacy of a system.
5. Evaluate the level of privacy of a system.
6. Implement systems on a privacy-by-design and privacy-by-default policies.

1. Online anonymity
2. Case studies
3. Privacy enhancing technologies (TOR, TorBrowser, Tails)
4. Critpocurrencies (bitcoins, wallets, exchanges, blockchain)
5. Data anonymization (k-anonymity, l-diversity, t-closeness)
6. Homomorphic encryption
7. Related legislation (GDPR, DPIA)




1. To assess and manage distributed and cloud solutions;
2. To understand and develop applications using web services;
3. To understand and develop scalable and reliable applications for cloud computing;
4. To manage infrastructure of distributed and cloud computing
5. To analyse and discuss concrete case studies;
6. Apply the introduced concepts.

1. Distributed computing paradigm:
1.1. Architectures and models of distributed computing;
1.2. Distributed objects and remote invocation;
1.3. Web Services;
1.4. Replication and Consistency.
2. Cloud computing paradigm:
2.1. Architectures and applications of cloud computing;
2.2. Infrastructures (grid computing, virtualization, edge computing, cycle-sharing);
2.3. Storage;
2.4. Resource management (scheduling, migration, scalability, reliability).




– Provide a set of seminars in the scientific areas of the studies cycle that show the state of the art of Innovation and Research in the field of Informatics Engineering;
– Promote contact with organizations and personalities with relevant activity in advanced areas of Informatics Engineering;
– Develop the ability to acquire and deepen knowledge through presentations held in a seminar environment.

After concluding this curricular unit, the student should be able to:
OB1. Identify relevant dissertation/project/internship topics;
OB2. Prepare and present a dissertation/project/internship proposal;
OB3. Write and review a scientific/technical paper.

CP1. Invited talks.
CP2. Topics for dissertation/project/internship.
CP3. Dissertation/project/internship proposals.
CP4. Conference.



It is intended that students acquire skills for:
1. Identify, structure, and address decision problems.
2. Build models for decision problems.
3. Applying methods, techniques, and tools to simulate and solve problems that involve the operation of a system.
4. Use the information extracted from the models to induce and motivate organizational changes.

1. Modelling and Simulation of Discrete Events.
2. Modelling linear programming problems.
3. Linear programming – graphic resolution, Simplex method, and Solvers
4. Heuristics – constructive and local search.
5. Metaheuristics – bio-inspired and non-bio-inspired.



OBJ1. To know and to identify scenarios where the use of scalable technologies may provide relevant results in the context of data analysis
OBJ2. To know and design scalable architectures for data analysis that are suitable to the characteristics of each problem
OBJ3. To understand and design strategies for obtaining, pre-processing and combining different sources of data in order to create a coherent dataset for analysis
OBJ4. To know the different paradigms for data processing, being able to choose the most suitable approach for the resolution of a given problem
OBJ5. To identify common problems in data processing tasks and corresponding solution design pattern
OBJ6. To implement and manage clusters for distributed data processing
OBJ7. To master the development of data processing tasks, from the development and test in single-machine to the deployment in a production cluster
OBJ8. To apply machine learning techniques in data analysis projects

1. Introduction
a. Introductory concepts
b. Big Data: current applications
c. Big Data: challenges and opportunities
d. The SMACK stack
2. Programming Languages for data analysis
a. Languages for data processing
b. The Scala language
c. Functional programming
d. Data processing with Scala
3. Distributed processing in databases
a. Data processing in databases
b. Mongo
c. Aggregation framework
d. MapReduce
4. Batch distributed processing
a. Hadoop
b. Cluster management
d. Hadoop MapReduce
e. MapReduce design patterns
5. Distributed processing with Spark
a. Introduction to Spark
b. Data processing with Spark
c. Data acquisition and processing from HDFS
d. Data acquisition and processing from MongoDB
6. Machine Learning
a. Introduction to Machine Learning
b. Spark MLib



At the end of the curricular unit students should be able to:
1. Identify and understand the different programming paradigms that exist today for web and mobile programming;
2. Understand emerging paradigms for mbile and web developement such as such as Aspect Oriented Programming, Event Oriented Programming and the application of Functional Programming in components for web and mobile applications;
3. Identify, understand and apply software development approaches, and software patterns applied in web and mobile development;
4. Identify the concepts behind a real-time, event-driven framework.

1. Challenges in the development of web and mobile applications;
1.1 Review of the different classic programming paradigms and their applications in web and mobile programming;
1.2 Main development standards and software patterns used in web and mobile application development;
2. Introduction to modern programming paradigms applied in web and mobile development;
2.1 Overview of modern programming paradigms for web and mobile programming;
2.2 Introduction to Functional Programming and Functional Primitives in web and mobile development;
2.3 Aspect Based Programming;
2.4 Event-Driven Programming;
3. Software development approaches and software patterns applied in web and mobile development;
4. Realtime applications, Reactive Programming and the publish-subscribe model;
5. Application of programming paradigms and concepts studied in the development of Realtime and Event-Driven applications for web and mobile devices.



Considering the growth and sophistication of cyber threats, this curricular unit contributes to a better understanding of the problem and to the knowledge of the best practices to adopt in supporting the strategic, operational and tactical objectives of organisations.

At the end of this curricular unit, the student should be able to:
1. Understand the cyber threats and the motivations behind these;
2. Recognise different types of cyber threats;
3. Understand the difference between data, information and intelligence;
4. Understand the process of data acquisition, data analysis and data presentation;
5. Identify and suggest tools and sources of intelligence according to the organisation needs;
6. Support organisations in assessing their situational awareness on cyber threats;
7. Design, manage or support the implementation of cyber intelligence and awareness programs.

1. Cyber threats
– Types of threats
– Motivations
– The threats business
– Use/show cases
2. Cyber Intelligence
– The intelligence cycle (sigint, osint, humint, imint, geoint, masint)
– Types of intelligence (strategic, operational, tactical)
– Denial and deception
– Cyber (threat) intelligence
– The cyber intelligence professional
3. Building a cyber intelligence model
– The anatomy of an attack
– Limitations traditional security solutions
– Approaching cyber attacks
– Incorporating the intelligence lifecycle into security workflow
4. Building and maintaining a cyber intelligence program
– Data gathering
– Data analysis and presentation
– Do it internally, externally or both?
5. Intelligence sharing
– Threat Intelligence Platforms
– Communities (CERTs, CSIRTs, ISACs, …)
– Interoperability efforts (openIOC, CyBox, STIX, TAXII, …)
6. Cyber situational awareness
– Cyber Common Operating Picture
– Critical Infrastructure and Key Resources
– Continuous Assessment



1. Distinguish a physical identity from a digital identity;
2. Understand the identity problematic in the digital world, its management and its relationship with a physical identity;
3. Identify the main characteristics and requirements of the various types of identity management applications and their relationship with access control management.

1. Specify solutions that allow the control of physical and logical accesses, equipment and installations;
2. Identify identity management services (for example, SSO, LDAP, AD);
3. Understand and differentiate single-factor and multi-factor authentication systems (eg, authentication, strength, biometrics);
4. Register and identify uses of identity;
5. Identifier of federated identity management services (eg SAML, OpenID);

1. Control physical and logical access to assets
2. Identification management and authentication of persons and devices
3. On-premise identity services
4. Cloud identity services
5 Identity and Life Cycle Management



At the end of this subject, students should be able to:

G1: Understand the industry shop floor dynamics;
G2: Understand and characterise industrial processes;
G3: Understand and characterise the dimensions related to the fourth industrial revolution;
G4: Design and implement technological projects for industry;

CP1: The Industry and the industrial processes
CP2: The 4th industrial revolution;
CP2.1 Reference Architectures for I4.0;
CP3: The IoT concept;
CP3.1: IoT reference architectures;
CP3.2: Standards, protocols and IoT frameworks;
CP4: IoT project