Programación Docente

 
*El programa docente del máster se divide en 19 módulos más un módulo introductorio como complemento de formación.

Curso de autoformación para aquellos alumnos sin conocimientos de programación o que quieran mejorar sus conocimientos. Estará disponible para los alumnos que realicen la preinscripción.

  1. Programación Orientada a Objetos en Java
    • Introducción a la POO
    • Clases y objetos
    • Métodos y mensajes
    • Organización de clases
  2. Herencia en Java
    • Herencia
    • Polimorfismo
    • Vinculación Dinámica
    • Clases abstractas
    • Interfaces
  3. Tratamiento de Excepciones
    • Software tolerante a fallos. El concepto de excepción
    • Captura y tratamiento de excepciones
    • Propagación de excepciones
    • Excepciones predefinidas
    • Definición de nuevas excepciones
  4. Clases Básicas Predefinidas. I/O
    • Organización en paquetes
    • Clases básicas: java.lang
    • Clases básicas del paquete java.util
    • Entrada/Salida. Paquete java.io
  5. Colecciones e Iteradores
    • Clases genéricas. Métodos genéricos
    • Las interfaces básicas y sus implementaciones
    • Conjuntos, listas y correspondencias
    • Lambda expresiones. Interfaces funcionales
    • Métodos referencia: Métodos y constructores como lambdas
    • El paquete java.util.function
    • Clases ordenables
    • Ordenación de colecciones
    • Conjuntos y correspondencias ordenadas

Este es un módulo introductorio mediante el que se presentan dos objetivos fundamentales.

  1. En primer lugar, se pretende iniciar al alumno en el contexto del análisis del Big Data proporcionando una visión global introductoria sobre las necesidades y desafíos que presenta este nuevo ecosistema tecnológico en la sociedad.
  2. En segundo lugar, se ofrece una primera toma de contacto técnica sobre el acceso a las grandes fuentes de datos, tomando como hilo conductor el Open Data y sus características principales. Se realiza un recorrido práctico sobre los principales estándares de datos, sus formatos, métodos de acceso, repositorios y APIs.

Desde este primer módulo, se inicia al alumno en la realización de primeros análisis de datos mediante visualizaciones y se fomenta el diseño de aplicaciones de análisis de datos para la extracción de conocimiento y su interpretación.

El objetivo de este módulo es introducir las bases de datos relacionales:

  1. Diseño de una base de datos usando el modelo Entidad Relación, su traducción al modelo relacional y el proceso de creación de la misma usando el Lenguaje de Definición de Datos de SQL.
  2. Consulta de bases de datos relacionales mediante el lenguaje SQL

Tecnologías: MYSQL

El objetivo de este módulo es introducir las bases de datos NoSQL y adquirir competencias en el uso de Apache Cassandra y MongoDB.

  1. En el caso de Cassandra, se pretende que el alumno comprenda como el diseño de la base de datos es la pieza central para obtener un alto rendimiento en un modelo de datos orientado a columnas.
  2. En el caso de MongoDB el alumno deberá aprovechar la flexibilidad de este sistema gestor de bases de datos para ofrecer un sistema de almacenamiento eficiente, incluyendo el análisis de las posibilidades de replicación y distribución de los datos.

Tecnologías: Apache Cassandra, MongoDB, Mongo Compass, Anaconda (Python)

Los objetivos de este modulo son tres:

  1. Conocer los pasos y técnicas necesarias para preparar el análisis de fuentes de datos de diversa naturaleza,
  2. Aprender a utilizar tecnologías para el tratamiento y transformación de los datos, y
  3. Ser capaz de discriminar cuándo es necesario el uso de tecnologías de almacenes de datos o de Data Science y de aplicarlas.

Tecnologías: Pentaho Data Integration, Pentaho BI Server, Pentaho Mondrian Schema

El objetivo principal de este módulo es tener una primera experiencia en el manejo de datos integral y su análisis con fuentes de datos reales. Este es un módulo de transición, orientado a la consolidación de los conocimientos adquiridos en los módulos anteriores y la adquisición de habilidades de análisis que se profundizarán en los módulos siguientes. Todo ello con una motivación inminentemente práctica.


Tecnologías: Python, Open Data APIs, MongoBD, Anaconda, Jupyter Notebooks, Spyder y las librerías pymongo, matplotlib, pandas, numpy, folium

De una forma divulgativa y mediante ejemplos prácticos, este módulo proporciona una visión general de la motivación, potencialidad y capacidades de la modelización y la analítica de datos de última generación con el fin último de orientar al alumno en la aplicación de la analítica de datos en su futuro profesional.

Así, el alumno adquirirá nociones básicas sobre la analítica y el modelado de datos, entenderá dónde se puede aplicar, qué es necesario y cómo definir un escenario de aplicación. Desde el punto de vista técnico, el módulo repasa e introduce al alumno en las diferentes categorías de modelos de aprendizaje máquina, prestando especial énfasis en aquellos orientados a describir conjuntos de datos y en hallar patrones ocultos en ellos.

El módulo está fuertemente relacionado con el módulo “Aprendizaje Computacional Predictivo”, que engrana temáticamente con lo visto en este primer módulo para hacer mayor énfasis en las técnicas predictivas de aprendizaje máquina.

Tecnologías: Python, Sklearn. Modelos DBSCAN, KMeans, Hierarchical Clustering, Boxplot, Dimensionality Reduction, Statistics.

