Descripción

Este Maestría te permitirá actualizar tus conocimientos sobre el Desarrollo de Software de un modo práctico, 100% online, sin renunciar al máximo rigor académico”

Con el avance de las nuevas tecnologías, el software se ha convertido en un elemento sumamente importante en la actualidad. En los últimos años se ha puesto de manifiesto la necesidad de ser capaces de desarrollar productos software con la funcionalidad y calidad adecuadas, respetando el tiempo y presupuesto establecido.

Este programa está dirigido a aquellas personas interesadas en alcanzar un nivel de conocimiento superior sobre el Desarrollo de Software. El principal objetivo es formar al alumno para que aplique en el mundo real los conocimientos adquiridos en este Maestría, en un entorno de trabajo que reproduzca las condiciones que se puede encontrar en su futuro, de manera rigurosa y realista.

Aprovecha la oportunidad y cursa esta formación en un formato 100% online, sin tener que renunciar a tus obligaciones, y haciendo fácil tu regreso a la universidad. Actualiza tus conocimientos y consigue tu título de Maestría para seguir creciendo personal y profesionalmente.

Este programa te permitirá potenciar tus capacidades y actualizar tus conocimientos en Desarrollo de Software”

 

Este Maestría en Desarrollo de Software contiene el programa académico más completo y actualizado del panorama universitario. Las características más destacadas del curso son:

  • Desarrollo de 100 escenarios simulados presentados por expertos en Desarrollo de Software.
  • Sus contenidos gráficos, esquemáticos y eminentemente prácticos con los que están concebidos, recogen una información científica y práctica sobre el Desarrollo de Software.
  • Novedades sobre los últimos avances en el Desarrollo de Software.
  • Contiene ejercicios prácticos donde realizar el proceso de autoevaluación para mejorar el aprendizaje.
  • Sistema interactivo de aprendizaje basado en el método del caso y su aplicación a la práctica real.
  • Todo esto se complementará con lecciones teóricas, preguntas al experto, foros de discusión de temas controvertidos y trabajos de reflexión individual.
  • Disponibilidad de los contenidos desde cualquier dispositivo fijo o portátil con conexión a internet.

Fórmate en Desarrollo de Software con este programa intensivo, desde la comodidad de tu casa”

Incluye en su cuadro docente profesionales pertenecientes al ámbito del mundo del Desarrollo de Software, que vierten en esta formación la experiencia de su trabajo, además de reconocidos especialistas pertenecientes a sociedades de referencia y universidades de prestigio.

Gracias a su contenido multimedia elaborado con la última tecnología educativa, permitirán al profesional un aprendizaje situado y contextual, es decir, un entorno simulado que proporcionará un aprendizaje inmersivo programado para entrenarse ante situaciones reales.

El diseño de este programa está basado en el Aprendizaje Basado en Problemas, mediante el cual el docente deberá tratar de resolver las distintas situaciones de práctica profesional que se le planteen a lo largo del curso. Para ello, el profesional contará con la ayuda de un novedoso sistema de vídeo interactivo realizado por reconocidos expertos en Desarrollo de Software con gran experiencia docente.

Aprovecha la última tecnología educativa para ponerte al día en Desarrollo de Software sin moverte de casa"

Conoce las últimas técnicas en Desarrollo de Software de la mano de expertos en la materia"

Objetivos

El objetivo de esta formación es ofrecer a los profesionales que trabajan en el Desarrollo Software, los conocimientos y habilidades necesarios para realizar su actividad utilizando los protocolos y técnicas más avanzados del momento. Mediante un planteamiento de trabajo totalmente adaptable al alumno, este Maestría te llevará progresivamente a adquirir las competencias que te impulsarán hacia un nivel profesional superior.

Profundizarás en el campo de la computación y la estructura de computadores, materias esenciales para cualquier desarrollador de softwares”

Objetivos generales

  • Formar científica y tecnológicamente, así como preparar para el ejercicio profesional de la ingeniería del software, todo ello con una formación transversal y versátil adaptada a las nuevas tecnologías e innovaciones en este campo.
  • Obtener amplios conocimientos en el campo de la ingeniería del software, pero también en el campo de la computación y la estructura de computadoras, todo ello incluyendo la base matemática, estadística y física imprescindible en una ingeniería. 

