MSc in Data Engineering for Artificial Intelligence.
Una ruta de posgrado para estudiantes que quieren construir las bases técnicas detrás de la IA moderna: arquitecturas de data, sistemas de almacenamiento, pipelines, infraestructura cloud y prácticas de ingeniería listas para producción.
Esta es la ruta de ingeniería para estudiantes que quieren hacer posible la IA a escala: no solo experimentar con modelos, sino diseñar, operar y asegurar los sistemas de datos que los alimentan.
Construir infraestructura de IADiseñar el almacenamiento, los pipelines y las plataformas que hacen posibles los proyectos de IA.Cultura cloud & DevOpsAWS, Azure, CI/CD, contenedores, orquestación y disciplina operativa.De los datos a los modelosConectar data engineering con aplicaciones de machine learning y deep learning.
01 — Identidad del programa
La IA necesita modelos, pero también infraestructura de ingeniería.
Data Engineering for AI es la ruta MSc para estudiantes que quieren construir, automatizar y operar los sistemas técnicos que hacen utilizable la inteligencia artificial en organizaciones reales.
Posicionamiento DSTI
De pipelines a sistemas listos para IA.
Muchos proyectos de IA fallan antes de empezar el modelado porque los datos están fragmentados, son poco confiables o no se pueden operacionalizar. Este programa se enfoca en la arquitectura, el software, el cloud, los pipelines y las competencias DevOps necesarias para hacer que los datos sean utilizables para IA.
Arquitectura
Diseñar sistemas de datos
Aprende a estructurar almacenamiento, cómputo y flujos de datos para entornos técnicos reales.
Pipelines
Mover y transformar datos
Construye pipelines entre sistemas, usando formatos y plataformas modernas de data engineering.
Cloud
Operar plataformas escalables
Entiende AWS, Azure e infraestructura cloud para el trabajo moderno en data e IA.
IA
Apoyar el machine learning
Conecta la práctica de ingeniería con las bases matemáticas y prácticas de la IA.
02 — Para quién es este programa
Para estudiantes que quieren construir los sistemas detrás de la IA.
El MSc in Data Engineering for AI es una ruta técnica. Es ideal para estudiantes que disfrutan los sistemas, el software, el cloud, las bases de datos, los pipelines y la confiabilidad operativa.
Buen perfil
Quieres convertirte en la persona que hace funcionar sistemas de data e IA en producción.
Te gustan las bases de datos, el cloud computing, las plataformas, la automatización y los sistemas distribuidos.
Quieres bases sólidas en software engineering y DevOps.
Quieres conectar pipelines de datos con aplicaciones de machine learning e IA.
Buscas roles en data engineering, cloud, plataforma o AI engineering.
Menos ideal si
Tu objetivo principal es el reporting de negocio o la investigación de modelos.
Si tu interés principal es el apoyo a la decisión, los dashboards y la implementación de analytics, compáralo con el MSc in Data Analytics with AI.
Si tu interés principal es el modelado avanzado, la estadística y los métodos profundos de IA, compáralo con el MSc in Data Science & AI.
Si tu interés principal es la protección de sistemas y el riesgo, compáralo con el MSc in Cyber Security.
03 — Estructura del programa
La estructura del programa, de un vistazo.
La estructura combina Warm Up técnico, cursos especializados, sesiones de apoyo y experiencia profesional integrada.
795hVolumen total impartido entre Warm Up, cursos especializados y sesiones de apoyo.
75hDSTI Warm Up para reforzar matemáticas, programación, cultura de IA, bases IT y práctica de sistemas.
35hSesiones de apoyo para repasar, resolver dudas, volver sobre conceptos difíciles y preparar exámenes.
30 ECTSExperiencia profesional mediante prácticas, empleo o actividad profesional validada.
Título profesional nacional (RNCP)
El título nacional al que conduce este MSc.
Título vigenteNivel 7 · nivel maestría
Architecte en Intelligence Artificielle
RNCP41993 · registrado ante France Compétences · se aplica a las generaciones actuales y futuras
DSTI no se esconde detrás de nombres de cursos vagos. El MSc in Data Engineering for AI se presenta abajo mediante sus bloques de enseñanza, horas, ECTS y contenido de cursos.
Warm Up • 75h
Punto de partida técnico
Un puente preparatorio para estudiantes de trayectorias académicas diversas antes de entrar al núcleo completo del MSc.
Cursos especializados
Ingeniería, IA y operaciones
Una estructura transparente, curso por curso, que cubre software engineering, cloud, data management, DevOps, IA y seguridad.
Experiencia profesional • 30 ECTS
Aplicación en contexto profesional
Una experiencia profesional validada donde los estudiantes aplican el programa en un entorno laboral pertinente.
Warm Up75h • 6 ECTS
Punto de partida técnico común
El Warm Up refuerza matemáticas, programación, gestión de datos, cultura de IA y bases IT antes de que los estudiantes entren al núcleo completo del MSc.
10h
Warm Up: Fundamental Mathematics
Core mathematical preparation for quantitative and technical coursework.
Establishing shared foundations for working with data and code
The Warm Up brought together mathematical reasoning, programming and the practical organisation of a computing environment. Sessions moved between Python and R, operating systems, relational data and spreadsheets, alongside discussion of artificial intelligence and version control. Examples and guided work connected abstract ideas with everyday operations: representing information, running a program, managing files and examining whether a result or a change can be trusted.
What students explored
Reasoning and representation
Logic, functions and limits sat alongside relational tables and spreadsheet values, with attention to what a representation means and preserves.
Code and working environments
Python, R and command-line work connected language features with files, permissions, dependencies and the organisation of a reproducible project.
Checking and collaborating
Version control and discussion of generated code linked collaborative work with the need to understand, inspect and safely manage changes.
Explore the sessions
1. Data Working Environments and System Setup
The session introduced Clean IT as preparation for data work, explaining local, cloud-based and hybrid ways of working with data projects. It compared these approaches in terms of privacy, security, cost, performance, storage, reliability, collaboration, setup and customisation, stressing that the appropriate choice depends on the use case and sensitivity of the data. Students were guided through recommended computer specifications and core Windows setup tasks, including activating an education licence, enabling Linux and virtualisation features, and installing Ubuntu and Windows Terminal. Virtual machines and disk partitioning were explained as ways to run separate operating environments while sharing limited hardware resources. The session also outlined later work with cloud notebooks, local Python tools, virtual environments and code editors.
2. Python Fundamentals and Virtual Environments
The session introduced Python as a high-level, interpreted, dynamically typed and extensible programming language, explaining why it is widely used in data work. Students created and ran a simple ‘Hello World’ Python program using Visual Studio Code and the terminal. The class covered variables as references to objects in memory, including assignment, naming conventions, values, types, type checking and explicit type conversion. It also demonstrated formatted strings for inserting variable values into text. Students were shown how to download course materials, create and activate a virtual environment, install dependencies, use Jupyter notebooks, and begin exercises on variables.
3. Python Conditionals, Errors and Lists
The session reviewed Python as a high-level, interpreted and dynamically typed language, alongside virtual environments, variables, functions and the principle of avoiding repeated code. It introduced conditional execution with if, elif and else statements, as well as try-except blocks for handling errors such as invalid types, division by zero and unavailable files. Students practised writing conditional functions to identify whether values were positive, negative or zero, and to work with quadratic calculations and safe square roots. The class then covered sequences, particularly mutable lists and immutable tuples, including indexing, slicing, negative indexing, modifying lists, object identity, references, copying and nested collections. It concluded by introducing iteration as processing collection members one at a time.
4. Digital Computer Architecture and von Neumann Systems
The session introduced computer architecture by defining a computer as a system that receives inputs, processes them and produces outputs. It compared analogue and digital computers, explaining that digital systems use discrete binary values and support general-purpose computing. The class explored the Turing machine and finite-state machines, emphasising deterministic behaviour: the same input and instruction produce the same output. It then examined the von Neumann architecture, including input/output ports, the control unit, central processing unit (CPU), arithmetic logic unit (ALU), random-access memory (RAM), secondary storage, buses and registers. The session also explained that programs are loaded from storage into memory for processing, and that apparent multitasking relies on rapid context switching between processes.
5. R Programming and Reproducible Analysis
The session introduced R as a language for statistical analysis, data work, dashboards and application programming interfaces (APIs), comparing its use with Python, Spark and Rust. It discussed effective learning in the age of artificial intelligence, emphasising the need to understand, validate and safely manage code produced by language models, including the use of version control and separation of development from production systems. Students were introduced to RStudio and Quarto, and practised creating and running Python and R code chunks. The class compared Python arrays with R vectors, covering object assignment, one-based indexing in R, output functions, vectors, lists and data frames. It also examined coding style, memory pre-allocation, and risks such as overwriting built-in R functions or relying on ambiguous column-name matching.
6. Operating Systems, Processes and File Systems
The session reviewed how operating systems create the appearance of multitasking through pre-emptive scheduling, context switching, process IDs and round-robin allocation of CPU time. It introduced file systems and file paths, comparing Windows drive-letter paths with Linux root-based paths, and demonstrated how Linux can access Windows files through mounted directories. The class examined graphical and command-line methods of launching programs, explaining the roles of the shell, kernel fork function, process hierarchy, executable paths and CPU execution. It also covered CPU bitness, binary representation, and the broad structure used to store decimal numbers in registers, before introducing the relevance of networking to cloud computing.
7. PowerShell File Management and Automation
The session introduced PowerShell as a cross-platform command-line and scripting environment built on .NET, with uses in system administration, automation and cloud services. It compared proprietary and open-source operating systems, and explained Windows file systems, permissions, paths, case sensitivity and the differences from Linux. Practical demonstrations covered navigating directories, listing files, reading, creating, copying, moving, renaming and permanently deleting files, including the importance of backups when modifying configuration files. The class also covered aliases, pipelines, structured object output, filtering and sorting running processes, and redirecting standard and error output to files. The afternoon introduced PowerShell scripts, parameters, variables, control flow, execution policies and validating a supplied path before running a script.
8. Linux Command Line and Permissions
The session introduced Linux as an operating system built around the Linux kernel, explained distributions, and compared its file-system structure with Windows. It covered users, groups, system users, ownership and read, write and execute permissions, including numeric permission modes and the purpose of root and sudo access. Practical command-line work demonstrated navigation, file and directory creation, copying, moving, deletion, symbolic links, text editing, redirection and searching with grep and regular expressions. The class also covered package installation, services, processes and process signals, before beginning an introduction to Bash scripts, parameters, variables and conditional checks.
9. Relational Databases and Data Integrity
The session introduced data management by explaining why tables are a human-readable way to organise information. It showed how text, images, audio and more complex sources such as websites can be converted into numerical table-based representations. Students designed a simple relational database for customers, products and invoices, identifying attributes, primary keys and foreign keys. The class covered functional dependencies and the relational model, using examples to show how poor table design and duplicated data can cause integrity problems. A final activity demonstrated how splitting poorly structured data into related tables reduces duplication and improves reliability.
10. Excel Data Types and Functions
The session introduced Excel as a widely used business tool and outlined the resources, exercises and expected software environment for the course. Students explored Excel data types, including logical, numerical and text values, and learned that formatting changes how data appears rather than its underlying value. Dates and times were explained as numerical serial values, alongside common issues such as automatic conversion, leading zeroes and converting between text and numbers. The class then examined built-in Excel functions, how to use the categorised documentation, and the roles of text, date/time, logical and information functions. Students began practical tutorials on applying simple, top-ten, custom and advanced filters to data.
11. Logic, Sets and Binary Relations
The session introduced core logical notation, including implication, equivalence, negation, quantifiers and proof by contradiction. It covered set theory: subsets, the empty set, cardinality, unions, intersections, complements, disjoint sets, partitions and Cartesian products. Applications between sets were defined through images, injectivity, surjectivity, bijectivity, composition, restrictions and extensions, with examples based on squaring real numbers. The class then studied binary relations and their properties, including reflexivity, symmetry, antisymmetry and transitivity, before defining equivalence relations, equivalence classes, order relations, bounds, suprema and infima. A later discussion clarified injective, surjective and bijective functions and introduced the inverse of a bijection.
12. Sequences, Convergence and Function Limits
The session introduced real sequences as functions from the natural numbers to the real numbers and defined convergence using epsilon and a limiting value. It covered uniqueness of limits, boundedness of convergent sequences, rules for sums, products, quotients and absolute values, and the special care required with divergent sequences and infinite limits. Monotone and adjacent sequences were studied, including convergence of bounded monotone sequences, powers of a positive number, accumulation values, and the Cauchy criterion. The class then began real functions, covering limits, inequalities, monotonicity, continuity, operations on continuous functions, composition, and extension by continuity.
Artificial Intelligence and Language Models
The session introduced artificial intelligence (AI) as a long-standing research problem, covering the Turing test and the history of symbolic, neural and hybrid approaches to AI. It explained that large language models use neural networks to identify and extend patterns in large datasets, rather than necessarily understanding logic, facts or context. The class compared rule-based chatbots with neural networks, discussed limitations including hallucinations, data quality, context and ethical risks, and considered neurosymbolic AI as a possible future direction. It also distinguished supervised, unsupervised and semi-supervised learning through examples of image classification and recommendation systems, and stressed the importance of reliable data and good software engineering practice.
14. Git, GitHub and Collaborative Version Control
The session reviewed personal development environments, including cloud and local notebooks, virtual environments and requirements files for reproducible work. It introduced collaborative software development through GitHub as a platform for code repositories, portfolios, project documentation, licences and activity tracking. Students were shown how to create and organise repositories, edit README files using Markdown, upload files and folders, and publish a requirements file. The class then introduced Git as version-control software, explaining branches, pulls, pushes, commits, merging, conflict resolution and the protection of a stable main branch during team work.
15. R Factors, Strings and Data Import
The session explained how factors in R can impose meaningful category order, retain unused levels and reduce memory use by storing category codes as integers. Students created RStudio projects to manage working directories, loaded comma-separated values (CSV) data, and practised troubleshooting package, script and file-path issues. The class reviewed basic statistical functions and exploratory plots, then focused on readable R coding style through descriptive names, consistent assignment operators, spacing and avoiding semicolons. It introduced string matching and replacement, date handling with year–month–day dates, and the creation, storage and sourcing of functions, including default arguments. The session concluded with an introduction to tidy data, dplyr verbs and pipe operators.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
Software Engineering & IT200h • 25 ECTS
Cloud, software engineering e implementación de machine learning
Este bloque construye la base de ingeniería informática detrás de los sistemas de data e IA: plataformas cloud, diseño de software, semantic web, web engineering e implementación de machine learning.
50h4 ECTS
Cloud Computing — Amazon AWS
AWS cloud services and preparation for AWS Certified Solutions Architect – Associate.
Examining data movement and recovery choices in cloud systems
These sessions examined how data moves through Amazon Web Services (AWS), and how an architecture can recover when something goes wrong. Data ingestion and processing led into backups, replication and recovery strategies. Revision activities then connected these choices with wider architectural questions about security, availability and cost. The account follows the supplied sessions rather than presenting them as an exhaustive introduction to every AWS service.
What the sessions explored
Moving and preparing data
Batch and streaming pipelines introduced choices for ingesting, cataloguing, transforming and querying data, including quality checks and handling sensitive information.
Planning recovery
Backups, replication and redeployment were compared against recovery objectives, with attention to corruption, regional failures, cost and operational complexity.
Reviewing architectural choices
Knowledge checks and assessment preparation revisited the reasons for selecting particular services, rather than treating a product name as an answer.
Explore the sessions
1. Moving and processing data in AWS
The session introduced data engineering on AWS, focusing on the five Vs of data: value, veracity, volume, velocity and variety. It explained data pipelines, including extract, transform and load (ETL) and extract, load and transform (ELT) approaches, structured and unstructured data, and the choice between batch and streaming processing. AWS ingestion services were covered, including AppFlow for software-as-a-service data, DataSync for file transfers, and Data Exchange for third-party data. The class examined AWS Glue for data catalogues, crawlers, ETL jobs, schema management, data quality and handling sensitive information. Streaming tools including Kinesis Data Firehose, Kinesis Data Streams, managed Apache Flink and Kafka services were compared, alongside data lakes, data warehouses, Lake Formation, Athena, Redshift and OpenSearch.
2. Planning recovery across a cloud architecture
Disaster recovery planning connected acceptable data loss and recovery delay with storage, computing, databases and networks. Backups, snapshots and cross-region replication were compared, including why replication alone does not protect against corruption. The class reviewed storage migration, lifecycle management and shared file services, then considered machine recovery, automatic scaling, load balancing and regional failover. Managed database recovery and repeatable infrastructure deployment added further recovery options. A guided hybrid-storage lab covered configuring storage, moving files to Amazon Simple Storage Service (S3) and replicating data into another region, connecting architectural choices with the mechanics of protecting and moving data.
3. Comparing recovery patterns against business needs
The session completed the disaster recovery module by reviewing recovery point objectives (RPOs), recovery time objectives (RTOs), and the relationship between disaster recovery and business continuity planning. It covered AWS services and approaches for resilience, including S3 replication, Storage Gateway, Amazon Machine Images, snapshots, CloudFormation infrastructure as code, Route 53 health checks and failover. Four disaster recovery patterns were compared: backup and restore, pilot light, warm standby, and multi-site active-active, with emphasis on their cost, recovery speed and suitable use cases. Students worked through knowledge-check and exam-style questions on selecting the appropriate recovery pattern and AWS service for different scenarios. The session also introduced the certification exam structure, exam guide and practice-question resources.
4. Using revision questions to guide preparation
Certification preparation used a modular study guide and short quizzes to identify topics needing further revision. The material revisited computing, storage, networking, databases and security, alongside name resolution, logging, resilience, performance and cost. Students were shown how quiz results could guide their study rather than treating every topic as equally familiar. Additional resources included hands-on AWS practice environments, an architecture project and configurable practice tests. The session concerned ways to prepare and assess understanding; the source does not establish completion of the project or an eventual certification result.
5. Reviewing architecture choices and assessment questions
The session reviewed commonly misunderstood AWS concepts in preparation for an assessment. It covered service-level agreements, Elastic Compute Cloud (EC2) Auto Scaling, S3 durability, encryption and access logs, virtual private cloud (VPC) networking, network address translation (NAT) gateways, VPC peering, security groups and availability zones. It also compared relational databases with DynamoDB, explained Identity and Access Management (IAM) permissions and roles, and distinguished CloudWatch, CloudTrail and AWS Config for monitoring and auditing. Further topics included messaging with SNS and SQS, CloudFormation, caching, VPC flow logs, cost-allocation tags, SSL offloading, and gateway versus interface VPC endpoints. Practice-question answers were used to reinforce how to select appropriate AWS services for performance, security, scalability and cost management.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h3 ECTS
Cloud Computing — Microsoft Azure
Comparative overview with AWS, focusing on Azure services relevant to data lakes and data pipelines.
Following data and applications through managed Azure services
The sessions explored Azure through connected examples of infrastructure, data integration and model preparation. Virtual machines and load balancing led into scheduled data movement, Spark-based processing and a prediction workflow. Cost, access control and provider constraints accompanied the service demonstrations. The account also retains a practical limit: the final live model deployment did not complete, even though its preparation and intended interface were examined.
What students explored
Infrastructure choices
Virtual machines, networking and load balancing connected availability requirements with configuration, security rules and the trade-offs of managed cloud services.
Moving and processing data
Data Factory and Databricks examples followed records through storage, scheduled transfers, transformations and tables used for analysis.
Preparing predictions
Model training, evaluation and a proposed inference interface were explored alongside data cleaning, access control and the limits encountered during deployment.
Explore the sessions
1. Cloud Computing Fundamentals and Azure Services
The session introduced cloud computing as the delivery of on-demand computing, storage, networking and higher-level services, with emphasis on service-level agreements, scalability, resource pooling, cost optimisation and global availability. It compared cloud services with renting dedicated hardware, and considered benefits and limitations including resilience, security and compliance, bandwidth, provider outages and vendor lock-in. The class outlined major Azure service areas, including virtual machines, networking, data services and artificial intelligence services, and discussed how to select a cloud provider based on requirements, cost and staff expertise. Students were shown the Azure portal, subscriptions, resources and resource groups, then followed a demonstration of configuring an Ubuntu virtual machine with networking, public access, storage, security rules, monitoring, backups and tagging. The afternoon practical introduced load balancing for web applications, using multiple virtual machines to provide high availability and redirect traffic when an instance is unavailable.
2. Azure Data Factory ETL Pipelines
The session introduced Azure Data Factory as a cloud service for building, scheduling and monitoring data integration and extract, transform and load (ETL) pipelines. It covered data movement, transformation, orchestration, event-driven and batch processing, monitoring, security, access control, cost considerations, vendor lock-in and limitations in debugging or complex transformations. Azure Data Factory Studio was demonstrated, including linked services, datasets, copy activities, mappings, triggers, pipeline dependencies and monitoring. A practical example transferred customer data from a comma-separated values (CSV) file in Azure Blob Storage to an Azure SQL Database, using scheduled upsert operations. Students were then assigned practical exercises on loading data into Azure Synapse Analytics and retrieving weather data from an application programming interface (API) into a database.
3. Azure Databricks and Apache Spark Analytics
The session introduced Azure Databricks as a managed, collaborative platform built around Apache Spark for big-data processing, analytics, machine learning and business intelligence. It covered scalability through clusters and serverless compute, integrations with Azure storage and analytics services, identity-based access control, encryption, monitoring, and cost management. Examples showed how Databricks can support ETL pipelines, batch and real-time processing, predictive maintenance, anomaly detection, dashboards and machine-learning workflows. Practical demonstrations created a Databricks workspace, explored its catalogue, notebooks, jobs, compute resources and SQL tools, then imported CSV and API weather data into Delta tables using scheduled jobs. A simple weather-prediction model was prepared and registered for reuse within the Databricks environment.
4. Azure Machine Learning Model Deployment
The session introduced Azure Machine Learning Studio as a no-code environment for building, training, evaluating and deploying machine-learning models. A car-price prediction example used data selection, missing-data cleaning, a 70/30 train-test split, regression models, scoring and evaluation metrics to compare model performance and avoid overfitting. It also covered deploying a selected model through a real-time inference pipeline so that predictions could be requested via an API, although the live deployment did not complete. Azure Cosmos DB was presented as a globally distributed NoSQL document database, including partition keys, SQL-style queries, global distribution, security and MongoDB-compatible access. Practical work was assigned to practise machine-learning pipelines and build an end-to-end data project using an API, virtual machine, data lake layers, Data Factory and Cosmos DB.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Semantic Web Technologies
RDF, SPARQL and standards for representing, querying and using knowledge on the web.
How can data from different sources be connected, queried and given a shared meaning? These sessions moved from the foundations of the Web to knowledge graphs, query languages and ontologies. Practical work linked the standards to concrete tasks: describing resources, querying public datasets, modelling a museum collection and predicting what a reasoning system could infer. Modelling choices were examined alongside their social and ethical consequences.
What students explored
Connected data and practical queries
Representing information as linked statements, writing graph queries and working with public datasets, while checking that data is well formed and meaningful.
Models, meaning and inference
Defining classes and relationships, examining what follows logically from them, and recognising how assumptions and ambiguity shape a knowledge model.
Standards in use
Reusing vocabularies, connecting existing data formats and assessing data quality, alongside privacy, accessibility, bias and the need to check generated material.
Explore the sessions
1. From the Web to linked data
The Web was distinguished from the Internet as a distributed hypermedia application, built around Uniform Resource Locators (URLs), the Hypertext Transfer Protocol (HTTP) and Hypertext Markup Language (HTML). The session traced a path through structured documents using Extensible Markup Language (XML) to linked data and Resource Description Framework (RDF) graphs. Knowledge graphs connected named entities and relationships across datasets, supporting search, recommendation, integration, validation and reasoning. Retrieval-augmented generation was another application considered. The discussion also examined data collection, tracking, algorithmic influence and biased datasets, bringing privacy, accessibility and ethics into the technical picture.
2. Building and checking RDF graphs
RDF statements were studied as triples forming directed, labelled graphs. Uniform Resource Identifiers (URIs), literals and blank nodes supplied the building blocks for linking data across datasets. Students practised graph completion and learnt N-Triples, Turtle and RDF/XML syntax, including prefixes, namespaces, typed values and language tags. Activities included validating, converting and visualising data, creating a personal RDF profile and examining an external library dataset. The practical guidance was to test incrementally and check generated RDF rather than copying the output of artificial intelligence without verification.
3. Asking questions with graph patterns
SPARQL, the query language for RDF, introduced a way to ask questions by matching patterns in a graph. Students constructed patterns with triples, variables, prefixes and filters, then practised SELECT queries, distinct results, ordering and pagination. Remote endpoints such as DBpedia and Wikidata provided datasets to query. Further exercises used optional patterns, alternatives, exclusions and supplied values, alongside type and language tests, casting and string functions. Translating natural-language requests into queries connected the syntax to a precise account of which graph matches should be returned.
4. Defining vocabularies and drawing inferences
Ontologies were introduced as shared, formal vocabularies that give data meaning and support logical inference. Classes, properties and their definitions were distinguished from taxonomies, thesauri and validation schemas such as Shapes Constraint Language (SHACL). A museum modelling exercise exposed ambiguity, user needs, domain expertise and cultural assumptions. RDF Schema (RDFS) then provided classes, subclass and subproperty hierarchies, domains and ranges. Examples showed how these declarations allow additional types and relationships to be inferred, making the consequences of a model’s definitions visible in the graph.
5. Richer ontologies and open-world reasoning
An RDFS lab showed how loading a schema and enabling reasoning changes the available triples and query results. The Web Ontology Language (OWL) introduced richer class definitions and property relationships, including intersections, disjointness, equivalence, restrictions, inverse relations and property chains. Students interpreted axioms and predicted inferred facts from small graphs, using biological and organisational examples. Restrictions on values and cardinalities extended the modelling possibilities. Open-world reasoning and the absence of a unique-name assumption were central cautions: incomplete information and different names cannot simply be treated as proof of absence or difference.
6. Connecting formats and reusing existing vocabularies
Media Fragments and a media-resources ontology introduced descriptions of image regions, audiovisual segments and tracks. Students considered how to assess existing vocabularies through their definitions, scope, reuse and expressivity, and how validation supports data quality. The session surveyed mappings from relational databases, HTML, JavaScript Object Notation (JSON) and comma-separated values (CSV) into RDF. JSON for Linking Data (JSON-LD) contexts and other mapping standards connected familiar formats to graphs. Practical work included extracting embedded triples, interpreting mappings and converting profiles to JSON-LD. The Linked Data Platform introduced managing RDF resources and containers through HTTP operations.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h3 ECTS
Software Engineering — Part 1
Procedural programming in Rust, memory representation, ownership, borrowing, data structures, testing and reliable code.
Making ownership and interfaces visible in working Rust code
Rust provided the setting for examining how software structure and memory handling interact. The sessions moved from values, ownership and borrowing to error handling, collections and a modular graph implementation. Testing then returned attention to observable behaviour: what a function or component should do, how failures are represented, and how checks can remain independent of the implementation details they are intended to examine.
What students explored
Memory and references
Stack and heap storage, ownership, borrowing and lifetimes explained how Rust constrains access to values and the validity of references.
Structure and interfaces
Collections, traits and modules connected data-structure choices with separation of concerns, reuse and a graph implementation.
Checking behaviour
Unit, integration and property-based testing were distinguished, with graph examples connecting assertions and error cases to actual software components.
Explore the sessions
1. Rust Fundamentals and Ownership
The session introduced Rust as a systems programming language chosen for performance, memory safety, concurrency and use in data-intensive applications. It covered Rust tooling, including Cargo projects, crates, the Cargo.toml manifest, building and running programs, and configuring an editor with Rust analysis and debugging support. The class explained memory management through the stack and heap, including scope, allocation, fixed and dynamic data, strings and pointers. It also introduced immutable and mutable variables, ownership, moving values, cloning, borrowing through references, and basic control structures and functions.
2. Lifetimes, Error Handling and Traits
The session examined Rust lifetimes, explaining how references must remain valid and how explicit lifetime annotations prevent dangling references at compile time. It covered Option and Result types for handling missing values and failures, including matching, unwrapping, default values and propagating errors with the question-mark operator. The class introduced structs for grouping related data, their instantiation and mutation, ownership implications when copying fields, and implementation blocks for adding methods and constructor-like functions. It then introduced traits as shared behaviour across types, using the Iterator trait and operations such as next, map, filter, take and collect in preparation for building a linked-list example.
3. Data Structures, Graphs and Modularity
The session reviewed Rust exercises on lifetimes and references, mutable borrowing in structs, generic functions, Option and Result types, iterators, collections, and filtering data. It compared core data structures such as vectors, double-ended queues, heaps, hash maps, hash sets, B-tree maps and sets, focusing on their operations, complexity and appropriate use cases. Advanced structures including graphs, trees and spatial trees were introduced, alongside graph traversal and shortest-path concepts. The class then covered modularity, separation of concerns, encapsulation, abstraction, decoupling, interfaces, reuse and testing, before beginning a modular Rust graph implementation using type aliases, structs and derived traits.
4. Rust Testing, Benchmarking and Profiling
The session covered software testing in Rust, including the purposes and distinctions of unit, integration and property-based tests. It demonstrated how to write and run tests with Cargo, use assertions, test error conditions and private functions, mock external dependencies, organise tests, and keep tests independent and focused on behaviour. Practical examples applied unit and integration tests to graph structures and algorithms. The class also introduced benchmarking, code coverage, debugging and profiling, before reviewing core Rust principles such as ownership, borrowing, memory safety, modularity and error handling.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h3 ECTS
Software Engineering — Part 2
Object-oriented programming in C#, SOLID, UML, MVC, design patterns, services and Entity Framework.
Following a data pipeline through objects and design choices
C# examples connected object-oriented concepts with the structure of an application. The sessions moved from types and collections to classes, interfaces and architectural separation, using transactions and sensor data to make those choices concrete. Rather than treating design patterns as a vocabulary exercise, the later work examined how data access, reporting, export and notifications can be arranged through distinct responsibilities.
What students explored
Objects and relationships
Encapsulation, inheritance and polymorphism were examined through examples that distinguished shared capabilities from the specialisation of a class.
Separating responsibilities
Unified Modelling Language diagrams and model–view–controller architecture connected requirements and class structure with application behaviour and presentation.
Adapting the pipeline
Factories, adapters, repositories and observers supplied ways to organise data conversion, persistence, export and notifications without combining every concern.
Explore the sessions
1. C# Fundamentals and Data Structures
The session introduced C# as an object-oriented language used with the .NET platform and Common Language Runtime, including automatic memory management and just-in-time compilation. It covered Visual Studio project organisation, solutions, projects, namespaces, program entry points, primitive and reference types, operators, functions, conditions and loops. Practical examples demonstrated type conversion, integer division, user input validation with TryParse, and the differences between casting and parsing. The class also examined arrays, multidimensional and jagged arrays, and dynamic data structures including lists, linked lists, stacks and dictionaries. A merge sort example was introduced to illustrate divide-and-conquer sorting and its time complexity.
2. Object-Oriented Design and UML Modelling
The session introduced object-oriented programming, defining objects as entities with state, behaviour and identity, and classes as blueprints containing attributes, methods and constructors. It covered encapsulation through public and private members, static members, the current-instance reference, properties, constructors and method overloading, using bank-account and fraction examples in C#. SOLID design principles were introduced, particularly single responsibility and open–closed principles, with discussion of maintainability, extensibility and testability. The class also introduced the Unified Modelling Language (UML), including use case diagrams for identifying actors and system requirements, and class diagrams for modelling attributes, methods, visibility and static members. Finally, it began explaining horizontal relationships between classes, including association and aggregation.
3. Inheritance, Interfaces and Polymorphism
The session covered object-oriented relationships: inheritance through generalisation and specialisation, and interface realisation as a contract for shared capabilities. It explained polymorphism, abstract classes and methods, method overriding, virtual methods, protected access, base-class constructors, casting, and the difference between overriding at runtime and overloading at compile time. Examples modelled animals, vehicles, flying objects, database connectors, property ownership and transaction records. A practical C# example used abstract transaction classes, sales and refund specialisations, Language Integrated Query (LINQ)-based reporting, and interchangeable comma-separated values (CSV) and JavaScript Object Notation (JSON) data exporters through an interface. Students were set a guided UML-based exercise to build an Internet of Things (IoT) data pipeline using these concepts.
4. MVC Architecture and Design Patterns
The session introduced model–view–controller (MVC) architecture, separating an application into models for data and logic, views for presentation, and controllers for handling input and coordinating the other components. A console-based user-management example was developed to demonstrate this separation, including input validation, menus, error handling and exception handling. The class then covered creational, structural and behavioural design patterns, focusing on singleton, factory, adapter and observer patterns, including their purposes and limitations. These ideas were applied to a sensor-data pipeline using a factory to convert database records into reading objects, a repository and Entity Framework with SQLite for data access, report generation, and CSV and JSON export. The example was extended with an observer-based event system to notify application observers when database, reporting and export actions occurred.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Python Machine Learning Labs
Data structures, data cleaning, feature engineering and machine-learning modelling with Python libraries.
Looking at the data before choosing a predictive model
The supplied sessions concentrated on the work that precedes model fitting: understanding the question, inspecting imperfect records and deciding how to represent them. Python and pandas exercises used passenger data to examine missing values, class imbalance and feature construction. A separate book-rating project was introduced as a brief; the evidence here follows the preparation and exploratory work, rather than claiming completed project results.
What students explored
Framing the question
The project brief connected a prediction task with imperfect input data, comparison between models and the need to explain the resulting work.
Inspecting records
Summary statistics, plots and missing-value checks supported discussion of outliers, class imbalance and which information belongs in the prediction task.
Constructing features
Text extraction, grouped imputation and categorical encoding showed how representations are built before evaluating a model on unseen examples.
Explore the sessions
1. Machine Learning Workflow and Project Brief
The session introduced the structure of the machine learning course, including its focus on exploratory data analysis, feature engineering and modelling within a complete machine learning pipeline. A group project was outlined in which students were asked to use book metadata to predict Goodreads ratings, clean and analyse imperfect data, compare at least two models, and deliver code, a simple application, a report, a video demonstration and a GitHub repository. The class emphasised that machine learning begins with a clearly defined problem, suitable data and an understanding of how a human would approach the task. It also reviewed Python foundations needed for machine learning, including built-in data structures, mutability and immutability, indexing, conditions, loops and functions.
2. Pandas Inspection, Data Quality and Class Imbalance
The session reviewed pandas data frames, including their tabular structure, indexing, comma-separated values (CSV) import, and the use of head(), tail() and describe() for inspection. It introduced the Titanic data set as a continuing case study and defined the machine-learning task as predicting passenger survival from available passenger information. The class examined data quality issues such as missing ages, identified the target column and ground truth, and discussed class imbalance and its effect on model bias. It also interpreted summary statistics, distributions, standard deviation and outliers, considering when unusual cases should be retained, removed or contextualised through additional features.
3. Feature Extraction and Plotly Visualisation
The session reviewed exploratory data analysis and feature engineering using the Titanic data set, including handling missing values, removing unhelpful columns and considering bias when retaining scarce passenger profiles. It demonstrated how to extract structured titles from unstructured name text using string splitting, indexing, slicing, functions and DataFrame apply operations, then create and analyse a new title feature. The class examined how uneven category frequencies can limit the usefulness of a feature for machine-learning models. It also introduced data visualisation with Plotly, using wine-quality data to inspect distributions, relationships and outliers, housing data to map prices geographically, and stock and country data to show changes over time.
4. Titanic Imputation and Categorical Encoding
The session completed exploratory analysis and feature engineering for a Titanic survival prediction task. It examined missing data, gender, passenger class, age distributions, fares and outliers, using bar charts, pie charts, histograms, distribution plots and box plots to identify relationships with survival. The class discussed removing unhelpful columns, imputing missing ages using grouped averages, and preparing data so that it is numerical and suitable for machine learning. It introduced ordinal/label encoding and one-hot/vector encoding, including their trade-offs, the k−1 rule, and the encoding of binary and passenger-class variables. The session then introduced the distinction between training and testing data, explaining how models learn from labelled examples and are evaluated on unseen examples.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Web Engineering
HTML, CSS, JavaScript, front-end basics, MVC programming with ASP.NET and API frameworks.
Connecting a browser interaction with the application behind it
Web development was followed from a page's structure and styling to browser events, server-side logic and database-backed responses. A to-do application introduced interactive elements; a blog and bookstore interface then connected requests with stored data. The sessions placed implementation alongside semantics, validation and interface design, showing how a visible action on a page depends on several distinct parts of the application.
What students explored
Page structure and behaviour
Hypertext Markup Language, Cascading Style Sheets and JavaScript connected meaningful page elements with layout, events and changes to the document.
Requests and persistence
Server-side examples linked routes, controllers and templates with database queries, submitted forms and the handling of user input.
Interface contracts
Resource-based routes, request methods and response codes framed application programming interfaces, alongside introductory authentication and authorisation concepts.
Explore the sessions
1. HTML, CSS and Web Foundations
The session introduced front-end and back-end web development, including Hypertext Transfer Protocol (HTTP) requests and responses, and the roles of browsers, web servers and web applications. It covered Hypertext Markup Language (HTML) structure and semantics, including headings, paragraphs, images, links, sections, tables, lists and forms, with attention to accessibility attributes and search-engine visibility. Cascading Style Sheets (CSS) were then used to style pages through inline, internal and external stylesheets, selectors, specificity, colours, sizing, positioning, the box model, display types and Flexbox layouts. A practical exercise began building and styling a Kanban-style to-do application that was intended to be made interactive with JavaScript.
2. JavaScript and DOM Manipulation
The session introduced client-side JavaScript as a dynamically and weakly typed language run by the browser, covering variable scope with var, let and const, loops, conditionals, functions, asynchronous functions, promises and await. It covered arrays, including mixed and jagged arrays, and creating and accessing objects. JavaScript inclusion in HTML through script tags was explained, including the effects of placing scripts in the head or at the end of the body. Practical Document Object Model (DOM) work included selecting elements, changing text, HTML, styles and CSS classes, creating animations, and responding to events with event listeners. A to-do list exercise began, using DOM content loading, form submission handling, input validation, dynamic task creation and appending task elements to a list.
3. ASP.NET Core MVC and Entity Framework
The session introduced backend web development with ASP.NET Core, Razor templates, Entity Framework and SQL Server. It explained HTTP request–response communication, URL parameters and the intended use of GET, POST, PUT and DELETE methods, including idempotency. Model–View–Controller architecture was reviewed, alongside routing, controllers, views, layouts, static assets and transferring data from controllers to Razor views. A blog application was built to retrieve posts from a database, display individual posts and their related comments using Entity Framework, and submit new comments through a form followed by redirection. The session then began adding user registration, covering user models, validation annotations, password hashing, anti-forgery tokens and data transfer objects for registration forms.
4. RESTful Web API Design
The session introduced application programming interfaces, focusing on web APIs, Representational State Transfer (REST) principles and the need for predictable, scalable, well-documented and non-breaking interfaces. It compared REST with GraphQL as a layer that can unify queries across multiple services and manage resource costs. The main HTTP methods were explained: GET for retrieval, POST for processing or creation, PUT for idempotent replacement or update, and DELETE for removing a resource state. A bookstore API was designed by identifying resources, permitted actions and routes, then implemented in ASP.NET using controllers, models, database context and HTTP status codes. The session also began covering API authentication using authorisation headers, bearer tokens and JSON Web Tokens, including expiry and permission claims.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
Data Management180h • 23 ECTS
Almacenamiento, data warehousing, NoSQL, big data y pipelines
Este es el centro de gravedad del programa: almacenamiento de datos, data warehouses, ETL, bases de grafos y documentos, ecosistemas big data y tecnologías de pipelines.
25h3 ECTS
Data Wrangling with SQL
Relational databases, advanced SQL queries, stored procedures, triggers, dynamic SQL and Microsoft SQL Server.
Turning a business question into a precise database query
The sessions connected relational structure with the questions people ask of business data. Students restored databases, inspected tables and wrote Structured Query Language (SQL) queries before examining joins, missing records and normalisation. Small wording differences mattered: finding a matching product, an order without an invoice or a customer who bought every product required different reasoning about relationships and the records a query would return.
What the sessions explored
Inspecting unfamiliar data
Keys, schemas, row counts and collation provided starting points for understanding a database before drawing conclusions from its contents.
Expressing relationships
Self-joins, filters and missing-record queries connected business questions with explicit comparisons between rows and relationships between tables.
Checking structure
Normal forms and functional dependencies exposed possible inconsistency, while aggregation and division queries tested more demanding conditions across related records.
Explore the sessions
1. Connecting relational models with database systems
The session introduced relational databases, explaining how tabular data is organised into rows and columns and how tables are linked through primary and foreign keys. It contrasted relational and non-relational data models, using document and key-value structures to show why highly variable data may create sparse tables. The class explained client-server database architecture, including database servers, clients, web interfaces, back-end code, SQL queries, connection details and access permissions. It also compared proprietary and open-source database systems, and outlined the course case-study approach and SQL-based assessment.
2. Inspecting schemas and writing selection queries
The session covered restoring a SQL Server database from a backup file, including verifying the backup and using the database interface to inspect tables. It reviewed relational tables, primary and foreign keys, schemas, and the use of schemas for functional organisation and access permissions. Students wrote basic SQL queries using SELECT, FROM, USE and COUNT, and discussed why row counts should be checked before using SELECT * on an unfamiliar or very large table. The class also examined database collation, including case and accent sensitivity, and explored customer data to identify data-quality inconsistencies and infer how customer and billing identifiers were structured.
3. Comparing products and finding missing invoices
Self-joins compared product prices, including a query for non-USB products priced at least as highly as a USB product. Text filters, wildcard placement and case conversion affected which rows matched; DISTINCT addressed repeated results from multiple comparisons. An entity–relationship diagram then connected customers, orders and invoices through their keys. The class explored orders without invoices using an outer join with missing-value filtering and alternative subqueries. These examples led into invoice structure: identifiers, dates, line items, quantities, prices and totals. The queries were examined in their data context, without asserting that every alternative behaves identically for all missing values.
4. Examining dependencies and normalising database structures
The session reviewed database normalisation, covering first, second, third and Boyce-Codd normal forms, functional dependencies, atomic values, composite keys and the risks of duplicated or dependent non-key data. Examples from a sample database were used to identify non-atomic JavaScript Object Notation (JSON)-style fields and third-normal-form breaches that could create inconsistent customer and invoice information. The class then restored and explored a second SQL Server database, checked table keys and case-sensitive collation, and used the graphical interface to add and edit a city column. Finally, it practised GROUP BY, COUNT and HAVING, then developed two approaches for finding customers who had bought every product, including a division query using nested NOT EXISTS conditions.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h3 ECTS
Data Warehousing & ETL
Design and implementation of data warehouses and ETL processes in stand-alone and cluster deployments.
Keeping the meaning of data through warehouse transformations
Data warehousing was approached from reporting requirements through to the transformations needed to support them. The sessions connected staging and operational stores with dimensional models, rejected rows and historical changes. Practical flows in SQL Server Integration Services made those choices visible: converting a value, enriching a record or assigning a key each affects what the resulting warehouse can reliably say.
What students explored
Layering the flow
Staging areas, operational stores and warehouse models separated incoming records from the structures intended for analysis and reporting.
Checking transformations
Conversions, lookups and rejected-row handling exposed problems that need examination rather than disappearing inside an apparently successful load.
Representing history
Facts, dimensions and surrogate keys connected reporting structure with choices about retaining changes to employee and customer attributes.
Explore the sessions
1. Data Warehousing, ETL and BI Architecture
The session introduced the purpose of data warehousing and extract, transform and load (ETL) within business intelligence, focusing on collecting, integrating, modelling and delivering data for decision-making. It explained ETL and extract, load and transform (ELT) processes, data sources such as files, databases and enterprise resource planning systems, and the importance of working from stakeholder requirements and intended reporting outcomes. The class covered staging, operational data storage and data warehouse layers, including bronze, silver and gold data, data marts, and central versus departmental warehouse architectures. It distinguished transactional online transaction processing (OLTP) databases from analytical online analytical processing (OLAP) databases, and stressed trusted, consistent key performance indicators (KPIs) and reusable data models. Students installed and configured Visual Studio, SQL Server Integration Services (SSIS) and SQL Server databases, then explored the SSIS project interface and its control-flow and data-flow tasks.
2. Staging Loads and Operational Data Store Design
The session reviewed the role of a staging area in an ETL pipeline and demonstrated loading a sales comma-separated values (CSV) file into a staging database using SSIS flat-file sources, OLE DB destinations and table truncation. It then considered how to design an operational data store to analyse sales by employee, customer and geography, including incorporating geographical information into employee and customer data. A practical SSIS flow was built for employee data, using derived columns to create email addresses and clean salary values, data conversions for salary and birth dates, and a lookup to enrich records with country and continent data. The class also covered column sizing, destination mappings, data viewers for checking transformations, and identifying invalid date values with SQL TRY_CONVERT.
3. ODS Sales Cleansing and Dimensional Modelling
The session developed an operational data store (ODS) sales ETL flow by selecting sales fields, cleaning decimal separators, converting monetary and date values, resizing text columns, and loading the resulting data into an ODS sales table. Technical error handling was configured to redirect rejected rows, record metadata about conversion failures, combine reject streams, and review the resulting errors. The class then introduced data warehouse modelling, distinguishing fact tables containing analysable events and measures from dimension tables containing descriptive attributes. It compared star, snowflake and constellation schemas, and explained primary and foreign keys alongside natural and surrogate keys. Finally, it covered slowly changing dimensions, including types 0, 1, 2 and 3, and how each approach handles changes and historical dimension data.
4. Slowly Changing Dimensions and Fact Loading
The session covered the implementation of Slowly Changing Dimensions (SCD) types 2 and 3 in SSIS for employee data. SCD type 2 was explained as retaining historical versions through separate rows, start dates and end dates, while type 3 stores a previous value in an additional column. A customer dimension was then configured using the SSIS Slowly Changing Dimension wizard, including fixed, changing and historical attributes and the use of business keys. The class also began building a sales fact-table ETL flow, looking up surrogate keys for customer, employee and date dimensions, handling missing references with an unknown key value of -1, and logging functional rejects. Data-type alignment between source dates and the date dimension was addressed before mapping the final fact-sales fields.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Graph Databases — NoSQL Part 1
Graph-based problem modelling and practical implementation in Neo4j graph databases.
Making relationships the starting point of a database query
Graph-database work began with nodes, relationships and the questions their connections can answer. The sessions used Neo4j and Cypher to move from matching a pattern to importing data, applying constraints and inspecting query plans. Aggregations and temporal values extended the queries, while a continuing graph exercise and discussion of deployment options connected the data model with its practical use.
What students explored
Modelling connections
Labels, properties and directed relationships connected graph concepts with queryable data, using a movie dataset for practical examples.
Loading and querying
Imports, uniqueness constraints and traversal patterns were examined alongside optional matches, duplicate removal and the inspection of execution plans.
Working with results
Aggregations, projections, lists and temporal calculations supplied ways to turn matched relationships into useful structured output.
Explore the sessions
1. Neo4j Graph Fundamentals and Cypher Queries
The session introduced Neo4j as a native, schema-optional graph database and compared its relationship-focused storage with relational databases. It covered graph theory fundamentals, including nodes, relationships, directed and weighted graphs, labels, properties and shortest-path traversal. Students explored common graph-database applications such as fraud detection, recommendation systems and network analysis. The class introduced Cypher syntax for matching, filtering and returning nodes and relationships, using a movie graph dataset for practical queries. Students also practised creating nodes and relationships with MERGE, updating or removing properties, and using conditional creation and matching behaviour.
2. CSV Import and Advanced Cypher Querying
The session demonstrated how to import comma-separated values (CSV) data into Neo4j, create uniqueness constraints, load person, location and visit nodes, and create relationships between them. It then introduced intermediate Cypher querying, including case-insensitive string filtering, checking query plans with EXPLAIN and PROFILE, and writing efficient graph traversal patterns. Further activities covered OPTIONAL MATCH, ordering, filtering null values, limiting and paginating results, and removing duplicates with DISTINCT. The class also practised map projections and CASE expressions to customise returned JSON-style objects and categorise movie runtimes.
3. Cloud Neo4j, Aggregations and Temporal Cypher
The session introduced cloud computing models, service types and deployment approaches, including the benefits and limitations of public, private, hybrid and multi-cloud environments. It compared using Neo4j through Amazon Web Services (AWS), Google Cloud and Azure marketplaces, including single instances, clustered deployments, containers and relevant certification routes. The class then practised intermediate Cypher queries using aggregation functions such as COUNT, COLLECT, SUM, AVG, MIN and MAX, alongside DISTINCT, UNWIND, list indexing and list slicing. It also covered date, time and duration values in Cypher, including calculating intervals and converting timestamps for comparisons. Students continued the COVID graph mini-project exercises.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
10h2 ECTS
Document Databases — NoSQL Part 2
MongoDB collections, documents, advanced queries, aggregations and data architecture.
Reshaping documents into an answer with an aggregation pipeline
MongoDB sessions connected document structure with the operations needed to inspect and report on it. After comparing database models, students worked with collections, nested values and queries before following documents through ordered aggregation stages. Restaurant data supplied a recurring example, and index discussion connected the logical query with how the database finds its records and selects an access path.
What students explored
Document operations
Collections, embedded fields and arrays provided the setting for creating, reading, updating and deleting records through MongoDB tools and Python.
Aggregation stages
Filtering, grouping, reshaping and joining documents showed how a report can be constructed through a sequence of transformations.
Finding records
Collection scans and index scans framed the discussion of index types and the practical task of querying restaurant data.
Explore the sessions
1. NoSQL Concepts and MongoDB CRUD
The session introduced NoSQL databases, explaining how document, graph, wide-column and key-value databases differ from relational databases and suit different use cases. It compared SQL and NoSQL in terms of schema flexibility, scalability, transaction guarantees, querying, performance, security and vendor lock-in. MongoDB was presented as a document-oriented database using Binary JSON (BSON), with databases, collections, documents, fields, embedded documents, arrays and object IDs. Students installed MongoDB and Compass, created databases and collections, inserted, deleted and updated documents, and imported a restaurant dataset. The class then explored filtering, projections, sorting, pagination, logical operators, comparisons, field existence, regular expressions and array queries, before introducing equivalent operations through the PyMongo Python library.
2. Aggregation Pipelines and Indexing
The session introduced MongoDB aggregation pipelines, in which documents pass through ordered stages such as $match, $project, $group, $unwind, $sort and $lookup. It demonstrated accumulator operations including counts, sums, averages, minima, maxima, and first or last values, alongside reshaping, cleaning and constructing fields within pipelines. Examples used restaurant data to calculate statistics by borough and cuisine, flatten arrays of inspection grades, create map-ready outputs, and obtain random samples. The class then covered indexes, explaining collection scans versus index scans and the use of single-field, compound, text, unique, time-to-live (TTL), wildcard, collation and geospatial indexes. Practical work was assigned to create indexes and write queries and aggregations that generate a restaurant report.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
50h4 ECTS
Big Data Ecosystem by Adaltas
HDFS, scheduling, resource management, workflow and ETL, scalable enterprise service bus, Spark and data exploration.
Following data through distributed storage, processing and streams
These sessions followed data across a distributed system: where it is stored, how work is divided, and how results move between services. Hadoop, Spark, Kafka and NiFi supplied different parts of that picture. Labs and demonstrations connected architecture with queries, processing jobs and data flows, while fault tolerance, access control and operational limits remained part of the discussion rather than separate concerns.
What students explored
Distribution and reliability
Replication, cluster roles and failure scenarios exposed the trade-offs behind spreading storage and computation across machines connected by a network.
Queries and processing
Hive tables, MapReduce jobs and Spark DataFrames connected storage formats and execution choices with practical ways to query and transform data.
Streams and data flows
Kafka events and NiFi pipelines introduced time, delivery, queues and provenance as concerns when data keeps arriving and moving between systems.
Explore the sessions
1. Big Data Distributed Systems and Hadoop Foundations
The session introduced big data as data that cannot be stored or processed effectively by a single machine, focusing on volume, velocity and variety. It explained distributed systems, horizontal and vertical scaling, clusters and nodes, along with the benefits and challenges of distributing computation across networked machines. The consistency, availability and partition tolerance (CAP) theorem was used to compare consistency, availability and partition tolerance in distributed data storage. The Hadoop ecosystem was outlined, including Hadoop Distributed File System (HDFS) for storage, Yet Another Resource Negotiator (YARN) for resource management, and processing tools such as MapReduce and Spark. Students began a practical activity by connecting securely to a Hadoop edge node through Secure Shell (SSH) and practising basic Linux command-line use.
2. Hive Data Warehousing and Medallion Architecture
The session reviewed distributed systems, Hadoop HDFS and YARN, including master, worker and edge nodes, replication, fault tolerance and high availability. It distinguished online transaction processing (OLTP) from online analytical processing (OLAP) systems and compared databases, data lakes, data lakehouses and data warehouses, including atomicity, consistency, isolation and durability (ACID) properties. The class introduced Apache Hive as a data-warehouse tool built on HDFS, using HiveQL and execution engines to query stored data. It covered external versus managed Hive tables, row-based and columnar file formats, Hive partitioning, and the bronze, silver and gold stages of the medallion architecture. Students then began practical Hive exercises creating and querying external and managed tables, including use of ORC files.
3. HDFS Storage and MapReduce Processing
The session reviewed core big-data concepts, including the three Vs, data types, horizontal versus vertical scaling, networking risks and the CAP theorem. It covered Hadoop’s main components: HDFS for distributed block storage, YARN for cluster resource management, and MapReduce for distributed processing. The class examined how HDFS splits and replicates files, why small files create metadata overhead, and why processing should be located with the relevant data blocks where possible. MapReduce was introduced through a word-count example, explaining map, shuffle and sort, reduce, network communication, and disk-based fault tolerance. Students then worked on Hadoop-based Python MapReduce word-count exercises and began designing a MapReduce job from scratch.
4. Spark Architecture, DataFrames and SQL
The session reviewed distributed-system reliability, including single points of failure, standby NameNodes, split-brain scenarios, leader election and ZooKeeper heartbeats. It compared MapReduce and Spark, covering disk-based versus memory-based fault tolerance, resilient distributed datasets, transformations and actions, lazy evaluation, and narrow versus wide transformations and shuffles. The teaching then introduced Spark DataFrames and Spark Structured Query Language (SQL) as higher-level, more readable alternatives to low-level resilient distributed dataset (RDD) programming, explaining schemas, the Catalyst Optimiser and the benefits of explicitly defining schemas for large production data sets. Students began a practical Docker-based Jupyter lab using New York City taxi data to explore DataFrame operations, SQL queries and joins, with exercises requiring work in both PySpark and Spark SQL.
5. Kafka Event Streaming and Time Semantics
The session introduced real-time event streaming, distinguishing unbounded streams from bounded datasets and comparing hard, soft, near-real-time and batch processing requirements. It reviewed stream-processing concepts including event time versus processing time, windows, triggers and watermarks, and strategies for refining aggregated results. The class then examined Kafka as an event-streaming platform, covering events, producers, consumers, brokers, topics, partitions, offsets and consumer groups. It explained partitioning by round-robin allocation or message keys, replication through leaders and followers, producer acknowledgements and delivery guarantees, and leader election using KRaft rather than ZooKeeper. Students were asked to deploy a Kafka cluster in containers, run a consumer, and optionally process streamed events with Python, Spark or an extract, transform and load (ETL) service.
6. NiFi Data Flow and Pipeline Design
The session reviewed OLAP and OLTP workloads, row-based and columnar file formats, the medallion architecture, Apache Spark, and Kafka’s publish-subscribe model. It introduced Apache NiFi as a tool for managing data flows and compared ETL, extract, load and transform (ELT) and light-transformation loading pipelines. The class covered NiFi’s security, scalability, delivery guarantees, data provenance and lineage, clustering, registry-based version control, and core components including flow files, processors, connections, funnels and process groups. It also considered why NiFi is best suited to moving data and carrying out light transformations rather than heavy processing. Students began a practical Docker-based lab to build, version and document a basic NiFi data flow.
7. NiFi Flow Configuration and Operations
The session reviewed Apache NiFi as a tool for building ETL and ELT data flows, contrasting transformation before loading with transformation after loading into a data lake. It covered NiFi architecture, including flow files, metadata attributes, content, provenance, repositories, processors, controller services and clustering. The class demonstrated the NiFi interface, process groups, ports, funnels, connections, relationships, queues, back-pressure thresholds, load balancing and debugging. It also explained scheduling, retry and penalty behaviour, parameter contexts, expression language, and version-control alternatives following the planned retirement of NiFi Registry. Students were assigned sequenced labs to build increasingly complete pipelines, culminating in consuming Kafka streams with NiFi, transforming the data, and loading cleaned results into PostgreSQL.
8. Hadoop Security and Object Storage
The session reviewed distributed cluster roles and introduced four security principles: identification, authentication, authorisation and encryption. It explained how LDAP, Kerberos, Apache Ranger, Knox and Atlas can support identity management, ticket-based access, role-based permissions, gateway access and governance in Hadoop ecosystems, with comparisons to cloud-native tools. The class then compared file, block and object storage, focusing on object storage features such as buckets, metadata, flat namespaces, immutability, S3-compatible application programming interfaces (APIs) and storage tiers. Software-defined storage, MinIO, Ceph and erasure coding were discussed as ways to provide scalable, resilient cloud storage. Students were assigned a lab to deploy MinIO in Docker and create and manipulate object-storage buckets.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Data Pipeline — Part 1
XML data flow, DTD and schemas, XSL transformations and JSON data formats.
Describing, checking and transforming structured data for exchange
The class examined how structured information can be represented, validated and transformed between formats. Extensible Markup Language (XML) and JavaScript Object Notation (JSON) provided the main settings, with bibliographies, catalogues and film records as practical examples. Students created documents and schemas, deliberately changed data to test validation, and explored transformations that select, reorder and present information from an existing structure.
What students explored
Representing structured information
Elements, attributes, objects and arrays compared through data-exchange examples, distinguishing a document's structure from the programming or presentation tools around it.
Making constraints explicit
Schemas used to define types, required information and permitted values, with deliberate data changes testing whether validation detects departures from those rules.
Transforming existing records
Paths and templates used to select and reshape data, including filtering, ordering and producing readable output from catalogues and film records.
Explore the sessions
1. Building and inspecting a structured document
Data formats were distinguished from web programming languages and human-readable presentation. XML introduced nested elements, attributes, declarations and a tree structure, alongside the distinction between well-formedness and validation. Namespaces, resource identifiers and language tags addressed how names and context are expressed. Students created, formatted and viewed a simple document in an editor and browser. Comparison with JSON and graph-based semantic data placed the exercise within a wider discussion of representations used to exchange information between systems.
2. Defining a schema and testing its constraints
XML Schema introduced simple and complex types, element and attribute declarations, and rules governing how often information can occur. Ranges, patterns and enumerations constrained values, while type extension offered a way to build on definitions. Students created and validated schemas for bibliography and film data, deliberately adding or removing information to test the rules. Namespace and schema-location declarations connected documents to their definitions. Work then began on more precise types for a curriculum example within the session.
3. Selecting records and applying transformation templates
XPath expressions introduced paths, tests and conditions for selecting nodes in an XML tree. Extensible Stylesheet Language Transformations (XSLT) then used matching templates to generate other representations. The class examined template application, default rules, specificity, extracted values and dynamically constructed output. Catalogue and film examples supported activities in filtering, counting, sorting and formatting results for web presentation. The focus was on transforming existing structured information through declared rules rather than manually reproducing each output record by hand.
4. Modelling JSON and checking permitted variations
JSON objects, arrays and primitive values were compared with XML structures. Ordered collections and repeated items led into JSON Schema rules for properties, required fields, types and constraints. Students created representations and schemas for bibliographies, catalogues and film data, then changed the data to test validation. Restrictions on additional information and dependencies extended the contract beyond basic types. The class also prepared to transform XML film records into JSON using XSLT, carrying the transformation theme across formats.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h3 ECTS
Data Pipeline — Part 2
Apache Spark, Kafka, modern data platforms, Lambda and Kappa architectures, anything-as-code and CI/CD practices.
Taking a data pipeline from working example towards production
The sessions connected data modelling with the software and infrastructure needed to run a pipeline reliably. Python patterns and tests led into Spark, lakehouse tables and infrastructure as code. A change-data-capture example then brought those elements together, moving from record updates to an analytical table and a more modular implementation. The account follows that engineering progression without treating a classroom example as a completed production service.
What students explored
Modelling and repeatability
Transactional and analytical structures were examined alongside idempotency, side effects and the patterns used to organise transformation code.
Validation and storage
Tests, typed inputs and lakehouse metadata connected software checks with data quality and controlled publication of table changes.
Deployment structure
Infrastructure definitions, permissions and modular code were applied to the pipeline, with orchestration discussed as the link to arriving data.
Explore the sessions
1. Data Modelling and Warehouse Architectures
The session introduced the aims of production-grade data engineering, including end-to-end pipelines, common engineering patterns, infrastructure as code, continuous integration and delivery (CI/CD) and the role of data engineers in connecting transactional and analytical systems. It compared online transaction processing (OLTP) and online analytical processing (OLAP) workloads, discussed data lakes and lakehouses, and explained why SQL and self-service data solutions are widely used. The class covered conceptual, logical and physical data modelling; normalisation through the first, second and third normal forms; denormalisation; star and snowflake schemas; slowly changing dimensions; fact tables and dimension tables. It also examined data retention, sampling, bucketing, query plans, pre-computation and data-granularity trade-offs, including bit-based date-list encoding for efficient activity and churn queries. The final section introduced functional programming principles for pipelines, especially atomicity, idempotency and avoiding side effects, alongside factory and strategy design patterns in Python ETL code.
2. Python Engineering Patterns and Spark Testing
The session explained Python context managers, data classes and Pydantic models as ways to manage resources safely, represent structured data clearly and validate incoming JavaScript Object Notation (JSON) data early. It covered pytest features including parametrised tests, fixtures, exception testing, test-driven development, mocking and dependency injection, with emphasis on testing transformation logic and Spark applications. Further Python topics included caching, decorators, object references versus copies in pandas, type hints, protocols, singleton design and avoiding magic strings and excessive coupling. The class then introduced Hadoop-related technologies, Parquet compression and Hive metadata, alongside Ranger-based data-access controls. It also covered distributed processing and Spark concepts, including MapReduce, lazy evaluation, partitioning, joins, testing, and the write-audit-publish pattern for data quality.
3. Lakehouse Architecture, Iceberg and Infrastructure as Code
The session introduced Amazon Web Services (AWS) Glue as a serverless way to run Spark workloads and use a central data catalogue, alongside other cloud and orchestration options. It explained lakehouse architecture and Apache Iceberg table formats, focusing on metadata, snapshots, manifests, partition pruning, time travel, schema and partition evolution, upserts, and write-audit-publish workflows. Practical exercises were outlined for using Spark, Iceberg and Docker to create tables, merge data, inspect metadata, and validate data before publication. The session also covered infrastructure as code with Terraform, including providers, resources, variables, modules, dependencies, plans, state, identity and access management (IAM) permissions and scheduled AWS Lambda deployments. Finally, it refreshed CI/CD concepts such as pipelines, runners, artefacts, reusable container images, formatting checks and security scanning for Terraform.
4. Change Data Capture Pipelines with Iceberg
The session developed an AWS data pipeline that moves change-data-capture files from a transactional system into Iceberg tables for analytical use. It demonstrated creating Glue catalogue databases and Iceberg tables, then using Spark SQL MERGE operations to apply inserts, updates and deletions to users and orders data. A country-level analytics table was built by joining the source tables, deriving order years and aggregating order values. The prototype was then refactored towards a production-oriented design using modular Python code, typed configuration, unit tests, Terraform-managed infrastructure, least-privilege identity and access management (IAM) permissions and deployment of code artefacts to S3. The session also discussed how orchestration tools could detect arriving files and trigger Glue jobs with runtime parameters.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
Metodologías operativas175h • 18 ECTS
DevOps, seguridad, sistemas de información y gobernanza
La ingeniería de sistemas de datos también requiere métodos de proyecto, cultura jurídica, práctica DevOps, bases de cyber security y diseño de sistemas de información.
25h2 ECTS
Data Laws and Regulations — Philosophies, Geopolitics and Ethics
Data privacy and security principles, EU and US regulation, and differences between common law and code law.
Data Laws and Regulations — Philosophies, Geopolitics and Ethics
Course code: MEL-001
Questioning the rules and responsibilities surrounding artificial intelligence
The sessions examined data and artificial intelligence through law, ethics and geopolitical choices. Discussion moved between regulatory approaches and concrete questions about privacy, discrimination, ownership and human control. Cases involving conversational robots, connected products and autonomous weapons showed why technical capability alone does not settle a decision. The account follows the arguments explored in class, including tensions between innovation, enforceable obligations and the protection of rights.
What students explored
Law and ethical commitments
Different jurisdictions and risk-based regulation provided a setting for distinguishing enforceable duties from voluntary commitments and for discussing competing public priorities.
People and their data
Privacy, consent, data-subject rights and sharing rules connected system design with identifiable people, potential discrimination and the limits of control over information.
Responsibility beyond the model
Human control, professional ethics and supply-chain oversight extended the discussion to how systems are supplied, deployed and used by other organisations.
Explore the sessions
1. Legal, Ethical and Geopolitical Challenges of AI
The session introduced the legal, ethical and geopolitical issues raised by data and artificial intelligence, emphasising that regulation varies across jurisdictions and societal contexts. It explored why artificial intelligence (AI) and data engage areas including data protection, liability, intellectual property, constitutional law, international law and discrimination. Students considered the limits of using AI in legal decision-making, including predictive systems for human-rights cases, balancing legal certainty and efficiency against human interpretation and the evolving nature of law. The class also examined definitions of AI, the distinction between narrow and general AI, calls to regulate future technological risks, and the possible legal personhood of robots. A case discussion considered arguments for and against a conversational robot inheriting an owner’s assets.
2. EU AI Act Risk-Based Regulation
The session examined the development and purpose of the European Union (EU) AI Act, including tensions between innovation, competitiveness, sovereignty, public regulation and private ethical codes. It distinguished legal obligations from voluntary ethical commitments, explaining why enforceable rules and sanctions are significant. The class explored the Act’s risk-based model, covering prohibited, high-risk, limited-risk and minimal-risk AI systems, alongside the duties imposed on providers and other actors. It also considered the Act’s extraterritorial reach, exclusions such as military and research uses, enforcement mechanisms, regulatory sandboxes, and the particular rules for general-purpose AI models. Students discussed practical difficulties in assessing risks to fundamental rights, democracy and human dignity, as well as potential conflicts between European and international regulatory approaches.
3. Privacy, Data Protection and the GDPR
The session introduced data protection law through discussion of children’s data, profiling, algorithmic bias and the limits of consent in digital services. It examined why data protection is important for AI, comparing the European rights-based approach with the more sector-specific approach in the United States. The class covered privacy as a broader concept than information control, including dignity, intimacy, home and communications, and considered the EU Charter rights to privacy and personal-data protection. It then introduced the General Data Protection Regulation (GDPR), including personal data, identifiable natural persons, processing activities, material and territorial scope, and the basic obligations on organisations processing data. Students discussed examples involving health data, policing, profiling, data transfers and cross-border services.
4. Data-Subject Rights, Bias and Data Sharing
The session examined GDPR data-subject rights in AI systems, including access, rectification, erasure, restriction of processing, portability and objection, and explained privacy by design across training and deployment. It considered how biased datasets and algorithmic design can create or reinforce discrimination, and discussed fairness, auditing, impact assessments and ethics by design. The class then introduced the EU Data Act, its application to data from connected products and related services, its relationship with the GDPR, and rules on user-led data sharing, competition, gatekeepers, contracts, compensation and dispute resolution. The final section used neurotechnology to explore mental privacy, brain data, cognitive liberty, and the need for ethical and legal safeguards against misuse by companies or governments.
5. Autonomous Weapons and AI Professional Ethics
The session examined the ethical, legal and professional responsibilities of scientists and data specialists in relation to autonomous lethal weapons and AI used in conflict. It considered the limits of existing regulation, particularly the military exemption in the AI Act, and debated whether emerging technologies should be regulated or prohibited before they are fully developed. The class compared arguments for and against autonomous weapons, including meaningful human control, bias, accountability, international consensus and historical preventive bans on certain weapons. It also discussed whether advanced AI systems merely imitate reasoning or might develop forms of understanding or consciousness, and considered the implications for law and responsibility. Finally, the session explored corporate due diligence, value-chain oversight and contractual controls through examples of technology companies supplying tools that may be used for immigration enforcement, surveillance or defence.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h2 ECTS
IT Project Management: Traditional and Agile Approaches
Project management lifecycle and best practices for traditional and agile approaches.
IT Project Management: Traditional and Agile Approaches
Course code: MEL-002
Planning work, reviewing progress and adapting a project
Project management was explored through both structured planning and short delivery cycles. The sessions connected business purpose, scope, resources and stakeholders with sprint planning, review and adaptation. Simulations and practical activities made the methods discussable in terms of work actually planned or reviewed. Traditional and agile approaches were compared through uncertainty, constraints and coordination, rather than presented as a choice with one answer for every project.
What students explored
Purpose and constraints
Business cases, project charters and scope, time and cost constraints connected planned work with the reasons for undertaking it and the resources available.
Feedback and commitment
Sprint reviews, retrospectives, capacity and velocity introduced ways to inspect progress and make realistic commitments as a team learns from delivery.
Coordination across teams
Roles, stakeholder relationships, dependencies and scaled agile practices linked local planning decisions with wider organisational objectives and collective delivery.
Explore the sessions
1. Project Foundations and Agile Sprint Management
The session introduced the course structure and its aim of preparing students to participate in or lead data science projects. It contrasted traditional, waterfall-style project management with agile approaches, explaining time-boxed sprints, sprint reviews, retrospectives, planning and visual task boards. A project was defined as a temporary undertaking with a unique objective, a defined timescale and required resources, distinguishing it from routine operations. The class also examined product and sprint backlogs, prioritisation, team commitment, transparency and measuring progress. Business cases, break-even points, return on investment and the need to reassess a project when business conditions change were introduced.
2. Waterfall Lifecycle, Triple Constraint and Project Vision
The session began with sprint planning and reflection, using completed work and team capacity to agree a realistic commitment for the next sprint. It covered project vision statements, the limitations of AI-generated content, and the need to understand project-management concepts well enough to assess artificial intelligence (AI) outputs critically. Key traditional project-management concepts included the triple constraint of scope, time and cost; project life-cycle phases; uncertainty, risk and the rising cost of change; and the Project Management Institute (PMI) waterfall framework, including project charters, planning, resources, communication, procurement and stakeholder management. Students practised preparing elements of a project charter and assigning stakeholder roles through a responsible, accountable, consulted and informed (RACI) matrix, then discussed stakeholder power and influence. The class also covered Gantt charts, task estimation, S-curves, earned value, cost and schedule variance, key performance indicators (KPIs), and the Plan-Do-Check-Act cycle.
3. Agile Manifesto, Velocity Forecasting and Method Comparison
The session used a simulated sprint review, retrospective and planning exercise to demonstrate approval of completed work, velocity tracking, forecasting and commitment to a minimum sprint scope. It introduced Agile values from the Agile Manifesto, stressing individuals and interactions, working software, customer collaboration and responding to change whilst recognising the continuing value of plans, documentation and contracts. Agile and waterfall approaches were compared in terms of fixed constraints, planning, suitability for different levels of uncertainty, stakeholder involvement and regulated environments. The class examined timeboxing, incremental delivery, technical debt, minimum viable products, proof of concepts, product backlogs, prioritisation and Agile contract models. It also covered the roles of the product owner, Scrum Master and self-managing cross-functional teams, followed by a scenario activity, quiz and video on Agile product ownership.
4. Adaptive Backlogs, DevOps Practices and Scaled Agile
The session showed how an agile backlog can be adapted as new information emerges, using prioritised user stories and changing investigation scenarios to illustrate this process. It emphasised the importance of direct, timely communication for agile teams, particularly where teams are distributed. Agile software development practices included automated testing, continuous integration and delivery, code standards, collective code ownership, technical-debt reduction, and responsible use of AI-assisted programming. The class then introduced scaled agile working through Scaled Agile Framework (SAFe), including Agile Release Trains, programme increments, programme increment (PI) planning, cross-team dependencies, and the roles of product manager, Release Train Engineer and system architect. It also considered how agile delivery can be connected with wider business strategy and product value.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
CRM Data Management
Preparation for Microsoft Power Platform Functional Consultant and CRM data management software.
Connecting customer records, permissions and business processes
Customer relationship management was explored as a system of related records, access rules and business activities. Practical work in Dataverse moved from tables and environments to imports, applications and process flows. Sales examples connected those structures with leads, opportunities and orders, while troubleshooting and security made visible the operational questions behind a form: who may change a record, what happens next, and how a failure is investigated.
What students explored
Models and environments
Tables, relationships, solutions and separate environments connected the structure of customer data with controlled changes to the applications that use it.
Access and automation
Record privileges, business rules and flow histories showed how permissions and conditions influence what users can do and how automated steps behave.
A record through the sales process
Leads, opportunities, quotes and orders gave related data a business sequence, including follow-up activities and the handling of disqualified leads.
Explore the sessions
1. Dataverse Data Modelling and Environment Management
The session introduced customer relationship management (CRM) data modelling in Dataverse, including tables, primary and foreign keys, and one-to-many, many-to-one and many-to-many relationships. It compared on-premises and cloud CRM deployments, and covered Dataverse features such as application programming interfaces (APIs), security, auditing, business rules, workflows, duplicate detection, reporting and integrations. Students learnt how development, test and production environments are managed, including environment types, access groups, backup, copying and solution deployment. Practical activities involved accessing a shared CRM environment, creating account and contact records, creating a solution with a publisher and prefix, and creating, publishing and testing a custom table. The session also explained table ownership, activity tables, virtual tables, auditing, quick create forms and record management.
2. Data Import, Security and Application Types
The session began with a practical exercise in exporting account data to Excel, amending a phone number, importing the file back into the CRM system, and checking that the change had been applied. It then covered Dataverse security, including business units, security roles, record privileges, access levels, teams, column-level security and hierarchy security. Further topics included environment analytics, storage capacity, auditing, duplicate detection, bulk deletion and long-term data retention. The class also introduced model-driven, canvas and Power Pages applications, before practising the creation of a model-driven app with grouped tables for customer and sales functions.
3. Flow Troubleshooting, Business Rules and Process Flows
The session covered testing and troubleshooting Power Automate flows using Flow Checker, test runs, run history, action statuses and error details. It also explained administrative tasks such as monitoring flow activity, reviewing run histories and sharing flows with appropriate permissions. Business rules were introduced as a no-code way to apply conditions and actions, including showing, hiding, enabling, disabling or requiring form fields, with a practical exercise to control four contact fields according to whether an account had been selected. The class then introduced business process flows as stage-based guides for users, including their steps, limits, associated tables, conditional branches and use in opportunity management.
4. Sales Pipeline, Opportunities and Order Processing
The session explained the CRM sales pipeline, from creating leads through imports, website forms or direct contact, to recording follow-up activities such as calls, emails, meetings and tasks. Leads can be qualified to create account, contact and opportunity records, or disqualified with a recorded reason while remaining available for later reactivation. Opportunities use price lists and product line items to calculate prices and totals, then progress through quotes, orders, fulfilment, payment and invoicing. The class also distinguished system-generated record IDs from customer-facing quote and order numbers, discussing uniqueness and restrictions on changes after creation. A practical activity asked students to carry out both a successful sales-pipeline case and a disqualified-lead case in the Sales Hub application.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
Connecting software changes with the systems running them
Development and operations were considered together through collaboration, automated testing and repeatable environments. The class moved from Git and small changes into infrastructure definitions, containers and Kubernetes, then examined monitoring and reconciliation with repository configuration. Labs and demonstrations connected these ideas to running services, while the discussion retained the organisational questions of feedback, reliability and reducing the consequences of failure.
What students explored
Changes that can be checked
Version control, meaningful commits and automated tests connected to small changes, refactoring and feedback before software reaches a running environment.
Describing and running environments
Infrastructure definitions, containers and orchestration examined through provisioning labs and demonstrations of deployment, recovery, networking and persistent storage across changing workloads.
Observing and reconciling systems
Metrics, dashboards and repository-driven configuration used to discuss how teams observe services and keep deployed applications aligned with their intended state.
Explore the sessions
1. Starting with collaboration and small software changes
DevOps was introduced as collaboration between development and operations, supported by communication and automation. Waterfall and agile approaches were compared through iteration, stakeholder feedback and sustainable working practices. Reliability discussions covered monitoring, service objectives and the expectation that failures will occur. Semantic versioning and naming conventions introduced ways to communicate changes clearly. Students began a small project lab with documentation and a change log, preparing to use Git and Node.js as part of the practical work.
2. Using version control and a failing test
The Git workflow covered repositories, staging, commits, remote updates and inspection of differences. Automated testing was discussed through unit, functional, integration and end-to-end checks, including browser automation. Test-driven development introduced a cycle of writing a failing test, implementing the behaviour and refactoring while keeping the checks passing. Students began a JavaScript lab for user-related application programming interface functionality. Self-contained tests, setup, validation and cleanup connected the method with tests that are fast enough to use repeatedly.
3. Describing infrastructure and provisioning a service
Continuous integration and continuous delivery or deployment connected version control, tests and releases. Infrastructure as code then introduced declarative and imperative approaches, repeatable application of configuration, and mutable or immutable infrastructure. Vagrant provided a setting for managing virtual machines, while Ansible introduced declarative provisioning. Students worked on labs using shell provisioning and Ansible to deploy and check a GitLab environment. Earlier discussion of small changes and testing remained relevant as the subject moved from application code to its infrastructure.
4. Packaging applications and retaining their data
Containers were compared with virtual machines through isolation, shared operating-system resources and portability. Docker demonstrations covered obtaining images, running containers and managing their lifecycle. Dockerfiles introduced custom builds through base images, copied files and build commands, including tagging and troubleshooting. Storage volumes addressed data that must persist, while Docker Compose described applications with several containers. A WordPress site and MySQL database illustrated this arrangement, connecting application packaging with the services and data it needs to run.
5. Observing orchestration and desired workload state
Kubernetes introduced deployment, networking, scaling and recovery across a cluster. The class examined control-plane and worker components, then used manifests and commands to inspect and change resources in Minikube. A demonstration showed a deployment replacing a deleted managed pod, unlike a standalone pod. Namespaces, labels and services helped organise the workloads. Configuration, secrets and persistent storage were introduced before students were directed to practical labs, extending the discussion from individual containers to the system that manages them.
6. Separating workload lifetime from data persistence
The class traced a pod request through authentication, scheduling and container creation before examining storage choices. Temporary volumes, host-mounted data, configuration and secrets raised different persistence and security questions. Demonstrations covered static and dynamic provisioning through persistent volumes, claims and storage classes. Binding, reclaim policies and pending workloads were investigated, including checking data after pod replacement. Students were directed to practise temporary and host-path volumes, with further persistent-volume work offered as an optional exploration rather than assumed completed work.
7. Connecting services within a cloud-native architecture
Cloud-native architecture linked loosely coupled services with containers and delivery practices. Kubernetes networking was examined through pod communication and stable service addresses, with demonstrations of different service types and troubleshooting. Load balancing and ingress routing introduced distinctions between transport and application-level traffic handling. Service meshes then brought together observability, encrypted service communication and traffic control, including canary releases. The discussion connected these mechanisms with the architecture around them rather than presenting orchestration as simply another way to start a container.
8. Reading metrics and reconciling repository configuration
Grafana introduced dashboards over metrics queried from Prometheus. The class examined connections, local access, query-based panels and imported dashboard definitions, then discussed related tools for logs, traces and metric storage. GitOps connected declarative infrastructure with Git as the record of intended configuration. Push and pull approaches were compared, including Argo CD's reconciliation of Kubernetes applications. Students were asked to complete labs using the monitoring and reconciliation tools, bringing observation and configuration management into the same operational discussion.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Fundamentals of Cyber Security Practices
System security design patterns, infrastructure security, data encryption and code safety.
Examining exposed information and the controls that protect it
Cyber security was explored through the information a system can expose and the controls intended to protect it. Virtual-machine exercises and traffic inspection made failures of memory, authentication and unencrypted communication visible. The sessions also examined phishing, ransomware and software vulnerabilities, connecting technical observations with decisions about encryption, least privilege and stronger authentication rather than presenting any single tool as sufficient protection.
What students explored
Where information appears
Memory and network examples showed why data can remain exposed even when a user-facing interaction appears to have ended or failed.
Trust and access
Domain inspection, authentication methods and permissions connected common deception and access risks with the controls available to reduce them.
Defensive investigation
Vulnerability frameworks, monitoring and data-analysis exercises supplied ways to describe findings and examine the consequences of weak configurations.
Explore the sessions
1. Memory Forensics and Cryptographic Foundations
The session introduced cybersecurity through physical security, secure system design and the importance of planning security controls early. It examined software-update lifecycles, vulnerabilities, exploit value, mass surveillance risks and the security implications of physical access to devices. Students used a virtual machine to create a memory dump after a failed web login, extract readable strings, locate credentials in memory, and use regular expressions and CyberChef to transform data. The class also covered symmetric and asymmetric encryption, public and private keys, certificate authorities, and the role of trust in encrypted web connections. Further examples illustrated how memory modification, malicious USB devices and keystroke injection can compromise systems.
2. Phishing Detection and Phishing-Resistant Authentication
The session examined social engineering and phishing, including how attackers impersonate brands through misleading URLs, fake applications, adverts and artificial-intelligence-generated content. Students learned to identify the genuine domain within a URL, recognise typosquatting and subdomain deception, and understand how phishing pages can evade automated detection through obfuscation. The class compared authentication methods, covering strong unique passwords, password managers, multi-factor authentication, passkeys and hardware security keys, with emphasis on phishing-resistant FIDO2 (Fast Identity Online) authentication. It also covered wireless threats such as evil-twin access points, physical attacks on devices and firmware, data-at-rest encryption, and the use of BitLocker or FileVault to protect stored data. Practical activities included analysing password recovery from video, considering cloned-audio scams, and resetting a local Windows password in a virtual machine to demonstrate the importance of disk encryption.
3. FTP Traffic Analysis and Denial-of-Service
The session introduced FTP as a file-transfer protocol and compared command-line FTP with the FileZilla graphical client. Students used Wireshark to capture network traffic, inspect packets, and observe that unencrypted FTP credentials can appear in clear text, whereas Transport Layer Security (TLS) protects data in transit. The class examined denial-of-service concepts, including bandwidth saturation, packet flooding and socket exhaustion, through controlled demonstrations using ping, hping3 and Slowloris. It also covered the MITRE ATT&CK and D3FEND frameworks, Common Vulnerabilities and Exposures (CVE) and Common Weakness Enumeration (CWE) identifiers, and Common Vulnerability Scoring System (CVSS) scores for assessing vulnerabilities and their impact.
4. Network Reconnaissance and Credential Attack Defences
The session reviewed network reconnaissance: identifying an Internet Protocol (IP) address range, finding active hosts with ping sweeps, scanning exposed services with Nmap, and selecting appropriate tools to interact with those services. It demonstrated how anonymous FTP access, weak passwords and excessive permissions can expose files and enable unauthorised access, alongside the principle of least privilege and password-strength considerations. The class explored credential attacks and defences, including word lists, online and offline password cracking, stronger authentication, virtual private networks (VPNs), port knocking and canary accounts. It also covered local-network interception techniques, including name-resolution poisoning, Address Resolution Protocol (ARP) cache poisoning and man-in-the-middle attacks, plus the use of Wireshark and defensive monitoring. Finally, it introduced open-source intelligence, advanced search modifiers, subdomain discovery, cloud-hosted services and Shodan for identifying internet-exposed assets.
5. Ransomware, Memory Safety and Data Analysis
The session examined why some software vulnerabilities are difficult to eliminate at scale, including memory-corruption flaws, Rowhammer and the move towards memory-safe languages such as Rust. It discussed ransomware as a criminal business model, including encryption, data theft, double extortion, negotiation and money laundering. Students used CyberChef to practise data extraction with regular expressions and to explore Base64 encoding, Advanced Encryption Standard (AES) encryption, entropy and frequency analysis. The class also considered how phishing sites imitate legitimate services and how users can identify them by checking context, urgency and domain names.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h2 ECTS
Analysis & Design of Information Systems
Principles and methodologies for designing and analysing information systems.
Defining the information system before choosing its implementation
Analysis and design were presented as work that gives implementation its purpose and constraints. The sessions moved from stakeholders and business rules to events, interfaces and relational data, repeatedly distinguishing what a system must do from the technology used to do it. Examples connected that distinction with practical checks: required attributes, duplicate records, dependencies and constraints that a table structure alone cannot enforce.
What students explored
Understanding the requirement
Stakeholders, business rules and data dictionaries helped define the information and behaviour a system needs before selecting its implementation.
Describing interactions
Context diagrams and event responses made external actors, exchanged data and validation steps visible without beginning with application code.
Modelling the data
Functional dependencies, relational algebra and normalisation connected business meaning with tables, keys and checks needed to maintain consistency.
Explore the sessions
1. Information Systems Analysis, Design and Lifecycle
The session introduced analysis and design as the work required before implementation, stressing the need to clarify requirements and plan solutions before writing code. It examined software complexity through the large number of possible system states, using general-purpose tools such as spreadsheets to show why complete testing is often impossible. The class compared information technology challenges with mathematically modelled engineering problems, and discussed the limitations of generative artificial intelligence and machine learning as tools for reasoning and software development. It defined information systems as organised processes for transforming data into information and potentially knowledge, with data models enabling useful access to raw data. The session also used the house-building analogy to explain requirements analysis, design, implementation, compliance, integration, security, maintenance, liability and software quality.
2. Requirements, Stakeholders and Business Rules
The session introduced information-systems analysis as the phase for understanding business needs before making design or technology choices. It covered requirements, stakeholders, business rules, events, data attributes and data dictionaries, emphasising the need to distinguish what a system must achieve from how it will be implemented. The class compared models and methods, explaining that models represent reality while methods provide steps for operating on a model, and discussed why analysis relies on clear, simple models rather than a guaranteed method. Examples involving JavaScript Object Notation (JSON), Extensible Markup Language (XML) and user-interface prototyping illustrated the importance of precise terminology, data representation, validation, and documenting operational requirements.
3. Context Diagrams, Events and APIs
The session introduced context diagrams for analysing an information system as a black box, identifying external actors, events and time-driven triggers. It explained the distinction between data-carrying events and signals, and compared pulling data from external sources with receiving pushed data through gateways, queues and agreed protocols. The class examined application programming interfaces (APIs) as interfaces exposing reusable software functions, particularly for exchanging data between systems. It then modelled responses to events as action flowcharts, using checks for mandatory attributes and duplicates before creating a customer, and distinguished programming from coding and software engineering. The session also began data-dictionary analysis, discussing attributes, identifiers, universally unique identifiers (UUIDs), relational versus graph databases, scalability, transaction management and data-privacy implications of universal identifiers.
4. Relational Modelling, Algebra and Normalisation
The session examined the relational data model, including relations, attributes, tuples, primary keys and foreign keys. It explained how functional dependencies are identified through business context and used to derive tables, keys and associations, with one-to-one relationships considered before many-to-many relationships. Relational algebra was introduced as the basis of Structured Query Language (SQL), covering selection, projection and joins, alongside query planning and optimisation using database statistics. The class began normalisation, focusing on first normal form and atomic values, then second normal form and the problems caused by partial dependencies in composite keys. A human-resources allocation example was used to show data inconsistency, redundant storage and the need for programmed checks to enforce dynamic constraints such as overlapping employment periods.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
Data Science125h • 18 ECTS
Matemáticas, estadística, machine learning y deep learning
El programa conecta data engineering con la ciencia y las aplicaciones de IA, para que los egresados entiendan no solo los pipelines, sino también los modelos que sostienen.
25h3 ECTS
Mathematics for Data Science
Calculus, linear algebra and complex numbers needed for optimisation and data science.
Following the mathematics behind a model's calculations
Derivatives, vectors and matrices were explored through the calculations they make possible in data analysis. The sessions moved from the slope of a function to changes of basis, regression and principal component analysis. Along the way, the class considered redundant variables, numerical sensitivity and scaling: mathematical details that affect how a calculation behaves and how its result can be interpreted.
What students explored
Local change
Derivatives, partial derivatives and Taylor approximations provided ways to describe a function near a point and connect that description with optimisation.
Directions in data
Linear independence, orthogonality and changes of basis connected vector operations with redundancy, scaling and the interpretation of several variables together.
Matrix structure
Rank, eigenvalues and quadratic forms linked solvability and numerical sensitivity with regression, principal components and the shape of an optimisation problem.
Explore the sessions
1. Calculus and Multivariable Derivatives
The session introduced calculus as a foundation for optimisation, machine learning and statistical modelling. It defined functions, linear and affine functions, and common nonlinear functions including powers, exponentials and logarithms. Derivatives were explained as local slopes, with rules for sums, constants, powers, products, quotients and composite functions, alongside links to neural-network differentiation. The class then extended derivatives to several variables through partial derivatives, higher-order and mixed partial derivatives, and their use in describing slopes in different directions. Taylor series and Taylor polynomials were presented as local approximations, with applications to numerical computation, optimisation methods and interpolation.
2. Vector Algebra and Linear Independence
The session began with a recap of the product rule for derivatives, using a rectangle-area argument and the limit definition to show why the small product of two variations vanishes. It then introduced vectors as one-dimensional arrays, covering vector addition, scalar multiplication, linear combinations, and the importance of matching dimensions in mathematical and programming operations. Linear independence, dependence, collinearity and bases were explained as ways to identify redundant variables and reduce the dimensionality of data. The dot product, orthogonality, vector norms, normalisation and orthonormal bases were developed, with links to correlation, variance, regression and numerical scaling. The class also introduced changes of basis, including their role in principal component analysis (PCA), compression and viewing data from more informative directions.
3. Matrix Inverses, Determinants and Eigenvalues
The session examined matrix inverses, showing that a square matrix is invertible exactly when its columns are linearly independent, equivalently when it has full rank. It introduced matrix rank, numerical sensitivity near singular matrices, and the special simplicity of diagonal matrices, whose inverses and determinants can be computed element by element. Determinants were defined and calculated for two-by-two and three-by-three matrices using minors and cofactors, with discussion of why this recursive method is impractical for large matrices. The class then introduced trace, eigenvalues and eigenvectors for symmetric matrices, deriving the characteristic equation and using orthonormal eigenvectors to diagonalise a matrix through a change of basis.
4. Eigenvectors, Regression and Principal Components
The class examined how eigenvalues and eigenvectors in data analysis can reveal approximate linear relationships and support linear regression, including the effect of scaling variables and interpreting small eigenvalues as residual error. It covered adding an intercept through centring variables or including a column of ones, comparing resulting coefficients with a statistical regression model, and avoiding overfitting by selecting simpler models and validating them. The session also explained how changing to eigenvector coordinates can reveal trends in data that are not visible when plotting individual variables, linking this to principal component analysis. It then introduced positive-definite matrices and quadratic forms through the signs of eigenvalues, with applications to convexity and optimisation. Finally, it introduced complex eigenvalues of non-symmetric matrices, complex-number arithmetic, Cartesian and polar forms, and the use of complex exponentials in trigonometry and Fourier transforms.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h3 ECTS
Foundations of Statistical Analysis and Machine Learning
Descriptive statistics, probability theory and applications using R.
Foundations of Statistical Analysis and Machine Learning
Course code: CDSAI-002
From describing observations to reasoning under uncertainty
Probability and statistics were developed as foundations for interpreting data and preparing for machine learning. The sessions moved from distributions and descriptive measures to conditional probability, random variables and statistical inference. Examples, simulations and work in R connected mathematical definitions with what can be observed in a sample, including variation, uncertainty and the care needed when drawing conclusions from limited data.
What students explored
Describing a sample
Tables, plots and summary measures made distribution shape, spread and relationships visible, with attention to outliers and the limits of correlation.
Modelling uncertainty
Conditional probability, independence and random variables provided a language for distinguishing observed outcomes from the probability models used to interpret them.
Drawing statistical conclusions
Estimation, confidence intervals and hypothesis tests connected sample evidence with uncertainty, error risks and the assumptions behind a statistical conclusion.
Explore the sessions
1. Descriptive Statistics and Set Notation
The session introduced the course’s focus on probability, statistics and their role as foundations for machine learning, with R and RStudio as supporting tools. It reviewed mathematical notation for sums, products and sets, including unions, intersections and complements. Descriptive statistics were covered through frequency tables, bar charts, histograms, density plots and empirical cumulative distribution functions, with emphasis on interpreting distribution shape. The class defined quantiles, the median, mean, variance, standard deviation, interquartile range, skewness and kurtosis, and used box plots to examine spread and potential outliers. It then introduced multivariate descriptive analysis using contingency tables, scatter plots, covariance and correlation, stressing that correlation does not establish causation.
2. Conditional Probability, Bayes’ Theorem and Independence
The session completed an introduction to probability distributions for finite, countably infinite and continuous sample spaces. It covered conditional probability, Bayes’ theorem and base rates through diagnostic-test, screening, production-defect and transmission examples, as well as the Monty Hall problem. Independence, incompatibility and mutual independence were distinguished using coin-toss and permutation examples. Students then completed practice multiple-choice questions on descriptive statistics, including means, medians, empirical cumulative distribution functions and probability calculations. The session ended by introducing random variables as functions mapping outcomes to real-number values and motivating probability distributions for them.
3. Random Variables, Dependence and Convergence
The session reviewed random variables through uniform, binomial, Poisson and normal distributions, focusing on their parameters, probability mass or density functions, cumulative probabilities, quantiles, means and variances. Simulated samples were compared with theoretical distributions to show how observed data can differ from ideal probability models. The class then introduced multivariate random variables, joint and marginal distributions, conditional distributions, independence, covariance and correlation, including a bivariate normal simulation and covariance matrix. It concluded with an introduction to convergence, random samples that are independent and identically distributed, parameter estimation, and the motivation for the law of large numbers and central limit theorem.
4. Estimation, Confidence Intervals and Hypothesis Testing
The session reviewed descriptive statistics, probability theory, random variables, probability distributions, convergence, the law of large numbers and the central limit theorem. It introduced estimators and estimations, including bias, variance, mean squared error and the use of large samples to improve estimates. Confidence intervals were explained as ranges around an estimate associated with a chosen risk level, and a practical activity used one-sample t-tests in R to calculate 95% and 99% confidence intervals for mean height. Statistical hypothesis testing was then introduced through null and alternative hypotheses, rejection regions, p-values, significance levels, and Type I and Type II errors, with examples involving coin tosses and comparisons of group means. The session concluded by outlining common tests for one mean, two means and independence, in preparation for further study.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Big Data Processing with R
Importing, manipulating, transforming, visualising, exploring and modelling large datasets in R.
Making data transformations and visual comparisons explicit in R
The sessions developed an R workflow from basic structures and functions to grouped transformations and visual comparisons. Data frames, missing values and custom functions provided the groundwork before plotting and package creation. Flight records then supplied a concrete dataset for filtering, deriving variables and comparing groups. The thread was the sequence of operations that turns input records into an inspectable result, rather than a claim about distributed computation.
What students explored
Working with structures
Vectors, matrices, lists and data frames introduced the representations used to select, change and summarise values in R.
Building reusable analysis
Functions, arguments and a small package connected repeated tasks with documented code that can be loaded and used again.
Comparing groups
Plots and dplyr transformations linked filtering and calculated variables with summaries by category, retaining attention to missing values.
Explore the sessions
1. R Fundamentals and Data Structures
The session introduced R as free, cross-platform software and explained its role alongside Python in professional data science workflows. Students were shown how to install and use R with RStudio, including arranging the interface panels for code, console output, plots and files. The class covered calculations, vectorised operations, built-in functions, variable assignment, and the creation of vectors using concatenation, sequences and repetition. It then introduced matrices, data frames and lists, including their structures, data types and methods for accessing and modifying values. Practical exercises used indexing, missing values and conditional selection to extract and update data, including calculating summaries for selected groups in a data frame.
2. Functions, Control Flow and Base Graphics
The session reviewed how to replace missing values in data-frame variables with their non-missing mean values in R. It introduced function calls, argument ordering and naming, return values, for and while loops, conditional statements, and the use of switch. Students practised writing custom functions, including a general function to impute missing values, and considered scope, function masking, package-qualified calls, and passing additional arguments with .... The class then covered base R graphics, including plot types, axis limits, adding lines, points, titles, labels, legends, text, reference lines and shaded regions. It also introduced histograms, the importance of choosing an appropriate number of bins, and comparing a histogram with an estimated density curve.
3. Multivariate Visualisation with ggplot2
The session reviewed histograms, density estimates and box plots, including how to write functions that combine these displays and pass optional arguments to sub-functions. It covered visualising multivariate data with box plots, scatter plots, pairs plots, categorical summaries and legends, using the iris data set as an example. The class introduced ggplot2, including installation and loading of packages, and created histograms, density curves, box plots, bar charts, pie charts, scatter plots and fitted regression lines using vehicle data. It also explored grouping, colouring and faceting plots by categorical variables to assess relationships within subgroups. Finally, it demonstrated how to create an R package containing functions and data, write documentation, build it, install it locally and load it for use.
4. Data Manipulation with dplyr
The class introduced the dplyr package for manipulating large datasets in R, using New York City flight data as an example. Students practised filtering rows with conditions, compared dplyr filtering with base R, and considered the different treatment of missing values. They also used arrange to sort records, select to retain relevant variables, and mutate to create calculated variables such as delay changes and distances in kilometres. The session covered summarise and group_by for calculating and comparing delay statistics by airport, month and airline, with visualisations produced using ggplot. Finally, the pipe operator was introduced for chaining data-processing steps without storing unnecessary intermediate datasets.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Artificial Neural Networks
Neural network layers, weights, biases, hyperparameters, optimisation and TensorFlow implementation.
Learning to read a neural network's training behaviour
The sessions connected the neural-network training cycle with the practical question of whether a model will generalise. Data preparation, loss functions and parameter updates were considered alongside validation curves, leakage and model complexity. Work in PyTorch provided a setting for assembling training loops and trying regularisation, while the discussion retained the limits of neural networks in data requirements, computation and interpretability.
What students explored
Preparing the learning problem
Encodings, scaling and dataset splits were considered alongside data quality, balanced samples and the prevention of leakage.
Following the updates
Batches, losses, backpropagation and optimisers explained how training changes model parameters and why learning-rate choices matter.
Checking generalisation
Validation curves, early stopping and regularisation helped distinguish improved training fit from useful performance on unseen data.
Explore the sessions
1. Artificial Intelligence, Machine Learning and Neural Network Applications
The session introduced artificial intelligence as systems that perform tasks normally associated with human intelligence, distinguishing it from general artificial intelligence. It positioned machine learning as learning from data and deep learning as machine learning based on neural networks, while comparing neural networks with classical methods such as regression, random forests, boosting, clustering and support vector machines. Applications in computer vision, audio processing and natural language processing were explored, including image classification, object detection, segmentation, speech recognition, sentiment analysis and question answering. The machine-learning workflow was reviewed: defining objectives and success metrics, collecting and preparing data, selecting and evaluating models, deployment, monitoring and retraining in response to data drift. The class also covered labelled versus unlabelled data, the importance of balanced, shuffled and deduplicated datasets, and cautious use of sampling and data augmentation.
2. PyTorch Data Preparation and Neural Network Training
The session reviewed the relationship between artificial intelligence, machine learning, deep learning and neural networks, including the distinction between shallow and deep networks. It introduced PyTorch tensor handling, device selection, graphics processing unit (GPU) availability and moving data between the central processing unit (CPU) and GPU. Data preparation for neural networks was covered through numerical encoding, ordinal and one-hot encoding, and feature scaling using min-max scaling and standardisation. The training cycle was explained: feeding data in batches, forward propagation, loss calculation, backpropagation and parameter updates across epochs. The class examined mean squared error and binary cross-entropy losses, gradient descent, learning rates, vanishing gradients, and batch, stochastic and mini-batch strategies, before comparing momentum, Adagrad, RMSProp and Adam optimisers.
3. Model Evaluation, Optimisation and Generalisation
The session reviewed how neural-network models should generalise to unseen data and how datasets should be divided into training, validation and test sets. It covered epochs, mini-batches, loss functions, backpropagation, gradient descent, learning rates and optimisers, including momentum and Adam. The class examined underfitting, overfitting, the bias–variance trade-off, early stopping, model complexity, regularisation, and the importance of data quality and relevant features. It also discussed avoiding data leakage, maintaining comparable distributions across data splits through stratified sampling, and balancing groups where fairness requires it. Students then practised structuring a PyTorch workflow with datasets, data loaders, models, training loops and validation-loss logging in TensorBoard.
4. Regularisation, Activation Functions and Training Diagnostics
The session examined how training and validation curves can indicate overfitting, underfitting, unstable optimisation and the need for early stopping. It covered causes and remedies for poor generalisation, including improving data quality, increasing data or model capacity where appropriate, removing irrelevant features, and adjusting learning rate and batch size. Regularisation methods were explained, including L1 and L2 penalties, dropout, data augmentation and batch normalisation, alongside vanishing gradients and internal covariate shift. The class also discussed why deep networks learn hierarchical features, their advantages for complex unstructured data, and their limitations in computation, data requirements and interpretability. In practical work, students added batch normalisation, dropout and L2 weight decay to a PyTorch classifier, then used Optuna to tune hyperparameters and inspect the resulting trials.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
25h4 ECTS
Deep Learning
Deep learning models in Python, with practical applications in computer vision and natural language processing.
Exploring how models represent images, language and sound
Images, text and audio provided different settings for examining deep-learning models. The class connected architectures with the tasks they serve, moving from convolutional networks to transformers and speech models. Practical activities used pretrained models, while evaluation, data preparation and reproducible comparisons remained part of the discussion. Scores, labels and generated outputs prompted attention to what a model returns and how that response is interpreted.
What students explored
Matching architecture to a task
Image classification, detection and segmentation compared with language and audio tasks, examining the representations and network structures used to process them.
Adapting and evaluating models
Pretraining, fine-tuning, data quality and evaluation measures considered together, including the limitations of benchmarks and the interpretation of model predictions in practice.
Working with pretrained systems
Language and audio activities connected model outputs with practical interpretation, alongside discussion of generation settings, controlled experiments and reproducible reporting of results.
Explore the sessions
1. Connecting visual tasks with convolutional networks
Computer vision tasks ranged from classification and detection to segmentation, pose and depth estimation. The class examined why flattening an image into a general multilayer network can lose useful spatial structure and require many parameters. Convolutional networks introduced filters, receptive fields, padding, stride and pooling as alternatives. A PyTorch classification lab using the CIFAR-10 image dataset was introduced, with normalisation and batching discussed before later fine-tuning work. Historical architectures provided context for the development of these approaches.
2. Moving from visual regions to sequence models
Detection and segmentation introduced bounding boxes, overlapping-region measures and architectures that identify or label image regions. Practical guidance covered pretrained weights, evaluation mode, input transformations and confidence thresholds, with training data informing whether adaptation was needed. Transformers then introduced encoder and decoder arrangements, self-attention and parallel processing. Embeddings, tokenisation and vector similarity connected these models with the representation of sequences, extending the discussion from spatial information in images to the structure used for language tasks.
3. Comparing training objectives and evaluation choices
Different transformer architectures were examined through masked, span-reconstruction and next-token training objectives. General pretraining, domain adaptation and task-specific fine-tuning were connected with the need for curated data. Evaluation covered classification, text-comparison measures, error rates, benchmarks and human judgement, including their limitations. Practical activities used language models for prediction, sentiment, similarity, search and extractive questions. Retrieval-augmented generation connected embeddings with retrieved information. An introduction to Whisper then began the transition to speech recognition, transcription and translation.
4. Interpreting audio outputs and controlling text generation
Project guidance emphasised reproducible experiments, exploratory analysis, controlled comparisons and careful use of generated code. Students practised pretrained audio classification and speech transcription, interpreting scores, labels and language outputs. Waveforms, sampling and spectrograms provided the signal-processing context. Large language models introduced a distinction between base and instruction-tuned systems. Generation strategies and settings were compared through their effects on coherence and diversity, including deterministic selection, sampling and repetition controls rather than a single preferred setting for every task.
An account of teaching delivered in this course. Content and sequencing may vary between cohorts.
Apoyo & experiencia profesional35h de apoyo • 30 ECTS de experiencia
Consolidación y aplicación laboral
Las sesiones de apoyo ayudan a consolidar conceptos difíciles, mientras que la experiencia profesional valida la capacidad de aplicar el programa en un entorno laboral pertinente.
35h
Support Sessions
Reviewing course topics, answering student questions, re-explaining harder notions and preparing for examinations.
4 to 6 months30 ECTS
Integrated Professional Experience
Internship, employment or contracting experience validated through DSTI’s standard evaluation procedures.
05 — Certificaciones profesionales
Certificaciones que fortalecen la credibilidad en ingeniería.
Los estudiantes de MSc Data deben validar la certificación Neo4j. Una segunda certificación aprobada es altamente recomendable y otorga la distinción “with Honours” a los egresados.
Regla MSc Data
Neo4j es obligatoria. La ruta Data Engineering destaca cloud y sistemas CRM.
Para Data Engineering for AI, DSTI prepara certificaciones del programa a través de CRM Data Management y Amazon AWS cloud computing. Certificaciones adicionales pueden aceptarse únicamente cuando el cuerpo docente y la Dirección de Estudios validan su nivel, alcance y relevancia para la ruta del estudiante.
ObligatoriaCertificación Neo4j para todos los estudiantes de MSc Data.
Distinción with HonoursUna segunda certificación aprobada otorga la distinción “with Honours” al egresado.
Alternativas validadasLas certificaciones alternativas se aceptan únicamente después de la validación del cuerpo docente y la Dirección de Estudios.
Esta lista no es una opción libre. Cada certificación alternativa debe ser relevante para la ruta de estudios y los objetivos profesionales del estudiante, y queda sujeta a validación por el cuerpo docente y la Dirección de Estudios.
Un solo programa DSTI, varias formas de integrarte a la clase.
DSTI fue construida alrededor de una enseñanza conectada. Los estudiantes pueden estudiar en campus, mediante acceso Live Streamed o por la ruta online cuando este modo se adapta a su situación.
La data engineering se vuelve real cuando los sistemas se operan.
El programa incluye experiencia profesional integrada. La ruta depende de dónde se encuentre el estudiante y de lo que tenga sentido profesionalmente.
Ruta principal
Realiza prácticas pertinentes donde tu proyecto de ingeniería tenga sentido.
DSTI puede apoyar experiencia profesional en Francia o en el extranjero, sujeta a validación académica y a las reglas del programa. El trabajo debe ser pertinente para los objetivos de aprendizaje.
Prácticas locales
Tu país o mercado profesional
Para muchos estudiantes Live Streamed o internacionales, la mejor ruta son prácticas pertinentes en su mercado laboral local.
Alternativa estructurada
Opción CRCC Asia
Cuando sea pertinente, DSTI puede orientar a los estudiantes hacia una opción estructurada de prácticas internacionales mediante CRCC Asia.
Los estudiantes reciben orientación sobre CV, perfiles públicos, postulaciones y posicionamiento profesional.
Primeros pasos en data engineering
Construir y operar pipelines de datos
Los primeros roles típicos incluyen Junior Data Engineer, ETL / Data Pipeline Developer, Analytics Engineer o Cloud Data Support Engineer, según la base técnica del estudiante y su exposición a proyectos.
Ruta de progresión
Avanzar hacia responsabilidades de plataforma
Con experiencia, los egresados pueden avanzar hacia roles de Data Engineer, Cloud Data Platform Engineer o DataOps / MLOps Engineer. Las responsabilidades de arquitectura normalmente llegan después, con experiencia real entregando sistemas.
08 — Admisiones
Admisión selectiva para una ruta MSc técnica.
El MSc in Data Engineering for AI es una ruta técnica. Matemáticas, inglés y preparación IT importan, y el proceso de admisión debe confirmar que el candidato puede avanzar seriamente.
Elegibilidad
Bachelor degree o equivalente
Los candidatos deben contar con un Bachelor degree reconocido, o equivalente, en Computer Engineering, Information Systems, Computer Science o una disciplina de computación cercana.
Examen de entrada
Se usa cuando aporta valor
A los candidatos de perfiles menos técnicos se les puede pedir presentar el examen de entrada en línea de DSTI en matemáticas e IT.
Inglés
B2 mínimo
Los cursos se imparten en inglés. Se puede solicitar IELTS 6.0, Duolingo 110 o evidencia equivalente.
Requisitos IT
Laptop Windows PC
Los estudiantes deben tener una laptop Windows PC con al menos 16GB de RAM, capaz de ejecutar la versión más reciente de Windows.
Entrada directa a Año 2 +
Los candidatos que hayan completado, o estén terminando, ya sea un primer año de un programa de nivel master en la misma área o un Bachelor de cuatro años en la misma área pueden solicitar entrada directa a Año 2. La Dirección de Estudios decide la admisión después de una revisión académica específica.
Exámenes comunes requeridos: Applied Mathematics; Foundations of Statistical Analysis — Part 1; Data Wrangling with SQL. Examen(es) adicional(es) del programa: Analysis & Design of Information Systems; Cloud Computing — Amazon AWS — DSTI Internal Exam; Software Engineering with C.
Analysis & Design of Information Systems
Cloud Computing — Amazon AWS — DSTI Internal Exam
Software Engineering with C
Los exámenes se presentan en línea en DSTI Learn, con supervisión por computer vision y Safe Exam Browser, dentro de los 30 días posteriores a la postulación.
Se requiere una cuota suplementaria de examen de €50, que se acredita a la colegiatura en caso de admisión. La Dirección de Estudios revisa a los candidatos que alcanzan la calificación mínima aprobatoria de DSTI de 60%.
Estudiantes UE & Live Streamed: 31 de julio de 2026
Inducción: 2 de octubre de 2026
Inicio de clases: 5 de octubre de 2026
Primavera 2027
Inicio en marzo
Estudiantes internacionales & Live Streamed: 22 de enero de 2027
Estudiantes UE: 12 de marzo de 2027
Inducción: 25 de marzo de 2027
Inicio de clases: 26 de marzo de 2027
¿Data Engineering for AI es la ruta adecuada para ti?
Si estás dudando entre Data Analytics with AI, Data Engineering for AI y Data Science & AI, la pregunta clave es tu centro de gravedad: decisión e implementación, plataformas y pipelines, o modelado y sistemas de IA.