Este segundo módulo de machine learning profundiza técnicamente en diferentes técnicas de análisis predictivo de datos. Cada una de las secciones de este módulo está estructurada de manera independiente, cubriendo los fundamentos técnicos, la historia, ejemplos de aplicación y prácticas en laboratorio tuteladas por el ponente.

Al término de este módulo el alumno será capaz de identificar en qué casuísticas y escenarios de aplicación son aplicables cada una de las técnicas de análisis de datos abordadas en el módulo, así como las diferencias, ventajas e inconvenientes de cada una de ellas.


Tecnologías: Python, Sklearn. kNN, Modelos SVM, Decision Tree, Random Forest, Naïve Bayes, Neural Networks, validación cruzada, métricas de scoring, limpieza de datos.

El objetivo de este módulo es aprender a manejar las herramientas más vanguardistas para la implementación de proyectos de Deep Learning de la forma más rápida y eficiente sobre un computador de última generación aprovechando la aceleración en GPU y los recursos de supercomputación existentes en las arquitecturas de Nvidia, fabricante de más del 75% de las GPUs del mercado. Para ello, se pondrá a disposición del alumno de forma gratuita el curso “Fundamentals of Deep Learning for Computer Vision” perteneciente al Deep Learning Institute de Nvidia (DLI), donde podrá poner en práctica todas las técnicas descritas utilizando en la nube las GPUs más actuales.


Tecnologías: Caffe, TensorRT, DIGITS, GPUs de última generación de Nvidia, Jupyter notebooks, Amazon Web Services (AWS).

El objetivo de este módulo es dar a conocer el sistema de procesamiento de datos escalable Apache Spark. Se ofrecerá una visión global de las características de Spark y se trabajará con las dos APIs que ofrece en la actualidad, una basada en RDDs (Resilient Distributed Datasets) y otra basada en dataframes.


Tecnologías: Spark, Java, Python, Intellij Idea, PyCharm.

En este módulo se prentenden cubrir objetivos básicos de cómo visualizar gráficas en entornos Web, tanto en modo paquetizado como partiendo desde cero, utilizando el framework de visualización d3js.


Tecnologías: HTML / CSS, JavaScript ES6, d3js.

En este módulo se va a trabajar con tecnologías de procesamiento de datos escalables en dos ámbitos: machine learning y streaming.

  1. La primera semana se dedicará a SparkML, el componente de Spark que ofrece algoritmos de clasificación y clustering.
  2. En la segunda se estudiarán dos tecnologías: Spark structured streaming y Apache Flink.

El objetivo del módulo es adquirir y asimilar los fundamentos básicos para poder desarrollar aplicaciones escalables con las herramientas estudiadas.


Tecnologías: Spark, Flink, Java, Python, Intellij Idea, PyCharm.

En este módulo se ofrecerá una introducción a los conceptos básicos relacionados con la analitica de textos, se presentarán los problemas prácticos relevantes en el contexto de big data y las posibles estrategias de despliegue de sistemas de analitica de textos.


Tecnologías: Python, sklearn, Keras (opcional), solr (opcional), Dask.

El objetivo de este módulo es la integración del paradigma de Big Data con tecnologías y protocolos de Internet de las Cosas (IoT) con el fin reducir la brecha entre la obtención de datos y su generación en el mundo físico.

A partir de protocolos usados en el IoT como CoAP y MQTT, se podrán obtener datos del IoT para su posterior procesamiento y análisis con tecnologías de Big Data. Se habilitará la obtención de datos del entorno a través de diferentes sensores desplegados en el aula de clase.


Tecnologías: IoT, CoAP, Apache Kafka, MQTT, Google Cloud IoT Core, Mango, Node-RED.

El objetivo de este módulo es que los alumnos conozcan los conceptos fundamentales de la computación en la nube y las herramientas que ofrecen algunos de los principales proveedores comerciales. Los alumnos serán capaces de usar dichas herramientas para llevar a cabo proyectos relacionados con el Análisis del Big Data.


Tecnologías: Los alumnos usarán los recursos de cálculo y almacenamiento de proveedores comerciales, como Google y Amazon (entre ellos máquinas virtuales, bases de datos, herramientas de visualización de datos), a nivel de usuario y a nivel de programación usando lenguajes orientados a objetos, en concreto Java y Python.

Los contenidos del presente módulo se han desarrollado con un doble objetivo. Por un lado, sensibilizar al alumnado sobre los riesgos y amenazas de seguridad y privacidad que afectan a los entornos de Big Data. Y, por otro lado, proporcionar los conocimientos y habilidades necesarias sobre tecnologías, servicios y herramientas de seguridad para minimizar los riesgos y hacer frente a las amenazas.


Tecnologías: Linux/Unix, Netfilter/iptables, Kerberos, Hadoop.

El objetivo principal de este módulo es mostrar un caso de uso empresarial desarrollado dentro de la corporación industrial Tecnalia.


Tecnologías: Dependiente del caso de uso presentado (Python).

Clases de apoyo en el labolatorio cada lunes de 18:00 – 21:00.

Proyecto práctico en el que aplicar las técnicas y herramientas aprendidas en el máster

  1. Créditos ECTS: 12
  2. Supervisado académicamente

 

Las prácticas se realizan con una de estas opciones:

  1. en empresas
  2. en grupos de investigación
  3. mediante desarrollo práctico en el puesto laboral actual
  4. o con un Trabajo Fin de Máster ampliado.

Agenda


En el calendario del máster podrás encontrar todas las actividades programadas semanalmente.

Descargar calendario PDF