Objetivos especificos

  • Comprender la estructura básica de un ordenador, el software y de los lenguajes de programación de propósito general.
  • Aprender a diseñar e interpretar algoritmos, que son la base necesaria para poder desarrollar programas informáticos.
  • Entender los elementos esenciales de un programa informático, como son los distintos tipos de datos, operadores, expresiones, sentencias, E/S y sentencias de control.
  • Comprender las distintas estructuras de datos disponibles en los lenguajes de programación de propósito general tanto estáticas como dinámicas, así como adquirir los conocimientos esenciales para el manejo de ficheros.
  • Conocer las distintas técnicas de pruebas en los programas informáticos y la importancia de generar una buena documentación junto con un buen código fuente.
  • Aprender los conceptos básicos del lenguaje de programación C++, uno de los más usados a nivel mundial.
  • Aprender los fundamentos de la programación en el lenguaje C++, incluyendo clases, variables, expresiones condicionales y objetos.
  • Entender los tipos abstractos de datos, los tipos de estructuras de datos lineales, estructuras de datos jerárquicas simples y complejas, así como su implementación en C++.
  • Comprender el funcionamiento de estructuras de datos avanzadas distintas de las habituales.
  • Conocer la teoría y la práctica relacionada con el uso de montículos y colas de prioridad.
  • Aprender el funcionamiento de las tablas hash, como tipos abstractos de datos y funciones.
  • Entender la teoría de grafos, así como algoritmos y concepto avanzados sobre grafos.
  • Aprender las principales estrategias de diseño de algoritmos, así como los distintos métodos y medidas para de cálculo de los mismos.
  • Conocer los principales algoritmos de ordenación usados en el Desarrollo de Software.
  • Entender el funcionamiento de los distintos algoritmos con árboles, heaps y grafos.
  • Comprender el funcionamiento de los algoritmos greedy, su estrategia y ejemplos de su uso en los principales problemas conocidos. Conoceremos también el uso de algoritmos greedy sobre grafos.
  • Aprenderemos las principales estrategias de búsqueda de caminos mínimos, con el planteamiento de problemas esenciales del ámbito y algoritmos para su resolución.
  • Entender la técnica de backtracking y sus principales usos, así como otras técnicas alternativas.
  • Aprender las distintas aplicaciones y propósitos de los sistemas de bases de datos, así como su funcionamiento y arquitectura.
  • Comprender el modelo relacional, desde su estructura y operaciones hasta el álgebra relacional extendida.
  • Aprender en profundidad qué son las bases de datos SQL, su funcionamiento, la definición de datos y la creación de consultas desde las más básicas hasta las más avanzadas y complejas.
  • Aprender a diseñar bases de datos usando el modelo entidad-relación, a crear diagramas y las características del modelo E-R extendido.
  • Profundizar en el diseño de bases de datos relacionales, analizando las distintas formas normales y los algoritmos de descomposición.
  • Sentar las bases para comprender el funcionamiento de las bases de datos NoSQL, así como introducir la base de datos Mongo DB.
  • Introducir los distintos sistemas de bases de datos existentes actualmente en el mercado.
  • Aprender el uso de XML y de bases de datos para la web.
  • Comprender el funcionamiento de bases de datos avanzadas como son las bases de datos paralelas y las distribuidas.
  • Conocer la importancia de la indexación y la asociación en los sistemas de bases de datos.
  • Comprender el funcionamiento del procesamiento transaccional y los sistemas de recuperación.
  • Adquirir conocimientos relacionados con las bases de datos no relacionales y la minería de datos.
  • Profundizar en el diseño avanzado de algoritmos, analizando algoritmos recursivos y tipo divide y conquista, así como realizando análisis amortizado.
  • Comprender los conceptos de programación dinámica y los algoritmos para problemas NP.
  • Entender el funcionamiento de la optimización combinatoria, así como los distintos algoritmos de aleatorización y algoritmos paralelos.
  • Conocer y comprender el funcionamiento de los distintos métodos de búsqueda local y con candidatos.
  • Aprender los mecanismos de verificación de formal de programas y de programas iterativos, incluyendo la lógica de primer orden y el sistema formal de Hoare.
  • Aprender el funcionamiento de algunos de los principales métodos numéricos como el método de la bisección, el método de Newton Raphson y el método de la secante.
  • Adquirir sólidos conocimientos relacionados con la interacción persona-ordenador y la creación de interfaces usables.
  • Entender la importancia de la usabilidad de las aplicaciones y el porqué hay que tenerlas en cuenta a la hora de diseñar nuestro software.
  • Comprender los distintos tipos de diversidad humanas, las limitaciones que suponen y cómo adaptar las interfaces de acuerdo a las necesidades específicas de cada una de ellas.
  • Aprender el proceso de diseño de interfaces, desde el análisis de requisitos hasta la evaluación, pasando por las distintas etapas intermedias necesarias para llevar realizar una interfaz adecuada.
  • Conocer las distintas pautas de accesibilidad, los estándares que las estableces y las herramientas que nos permiten evaluarla.
  • Entender los distintos métodos de interacción con el ordenador, mediante periféricos y dispositivos.
  • Profundizar en los conocimientos de programación, especialmente en lo relaciona a la programación orientada a objetos, y los distintos tipos de relaciones entre clases existentes.
  • Conocer los distintos patrones de diseño para problemas orientados a objetos.
  • Aprender sobre la programación orientada a eventos y el desarrollo de interfaces de usuario con Qt.
  • Adquirir los conocimientos esenciales de la programación concurrente, los procesos y los hilos.
  • Aprender a gestionar el uso de los hilos y la sincronización, así como la resolución de los problemas comunes dentro de la programación concurrente.
  • Entender la importancia de la documentación y las pruebas en el desarrollo del software.
  • Conocer las características del lenguaje de marcado HTML y su uso en la creación web junto con las hojas de estilo CSS.
  • Aprender a utilizar el lenguaje de programación orientado al navegador JavaScript, y algunas de sus principales características.
  • Entender los conceptos de la programación orientada a componentes y de la arquitectura de componentes.
  • Aprender a usar el framework para front-end Bootstrap para el diseño de sitios web.
  • Entender la estructura del modelo vista controlador en el desarrollo de sitios web dinámicos.
  • Conocer la arquitectura orientada a servicios y las bases del protocolo HTTP.
  • Sentar las bases de la ingeniería del software y el modelado, aprendiendo los principales procesos y conceptos.
  • Entender el proceso del software y los distintos modelos para su desarrollo incluyendo tecnologías ágiles.
  • Comprender la ingeniería de requisitos, su desarrollo, elaboración, negociación y validación.
  • Aprender el modelado de los requisitos y de los distintos elementos como escenarios, información, clases de análisis, flujo, comportamiento y patrones.
  • Entender los conceptos y procesos del diseño de software, aprendiendo también sobre el diseño de la arquitectura y sobre el diseño a nivel de componentes y basado en patrones.
  • Conocer las principales normas relativas a la calidad del software y a la administración de proyectos.

Alcanza el nivel de conocimiento que deseas y domina el Desarrollo de Software con esta formación de alto nivel”

Temario

La estructura de los contenidos ha sido diseñada por un equipo de profesionales de Ingeniería Informática, conscientes de la relevancia de la actualidad de la formación para poder profundizar en esta área de conocimiento, con el fin de enriquecer humanísticamente al estudiante y elevarle el nivel de conocimiento en Desarrollo de Software mediante las últimas tecnologías educativas disponibles. 

Este Maestría en Desarrollo de Software contiene el programa de aprendizaje más completo y actualizado del mercado”

Módulo 1. Fundamentos de Programación

1.1. Introducción a la programación.

1.1.1. Estructura básica de un ordenador.
1.1.2. Software.
1.1.3. Lenguajes de programación.
1.1.4. Ciclo de vida de una aplicación informática.

1.2. Diseño de algoritmos.

1.2.1. La resolución de problemas.
1.2.2. Técnicas descriptivas.
1.2.3. Elementos y estructura de un algoritmo.

1.3. Elementos de un programa.

1.3.1. Origen y características del lenguaje C++.
1.3.2. El entorno de desarrollo.
1.3.3. Concepto de programa.
1.3.4. Tipos de datos fundamentales.
1.3.5. Operadores.
1.3.6. Expresiones.
1.3.7. Sentencias.
1.3.8. Entrada y salida de datos.

1.4. Sentencias de control.

1.4.1. Sentencias.
1.4.2. Bifurcaciones.
1.4.3. Bucles.

1.5. Abstracción y modularidad: funciones.

1.5.1. Diseño modular.
1.5.2. Concepto de función y utilidad.
1.5.3. Definición de una función.
1.5.4. Flujo de ejecución en la llamada de una función.
1.5.5. Prototipo de una función.
1.5.6. Devolución de resultados.
1.5.7. Llamada a una función: parámetros.
1.5.8. Paso de parámetros por referencia y por valor.
1.5.9. Ámbito identificador.

1.6. Estructuras de datos estáticas.

1.6.1. Arrays.
1.6.2. Matrices. Poliedros.
1.6.3. Búsqueda y ordenación
1.6.4. Cadenas. Funciones de E/S para cadenas.
1.6.5. Estructuras. Uniones.
1.6.6. Nuevos tipos de datos.

1.7. Estructuras de datos dinámicas: punteros.

1.7.1. Concepto. Definición de puntero
1.7.2. Operadores y operaciones con punteros.
1.7.3. Arrays de punteros.
1.7.4. Punteros y arrays.
1.7.5. Punteros a cadenas.
1.7.6. Punteros a estructuras.
1.7.7. Indirección múltiple.
1.7.8. Punteros a funciones.
1.7.9. Paso de funciones, estructuras y arrays como parámetros de funciones.

1.8. Ficheros.

1.8.1. Conceptos básicos.
1.8.2. Operaciones con ficheros.
1.8.3. Tipos de ficheros.
1.8.4. Organización de los ficheros.
1.8.5. Introducción a los ficheros C++.
1.8.6. Manejo de ficheros.

1.9. Recursividad.

1.9.1. Definición de recursividad.
1.9.2. Tipos de recursión.
1.9.3. Ventajas e inconvenientes.
1.9.4. Consideraciones.
1.9.5. Conversión recursivo-iterativa.
1.9.6. La pila de recursión.

10.10. Prueba y documentación

10.1 Pruebas de programas
10.2 Prueba de la caja blanca
10.3 Prueba de la caja negra
10.4 Herramientas para realizar las pruebas
10.5 Documentación de programas

Módulo 2. Estructura de datos

2.1. Introducción a la programación en C++.

2.1.1. Clases, constructores, métodos y atributos.
2.1.2. Variables.
2.1.3. Expresiones condicionales y bucles.
2.1.4. Objetos.

2.2. Tipos abstractos de datos (TAD).

2.2.1. Tipos de datos.
2.2.2. Estructuras básicas y TAD.
2.2.3. Vectores y arrays.

2.3. Estructuras de datos lineales.

2.3.1. TAD Lista. Definición.
2.3.2. Listas enlazadas y doblemente enlazadas.
2.3.3. Listas ordenadas.
2.3.4. Listas en C++.
2.3.5. TAD Pila.
2.3.6. TAD Cola.
2.3.7. Pila y Cola en C++.

2.4. Estructuras de datos jerárquicas.

2.4.1. TAD Árbol.
2.4.2. Recorridos.
2.4.3. Árboles n-arios.
2.4.4. Árboles binarios.
2.4.5. Árboles binarios de búsqueda.

2.5. Estructuras de datos jerárquicas: árboles complejos.

2.5.1. Árboles perfectamente equilibrados o de altura mínima.
2.5.2. Árboles multicamino.
2.5.3. Referencias bibliográficas.

2.6. Montículos y cola de prioridad.

2.6.1. TAD Montículos.
2.6.2. TAD Cola de prioridad.

2.7. Tablas hash.

2.7.1. TAD Tabla hash.
2.7.2. Funciones hash.
2.7.3. Función hash en tablas hash.
2.7.4. Redispersión.
2.7.5. Tablas hash abiertas.

2.8. Grafos.

2.8.1. TAD Grafo.
2.8.2. Tipos de grafo.
2.8.3. Representación gráfica y operaciones básicas.
2.8.4. Diseño de grafos.

2.9. Algoritmos y conceptos avanzados sobre grafos.

2.9.1. Problemas sobre grafos.
2.9.2. Algoritmos sobre caminos.
2.9.3. Algoritmos de búsqueda o recorridos.
2.9.4. Otros algoritmos.

2.10. Otras estructuras de datos.

2.10.1. Conjuntos.
2.10.2. Arrays paralelos.
2.10.3. Tablas de símbolos.
2.10.4. Tries.

Módulo 3. Algoritmia y Complejidad

3.1. Introducción a las estrategias de diseño de algoritmos.

3.1.1. Recursividad.
3.1.2. Divide y conquista.
3.1.3. Otras estrategias.

3.2. Eficiencia y análisis de los algoritmos.

3.2.1. Medidas de eficiencia.
3.2.2. Medir el tamaño de la entrada.
3.2.3. Medir el tiempo de ejecución.
3.2.4. Caso peor, mejor y medio.
3.2.5. Notación asintónica.
3.2.6. Criterios de Análisis matemático de algoritmos no recursivos.
3.2.7. Análisis matemático de algoritmos recursivos.
3.2.8. Análisis empírico de algoritmos.

3.3. Algoritmos de ordenación.

3.3.1. Concepto de ordenación.
3.3.2. Ordenación de la burbuja.
3.3.3. Ordenación por selección.
3.3.4. Ordenación por inserción.
3.3.5. Ordenación por mezcla (merge_sort).
3.3.6. Ordenación rápida (quick_sort).

3.4. Algoritmos con árboles.

3.4.1. Concepto de árbol.
3.4.2. Árboles binarios.
3.4.3. Recorridos de árbol.
3.4.4. Representar expresiones.
3.4.5. Árboles binarios ordenados.
3.4.6. Árboles binarios balanceados.

3.5. Algoritmos con heaps.

3.5.1. Los heaps.
3.5.2. El algoritmo heapsort.
3.5.3. Las colas de prioridad.

3.6. Algoritmos con grafos.

3.6.1. Representación.
3.6.2. Recorrido en anchura.
3.6.3. Recorrido en profundidad.
3.6.4. Ordenación topológica.

3.7. Algoritmos greedy.

3.7.1. La estrategia greedy.
3.7.2. Elementos de la estrategia greedy.
3.7.3. Cambio de monedas.
3.7.4. Problema del viajante.
3.7.5. Problema de la mochila.

3.8. Búsqueda de caminos mínimos.

3.8.1. El problema del camino mínimo.
3.8.2. Arcos negativos y ciclos.
3.8.3. Algoritmo de Dijkstra.

3.9. Algoritmos greedy sobre grafos.

3.9.1. El árbol de recubrimiento mínimo.
3.9.2. El algoritmo de Prim.
3.9.3. El algoritmo de Kruskal.
3.9.4. Análisis de complejidad.

3.10. Backtracking.

3.10.1. El backtracking.
3.10.2. Técnicas alternativas.

Módulo 4. Bases de Datos

4.1. Aplicaciones y propósitos de los sistemas de base de datos.

4.1.1. Aplicaciones de los diferentes sistemas de base de datos.
4.1.2. Propósito en los diferentes sistemas de base de datos.
4.1.3. Visión de los datos.

4.2. Base de datos y arquitectura.

4.2.1. Base de datos relacionales.
4.2.2. El diseño de base de datos.
4.2.3. Bases de datos basadas en objetos y semiestructuradas.
4.2.4. Almacenamiento de datos y consultas.
4.2.5. Gestión de transacciones.
4.2.6. Minería y análisis de datos.
4.2.7. Arquitectura de las bases de datos.

4.3. El modelo relacional: estructura, operaciones y álgebra relacional extendida.

4.3.1. La estructura de las BD relacionales.
4.3.2. Operaciones fundamentales en el álgebra relacional.
4.3.3. Otras operaciones del álgebra relacional.
4.3.4. Operaciones del álgebra relacional extendida.
4.3.5. Valores nulos.
4.3.6. Modificación de la base de datos.

4.4. SQL (I).

4.4.1. ¿Qué es SQL?
4.4.2. La definición de datos.
4.4.3. Estructura básica de las consultas SQL.
4.4.4. Operaciones sobre conjuntos.
4.4.5. Funciones de agregación.
4.4.6. Valores nulos.

4.5. SQL (II).

4.5.1. Subconsultas anidadas.
4.5.2. Consultas complejas.
4.5.3. Vistas.
4.5.4. Cursores.
4.5.5. Consultas complejas.
4.5.6. Disparadores.

4.6. Diseño de base de datos y el modelo E-R.

4.6.1. Visión general del proceso de diseño.
4.6.2. El modelo entidad-relación.
4.6.3. Restricciones.

4.7. Diagramas entidad-relación.

4.7.1. Diagramas entidad-relación.
4.7.2. Aspectos del diseño entidad-relación.
4.7.3. Conjuntos de entidades débiles.

4.8. El modelo entidad-relación extendido.

4.8.1. Características del modelo E-R extendido.
4.8.2. Diseño de una base de datos.
4.8.3. Reducción a esquemas relacionales.

4.9. Diseño de bases de datos relacionales.

4.9.1. Características de los buenos diseños relacionales.
4.9.2. Dominios atómicos y la primera forma normal (1FN).
4.9.3. Descomposición mediante dependencias funcionales.
4.9.4. Teoría de las dependencias funcionales.
4.9.5. Algoritmos de descomposición.
4.9.6. Descomposición mediante dependencias multivaloradas.
4.9.7. Más formas normales.
4.9.8. Proceso de diseño de las base de datos.

4.10. Bases de datos NoSQL.

4.10.1. ¿Qué son las bases de datos NoSQL?
4.10.2. Análisis de las diferentes opciones de NoSQL y sus características.
4.10.3. Mongo DB.

Módulo 5. Bases de Datos Avanzadas

5.1. Introducción a los diferentes sistemas de bases de datos.

5.1.1. Repaso histórico.
5.1.2. Bases de datos jerárquicas.
5.1.3. Bases de datos red.
5.1.4. Bases de datos relacionales.
5.1.5. Bases de datos no relacionales.

5.2. XML y bases de datos para la web .

5.2.1. Validación de documentos XML.
5.2.2. Transformaciones de documentos XML.
5.2.3. Almacenamiento de datos XML.
5.2.4. Bases de datos relacionales XML.
5.2.5. SQL/XML.
5.2.6. Bases de datos nativas XML.

5.3. Bases de datos paralelas.

5.3.1. Sistemas paralelos.
5.3.2. Arquitecturas paralelas de bases de datos.
5.3.4. Paralelismo en consultas.
5.3.5. Paralelismo entre consultas.
5.3.6. Diseño de sistemas paralelos.
5.3.7. Procesamiento paralelo en SQL.

5.4. Bases de datos distribuidas.

5.4.1. Sistemas distribuidos.
5.4.2. Almacenamiento distribuido.
5.4.3. Disponibilidad.
5.4.4. Procesamiento distribuido de consultas.
5.4.5. Proveedores de bases de datos distribuidas.

5.5. Indexación y asociación.

5.5.1. Índices ordenados.
5.5.2. Índices densos y dispersos.
5.5.3. Índices multinivel.
5.5.4. Actualización del índice.
5.5.5. Asociación estática.
5.5.6. Cómo usar índices en bases de datos.

5.6. Introducción al procesamiento transaccional.

5.6.1. Estados de una transacción.
5.6.2. Implementación de la atomicidad y durabilidad.
5.6.3. Secuencialidad.
5.6.4. Recuperabilidad.
5.6.5. Implementación del aislamiento.

5.7. Sistemas de recuperación.

5.7.1. Clasificación de fallos.
5.7.2. Estructuras de almacenamiento.
5.7.3. Recuperación y atomicidad.
5.7.4. Recuperación basada en registro histórico.
5.7.5. Transacciones concurrentes y recuperación.
5.7.6. Alta disponibilidad en bases de datos.

5.8. Ejecución y procesamiento de consultas.

5.8.1. Coste de una consulta.
5.8.2. Operación de selección.
5.8.3. Ordenación.
5.8.4. Introducción a la optimización de consultas.
5.8.5. Monitorización del rendimiento.

5.9. Bases de datos no relacionales.

5.9.1. Bases de datos orientadas a documentos.
5.9.2. Bases de datos orientadas a grafos.
5.9.3. Bases de datos clave-valor.

5.10. Data warehouse, OLAP y minería de datos.

5.10.1. Componentes de los almacenes de datos.
5.10.2. Arquitectura de un data warehouse.
5.10.3. OLAP.
5.10.4. Funcionalidades de la minería de datos.
5.10.5. Otros tipos de minería.

Módulo 6. Diseño Avanzado de Algoritmos

6.1. Análisis de algoritmos recursivos y tipo divide y conquista.

6.1.1. Planteamiento y resolución de ecuaciones de recurrencia homogéneas y no homogéneas.
6.1.2. Descripción general de la estrategia divide y conquista.

6.2. Análisis amortizado.

6.2.1. El análisis agregado.
6.2.2. El método de contabilidad.
6.2.3. El método del potencial.

6.3. Programación dinámica y algoritmos para problemas NP.

6.3.1. Características de la programación dinámica.
6.3.2. Vuelta atrás: backtracking.
6.3.3. Ramificación y poda.

6.4. Optimización combinatoria.

6.4.1. Representación de problemas.
6.4.2. Optimización en 1D.

6.5. Algoritmos de aleatorización.

6.5.1. Ejemplos de algoritmos de aleatorización.
6.5.2. El teorema Buffon.
6.5.3. Algoritmo de Monte Carlo.
6.5.4. Algoritmo Las Vegas.

6.6. Búsqueda local y con candidatos

6.6.1. Garcient ascent
6.6.2. Hill climbing
6.6.3. Simulated annealing
6.6.4. Tabu search
6.6.5. Búsqeuda con candidatos

6.7. Verificación formal de programas

6.7.1. Especificación de abstracciones funcionales
6.7.2. El lenguaje de la lógica de primer orden
6.7.3. El sistema formal de Hoare

6.8. Verificación de programas iterativos

6.8.1. Reglas del sistema formal de Hoare
6.8.2. Concepto de invariante de iteraciones

6.9. Métodos numéricos

6.9.1. El método de la bisección
6.9.2. El método de Newton Raphson
6.9.3. El método de la secante

6.10. Algoritmos paralelos

6.10.1. Operaciones binarias paralelas
6.10.2. Operaciones paralelas con grafos
6.10.3. Paralelismo en divide y vencerás
6.10.4. Paralelismo en programación dinámica

Módulo 7. Interacción Persona-Ordenador

7.1. Introducción a la interacción persona-ordenador

7.1.1. Qué es la interacción persona-ordenador
7.1.2. Relación de la interacción persona-ordenador con otras disciplinas
7.1.3. La interfaz de usuario
7.1.4. Usabilidad y accesibilidad
7.1.5. Experiencia de usuario y diseño centrado en el usuario

7.2. El ordenador y la interacción: interfaz de usuario y paradigmas de interacción

7.2.1. La interacción
7.2.2. Paradigmas y estilos de interacción
7.2.3. Evolución de las interfaces de usuario
7.2.4. Interfaces de usuario clásicas: WIMP/GUI, comandos, voz, realidad virtual
7.2.5. Interfaces de usuario innovadoras: móviles, portátiles, colaborativas, BCI

7.3. El factor humano: aspectos psicológicos y cognitivos

7.3.1. La importancia del factor humano en la interacción
7.3.2. El procesamiento humano de información
7.3.3. La entrada y salida de la información: visual, auditiva y táctil
7.3.4. Percepción y atención
7.3.5. Conocimiento y modelos mentales: representación, organización y adquisición

7.4. El factor humano: limitaciones sensoriales y físicas

7.4.1. Diversidad funcional, discapacidad y deficiencia
7.4.2. Diversidad visual
7.4.3. Diversidad auditiva
7.4.4. Diversidad cognitiva
7.4.5. Diversidad motórica
7.4.6. El caso de los inmigrantes digitales

7.5. El proceso de diseño (I): análisis de requisitos para el diseño de la interfaz de usuario

7.5.1. Diseño centrado en el usuario
7.5.2. Qué es el análisis de requisitos
7.5.3. La recogida de información
7.5.4. Análisis e interpretación de la información
7.5.5. Análisis de la usabilidad y la accesibilidad

7.6. El proceso de diseño (II): prototipado y análisis de tareas

7.6.1. Diseño conceptual
7.6.2. Prototipado
7.6.3. Análisis jerárquico de tareas

7.7. El proceso de diseño (III): la evaluación

7.7.1. Evaluación en el proceso de diseño: objetivos y métodos
7.7.2. Métodos de evaluación sin usuarios
7.7.3. Métodos de evaluación con usuarios
7.7.4. Estándares y normas de evaluación

7.8. Accesibilidad: definición y pautas

7.8.1. Accesibilidad y diseño universal
7.8.2. La iniciativa WAI y las pautas WCAG
7.8.3. Pautas WCAG 2.0 y 2.1

7.9. Accesibilidad: evaluación y diversidad funcional

7.9.1. Herramientas de evaluación de la accesibilidad en la web
7.9.2. Accesibilidad y diversidad funcional

7.10. El ordenador y la interacción: periféricos y dispositivos

7.10.1. Dispositivos y periféricos tradicionales
7.10.2. Dispositivos y periféricos alternativos
7.10.3. Móviles y tabletas
7.10.4. Diversidad funcional, interacción y periféricos

Módulo 8. Programación Avanzada

8.1. Introducción a la programación orientada a objetos

8.1.1. Introducción a la programación orientada a objetos
8.1.2. Diseño de clases
8.1.3. Introducción a UML para el modelado de los problemas

8.2. Relaciones entre clases

8.2.1. Abstracción y herencia
8.2.2. Conceptos avanzados de herencia
8.2.3. Polimorfismo
8.2.4. Composición y agregación

8.3. Introducción a los patrones de diseño para problemas orientados a objetos

8.3.1. Qué son los patrones de diseño
8.3.2. Patrón Factory
8.3.4. Patrón Singleton
8.3.5. Patrón Observer
8.3.6. Patrón Composite

8.4. Excepciones

8.4.1. ¿Qué son las excepciones?
8.4.2. Captura y gestión de excepciones
8.4.3. Lanzamiento de excepciones
8.4.4. Creación de excepciones

8.5. Interfaces de usuarios

8.5.1. Introducción a Qt
8.5.2. Posicionamiento
8.5.3. ¿Qué son los eventos?
8.5.4. Eventos: definición y captura
8.5.5. Desarrollo de interfaces de usuario

8.6. Introducción a la programación concurrente

8.6.1. Introducción a la programación concurrente
8.6.2. El concepto de proceso e hilo
8.6.3. Interacción entre procesos o hilos
8.6.4. Los hilos en C++
8.6.6. Ventajas e inconvenientes de la programación concurrente

8.7. Gestión de hilos y sincronización

8.7.1. Ciclo de vida de un hilo
8.7.2. La clase Thread
8.7.3. Planificación de hilos
8.7.4. Grupos hilos
8.7.5. Hilos de tipo demonio
8.7.6. Sincronización
8.7.7. Mecanismos de bloqueo
8.7.8. Mecanismos de comunicación
8.7.9. Monitores

8.8. Problemas comunes dentro de la programación concurrente

8.8.1. El problema de los productores consumidores
8.8.2. El problema de los lectores y escritores
8.8.3. El problema de la cena de los filósofos

8.9. Documentación y pruebas de software

8.9.1. ¿Por qué es importante documentar el software?
8.9.2. Documentación de diseño
8.9.3. Uso de herramientas para la documentación

8.10. Pruebas de software

8.10.1. Introducción a las pruebas del software
8.10.2. Tipos de pruebas
8.10.3. Prueba de unidad
8.10.4. Prueba de integración
8.10.5. Prueba de validación
8.10.6. Prueba del sistema

Módulo 9. Desarrollo de Aplicaciones en Red

9.1. Lenguajes de marcado HTML5

9.1.1. Conceptos básicos de HTML
9.1.2. Nuevos elementos HTML 5
9.1.3. Formularios: nuevos controles

9.2. Introducción a hojas de estilo CSS

9.2.1. Primeros pasos con CSS
9.2.2. Introducción a CSS3

9.3. Lenguaje script de navegador: JavaScript

9.3.1. Conceptos básicos de JavaScript
9.3.2. DOM
9.3.3. Eventos
9.3.4. JQuery
9.3.5. Ajax

9.4. Concepto de la programación orientada a componentes

9.4.1. Contexto
9.4.2. Componentes e interfaces
9.4.3. Estados de un componente

9.5. Arquitectura de componentes

9.5.1. Arquitecturas actuales
9.5.2. Integración y despliegue de componentes

9.6. Framework Front-End: Bootstrap

9.6.1. Diseño con rejilla
9.6.2. Formularios
9.6.3. Componentes

9.7. Modelo vista controlador

9.7.1. Métodos de desarrollo Web
9.7.2. Patrón de diseño: MVC

9.8. Tecnologías Grid de la información

9.8.1. Incremento de recursos en computación
9.8.2. Concepto de tecnología Grid

9.9. Arquitectura orientada a servicios

9.9.1. SOA y servicios Web
9.9.2. Topología de un servicio Web
9.9.3. Plataformas para los servicios Web

9.10. Protocolo HTTP

9.10.1. Mensajes
9.10.2. Sesiones persistentes
9.10.3. Sistema criptográfico
9.10.4. Funcionamiento del protocolo HTTPS

Módulo 10. Ingeniería del Software

10.1. Introducción a la ingeniería del software y al modelado

10.1.1. La naturaleza del software
10.1.2. La naturaleza única de las webapps
10.1.3. Ingeniería del software
10.1.4. El proceso del software
10.1.5. La práctica de la ingeniería del software
10.1.6. Mitos del software
10.1.7. Cómo comienza todo
10.1.8. Conceptos orientados a objetos
10.1.9. Introducción a UML

10.2. El proceso del software

10.2.1. Un modelo general de proceso
10.2.2. Modelos de proceso prescriptivos
10.2.3. Modelos de proceso especializado
10.2.4. El proceso unificado
10.2.5. Modelos del proceso personal y del equipo
10.2.6. ¿Qué es la agilidad?
10.2.7. ¿Qué es un proceso ágil?
10.2.8. Scrum
10.2.9. Conjunto de herramientas para el proceso ágil

10.3. Principios que guían la práctica de la ingeniería del software

10.3.1. Principios que guían el proceso
10.3.2. Principios que guían la práctica
10.3.3. Principios de comunicación
10.3.4. Principios de planificación
10.3.5. Principios de modelado
10.3.6. Principios de construcción
10.3.7. Principios de despliegue

10.4. Comprensión de los requisitos

10.4.1. Ingeniería de requisitos
10.4.2. Establecer las bases
10.4.3. Indagación de los requisitos
10.4.4. Desarrollo de casos de uso
10.4.5. Elaboración del modelo de los requisitos
10.4.6. Negociación de los requisitos
10.4.7. Validación de los requisitos

10.5. Modelado de los requisitos: escenarios, información y clases de análisis

10.5.1. Análisis de los requisitos
10.5.2. Modelado basado en escenarios
10.5.3. Modelos UML que proporcionan el caso de uso
10.5.4. Conceptos de modelado de datos
10.5.5. Modelado basado en clases
10.5.6. Diagramas de clases

10.6. Modelado de los requisitos: flujo, comportamiento y patrones

10.6.1. Requisitos que modelan las estrategias
10.6.2. Modelado orientado al flujo
10.6.3. Diagramas de estado
10.6.4. Creación de un modelo de comportamiento
10.6.5. Diagramas de secuencia
10.6.6. Diagramas de comunicación
10.6.7. Patrones para el modelado de requisitos

10.7. Conceptos de diseño

10.7.1. Diseño en el contexto de la ingeniería del software
10.7.2. El proceso de diseño
10.7.3. Conceptos de diseño
10.7.4. Conceptos de diseño orientado a objetos
10.7.5. El modelo del diseño

10.8. Diseño de la arquitectura

10.8.1. Arquitectura del software
10.8.2. Géneros arquitectónicos
10.8.3. Estilos arquitectónicos
10.8.4. Diseño arquitectónico
10.8.5. Evolución de los diseños alternativos para la arquitectura
10.8.6. Mapeo de la arquitectura con el uso del flujo de datos

10.9. Diseño en el nivel de componentes y basado en patrones

10.9.1. ¿Qué es un componente?
10.9.2. Diseño de componentes basados en clase
10.9.3. Realización del diseño en el nivel de componentes
10.9.4. Diseño de componentes tradicionales
10.9.5. Desarrollo basado en componentes
10.9.6. Patrones de diseño
10.9.7. Diseño de software basado en patrones
10.9.8. Patrones arquitectónicos
10.9.9. Patrones de diseño en el nivel de componentes
10.9.10. Patrones de diseño de la interfaz de usuario

10.10. Calidad del software y administración de proyectos

10.10.1. Calidad
10.10.1. Calidad del software
10.10.2. El dilema de la calidad del software
10.10.3. Lograr la calidad del software
10.10.4. Aseguramiento de la calidad del software
10.10.5. El espectro administrativo
10.10.6. El personal
10.10.7. El producto
10.10.8. El proceso
10.10.9. El proyecto
10.10.10. Principios y prácticas

Una experiencia de formación única, clave y decisiva para impulsar tu desarrollo profesional”

Método

Con TECH podrás experimentar una forma de aprender que está moviendo los cimientos de las Universidades tradicionales de todo el mundo”

En TECH Universidad Tecnológica empleamos el Método del caso

Nuestra Maestría en Desarrollo de Software te ofrece un método revolucionario de desarrollo de tus habilidades y conocimientos. Nuestro objetivo es afianzar tus competencias en un contexto cambiante, competitivo y de alta exigencia.

Nuestra Universidad es la primera en el mundo que combina los case studies de Harvard Business School con un sistema de aprendizaje 100 % online basado en la reiteración”

Harvard

Un método de aprendizaje innovador y diferente

La Maestría en Desarrollo de Software de TECH UNIVERSIDAD TECNOLÓGICA es un programa intensivo que te prepara para afrontar todos los retos en este área, tanto en el ámbito nacional como internacional. Su objetivo principal es favorecer tu crecimiento personal y profesional ayudándote a conseguir el éxito. Para ello nos basamos en los case studies de la Harvard Business School, con la que tenemos un acuerdo estratégico que nos permite emplear los materiales con los que se estudia en la más prestigiosa Universidad del mundo: HARVARD.

Somos la única Universidad online que ofrece los materiales de Harvard como material docente en sus cursos”

El método del caso ha sido el sistema de aprendizaje más utilizado por las mejores escuelas de negocios del mundo desde que éstas existen. Desarrollado en 1912 para que los estudiantes de Derecho no solo aprendiesen las leyes a base de contenidos teóricos, el método del caso consistió en presentarles situaciones complejas reales para que tomasen decisiones y emitiesen juicios de valor fundamentados sobre cómo resolverlas. En 1924 se estableció como método estándar de enseñanza en Harvard.

Ante una determinada situación, ¿qué harías tú? Esta es la pregunta a la que te enfrentamos en el método del caso, un método de aprendizaje orientado a la acción. A lo largo de 1 año, te enfrentarás a múltiples casos reales. Deberás integrar todos tus conocimientos, investigar, argumentar y defender tus ideas y decisiones.

Es el propio alumno el que va construyendo su competencia profesional a través de diferentes modelos pedagógicos como el de Roger Schank (Learning by doing, Stanford, Yale) o el de George Kembler (Design Thinking, d.school, Stanford), y se convierte en protagonista activo de su proceso de enseñanza-aprendizaje.

El alumno aprenderá, mediante actividades colaborativas y casos reales, la resolución de situaciones complejas en entornos empresariales reales”

Relearning Methodology

Nuestra Universidad es la primera en el mundo que combina los case studies de Harvard University con un sistema de aprendizaje 100 % online basado en la reiteración, que combina 16 elementos didácticos diferentes en cada lección.

Potenciamos los case studies de Harvard con el mejor método de enseñanza 100 % online: el Relearning.

Relearning

En 2019 obtuvimos los mejores resultados de aprendizaje de todas las universidades online en español en el mundo”

En TECH aprenderás con una metodología vanguardista concebida para capacitar a los directivos del futuro. Este método, a la vanguardia pedagógica mundial, se denomina Relearning. Nuestra Universidad es la única en habla hispana licenciada para emplear este exitoso método. En 2019 hemos conseguido mejorar los niveles de satisfacción global de nuestros alumnos (calidad docente, calidad de los materiales, estructura del curso, objetivos…) con respecto a los indicadores de la mejor universidad online en español.

La puntuación global que obtiene nuestro sistema de aprendizaje es de 8.01, con arreglo a los más altos estándares internacionales.

En nuestra Maestría en Desarrollo de Software, el aprendizaje no es un proceso lineal, sino que sucede en espiral (aprendemos, desaprendemos, olvidamos y reaprendemos). Por eso, combinamos cada uno de estos elementos de forma concéntrica. Con esta metodología hemos formado a más de 650.000 graduados universitarios con un éxito sin precedentes. En ámbitos tan distintos como la bioquímica, la genética, la cirugía, el derecho internacional, las habilidades directivas, las ciencias del deporte, la filosofia, el derecho, la ingeniería, el periodismo, la historia o los mercados e instrumentos financieros. Todo ello en un entorno de alta exigencia, con un alumnado universitario de un perfil socioeconómico alto y una media de edad de 43,5 años.

El relearning te permitirá aprender con menos esfuerzo y más rendimiento, implicándote más en tu formación, desarrollando el espíritu crítico, la defensa de argumentos y el contraste de opiniones: una ecuación directa al éxito”

La Maestría en Desarrollo de Software se presenta como una acción formativa que favorece la conexión, el aprendizaje, la participación y la construcción del conocimiento.

Emprenderás con nosotros un itinerario formativo con una orientación eminentemente práctica, activa y participativa.

En aras de favorecer al máximo el contacto mentor-alumno, contarás con un amplio abanico de posibilidades de comunicación, tanto en tiempo real como en diferido (mensajería interna, foros de discusión, servicio de atención telefónica, email de contacto con secretaría técnica, chat y videoconferencia).

Nuestro sistema online te permitirá organizar tu tiempo y tu ritmo de aprendizaje adaptándolo a tus horarios. Podrá acceder a los contenidos desde cualquier dispositivo con conexión a internet (ordenador, tablet, smartphone)”

A partir de la última evidencia científica en el ámbito de la neurociencia, no solo sabemos organizar la información, las ideas, las imágenes, los recuerdos, sino que sabemos que el lugar y el contexto donde hemos aprendido algo es fundamental para que seamos capaces de recordarlo y almacenarlo en el hipocampo, para retenerlo en nuestra memoria a largo plazo.

De esta manera, y en lo que se denomina Neurocognitive context-dependent e-learning, los diferentes elementos de nuestra Maestría en Desarrollo de Software están conectados con el contexto donde el participante desarrolla su práctica profesional.

... y todo ello con los mejores materiales de aprendizaje a la vanguardia tecnológica y pedagógica.

En la Maestría en Desarrollo de Software tendrás acceso a los mejores materiales educativos, preparados a conciencia para ti.

Materiales educativos de ingeniería

Material Material de estudio 30%

Todos los contenidos didácticos son creados por los especialistas que van a impartir el curso, específicamente para él, de manera que el desarrollo didáctico sea realmente específico y concreto.

Estos contenidos son aplicados después al formato audiovisual que creará nuestra manera de trabajo online, con las técnicas más novedosas que nos permiten ofrecerte una gran calidad, en cada una de las piezas que pondremos a tu servicio.

Clases Clases magistrales 10%

Existe evidencia científica sobre la utilidad de la observación de terceros expertos.

El denominado Learning from an expert afianza el conocimiento y el recuerdo, y genera seguridad en nuestras futuras decisiones difíciles.

Prácticas Prácticas de habilidades y competencias 8%

Realizarás actividades de desarrollo de competencias y habilidades específicas en cada área temática. Prácticas y dinámicas para adquirir y desarrollar las destrezas y habilidades que un especialista precisa desarrollar en el marco de la globalización que vivimos.

Lecturas Lecturas complementarias 3%

Artículos recientes, documentos de consenso, guías internacionales..., en nuestra biblioteca virtual tendrás acceso a todo lo que necesitas para completar tu formación.

Analisis Case Studies 20%

Completarás una selección de los mejores cases studies de la materia que se emplean en Harvard. Casos presentados, analizados y tutorizados por los mejores especialistas del panorama internacional.

Resúmenes interactivos Resúmenes interactivos 25%

Presentamos los contenidos de manera atractiva y dinámica en píldoras multimedia que incluyen audio, vídeos, imágenes, esquemas y mapas conceptuales con el fin de afianzar el conocimiento.

Este sistema exclusivo de formación para la presentación de contenidos multimedia fue premiado por Microsoft como “Caso de éxito en Europa”.

Testing Testing & Retesting 4%

Evaluamos y reevaluamos periódicamente tu conocimiento a lo largo de la Maestría en Desarrollo de Software. Lo hacemos sobre 3 de los 4 niveles de la Pirámide de Miller.

El alumnado podrá aprender con las ventajas del acceso a entornos simulados de aprendizaje y el planteamiento de aprendizaje por observación, esto es, Learning from an expert”

Reconocimiento

Este programa te permitirá obtener el título de Máster en Desarrollo de Software. A tu egreso recibirás un diploma universitario avalado por Tech Universidad Tecnológica de reconocido prestigio a nivel internacional.

Este título propio de Tech Universidad, garantiza la adquisición de competencias en el área de conocimiento, de modo que confiere un alto valor curricular al estudiante que supere las evaluaciones y acredite el programa tras cursarlo en su totalidad.

 asdf

 

Título: Máster en Desarrollo de Software

Modalidad: online (en línea)

Horas: 1500 horas

Duración: aprox. 1 año

*Apostilla de La Haya. En caso de que necesites que tu grado en papel recabe la Apostilla de La Haya, Tech realizará las gestiones oportunas para su obtención con un coste añadido más gastos de envío del diploma apostillado. Puede ponerse en contacto con su asesor.

Cursos relacionados

1 /