Última revisión realizada: 19/01/2021

Denominación de la asignatura

Métodos Avanzados de Programación Científica y Computación
Postgrado al que pertenece
Máster universitario en Ingeniería Matemática y Computación
Créditos ECTS
6
Curso y cuatrimestre en el que se imparte
Primer cuatrimestre
Carácter de la asignatura Obligatoria

Presentación

El desarrollo de software es una de las ramas más importantes de la ingeniería informática. Un buen desarrollador además de ser un buen programador (conocer en profundidad el lenguaje de programación que va a utilizar) debe ser capaz de identificar la técnica de programación más adecuada para resolver el problema al que se enfrenta.
 
La asignatura está dividida en dos grandes bloques, un primer bloque centrado en técnicas de programación (se llevará a cabo en Java) y un segundo bloque centrado en los aspectos formales de la programación (pruebas, documentación, medición….), unidos nos llevan a la obtención de un desarrollo de calidad.

En el primer bloque se van a abordar problemas complejos del mundo real y se va a mostrar al alumno como resolverlos, de manera práctica, a través de diferentes técnicas de diseño y programación. Esto va a proporcionar las herramientas necesarias para que el alumno sea capaz de resolver los problemas más comunes a los que se enfrenta un programador profesional.

En el segundo bloque lo que vamos a hacer es no olvidar que un buen desarrollo no termina cuando se ha realizado el código, sino que hay que documentar y probar el software de tal manera que sea escalable, adaptable y fácil de mantener.

Competencias

Básicas

  • CB6. Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en el desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación.
  • CB7. Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio.
  • CB9. Que los estudiantes sepan comunicar sus conclusiones y los conocimientos y razones últimas que las sustentan a públicos especializados y no especializados de un modo claro y sin ambigüedades.
  • CB10. Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.

Generales

  • CG2. Capacidad para dirigir, planificar y supervisar equipos multidisciplinares.
  • CG4. Buscar y utilizar los recursos bibliográficos, físicos y/o electrónicos necesarios para abordar un problema.
  • CG5. Presentar ideas, procedimientos o informes de investigación, así como asesorar a personas u organizaciones en su ámbito de especialización en Ingeniería Matemática y la Computación.
  • CG6. Comprender y utilizar de manera avanzada el lenguaje y las herramientas matemáticas para modelizar, simular y resolver problemas complejos del ámbito de la ingeniería y de la industria, reconociendo y valorando las situaciones y problemas susceptibles de ser tratados matemáticamente.
  • CG8. Elaborar adecuadamente y con argumentos motivados, proyectos de trabajo, redactar planes así como formular hipótesis y conjeturas razonables en el ámbito de la Ingeniería Matemática y la Computación.

Transversales

  • CT1. Organizar y planificar las tareas aprovechando los recursos, el tiempo y las competencias de manera óptima.
  • CT2. Identificar las nuevas tecnologías como herramientas didácticas para el intercambio comunicacional en el desarrollo de procesos de indagación y de aprendizaje.
  • CT4. Adquirir la capacidad de trabajo independiente, impulsando la organización y favoreciendo el aprendizaje autónomo.

Específicas

  • CE7. Capacidad para diseñar, desarrollar e implementar programas informáticos, utilizando principalmente software libre, para abordar problemas complejos relacionados con las matemáticas y la ingeniería.
  • CE8. Capacidad de identificar y corregir los errores existentes en programas informáticos relacionados con la matemática avanzada elaborados por terceras personas.
  • CE9. Capacidad para saber elegir y utilizar aplicaciones informáticas, de cálculo numérico y simbólico u otras, para experimentar en matemáticas y resolver problemas complejos.

Contenidos

Tema 1. Introducción a la programación orientada a objetos
Introducción a la programación orientada a objetos
Diseño de clases
Introducción a UML para el modelado de los problemas
Introducción a la eficiencia y complejidad de un algoritmo

Tema 2. Relaciones entre clases
Abstracción y herencia
Conceptos avanzados de herencia
Polimorfismo
Composición y agregación
This y super
Complejidad de un algoritmo

Tema 3. Introducción a los patrones de diseño para problemas orientados a objetos
Qué son los patrones de diseño
Patrón Factory
Patrón Singleton
Patrón Observer
Patrón Composite
Introducción a la POO distribuida

Tema 4. Excepciones
Excepciones
Captura y gestión de excepciones
Lanzamiento de excepciones
La clase Throwable
Creación de excepciones

Tema 5. Interfaces de usuarios
¿Cómo estudiar este tema?
Qué son los eventos
Desarrollo de interfaces de usuario
SWING

Tema 6. Interfaces de usuarios (II)
AWT
Gestores de posicionamiento
Gestión de eventos
Adaptadores

Tema 7. Introducción a la programación concurrente
Introducción a la programación concurrente
El concepto de proceso e hilo
Interacción entre procesos o hilos
Los hilos en Java
Ventajas e inconvenientes de la programación concurrente
Computación de alto rendimiento

Tema 8. Gestión de hilos
Ciclo de vida de un hilo
La clase Thread
Planificación de hilos
Grupos hilos
Hilos de tipo demonio

Tema 9. Sincronización
Sincronización
Mecanismos de bloqueo
Mecanismos de comunicación
Monitores
Bibliotecas de Java para concurrencia

Tema 10. Problemas comunes dentro de la programación concurrente
El problema de los productores consumidores
El problema de los lectores y escritores
El problema de la cena de los filósofos

Tema 11. Documentación de software
¿Por qué es importante documentar el software?
Documentación de diseño
Uso de herramientas para la documentación: JavaDoc

Tema 12. Pruebas de software
Introducción a las pruebas del software
Tipos de pruebas
Prueba de unidad
Prueba de integración
Prueba de validación
Prueba del sistema

Tema 13. Cómputo paralelo
Introducción al cómputo paralelo
Uso de la memoria en una arquitectura paralela
Paralelismo en procesos internos
Paralelismo en procesos usando librerías externas

Metodología

Las actividades formativas de la asignatura se han elaborado con el objetivo de adaptar el proceso de aprendizaje a las diferentes capacidades, necesidades e intereses de los alumnos.

Las actividades formativas de esta asignatura son las siguientes:

  • Trabajos: Actividades de cierta complejidad que conllevan por ejemplo una búsqueda de información, análisis y crítica de lecturas, resolución de problemas, etc.
  • Casos prácticos: El objetivo pedagógico es que el estudiante detecte situaciones relevantes, analice la información complementaria, tome decisiones en relación con el escenario que se plantea y proponga soluciones o indique cómo mejorar la situación de partida.
  • Laboratorios virtuales: Son sesiones presenciales virtuales que se llevan a cabo con herramientas de videoconferencia cuyo objetivo es que los alumnos utilicen algún tipo de herramienta informática para realizar uno o varios supuestos prácticos.
  • Test de autoevaluación: al final de cada tema, los estudiantes pueden realizar este tipo de test, que permite al profesor valorar el interés del estudiante en la asignatura.

En la programación semanal puedes consultar cuáles son las actividades concretas que tienes que realizar en esta asignatura.

Descarga el pdf de la programación

Estas actividades formativas prácticas se completan, por supuesto, con estas otras:

  • Estudio personal
  • Tutorías. Las tutorías se pueden articular a través de diversas herramientas y medios. Durante el desarrollo de la asignatura, el profesor programa tutorías en días concretos para la resolución de dudas de índole estrictamente académico a través de las denominadas “sesiones de consultas”. Como complemento de estas sesiones se dispone también del foro “Pregúntale al profesor de la asignatura” a través del cual se articulan algunas preguntas de alumnos y las correspondientes respuestas en el que se tratan aspectos generales de la asignatura. Por la propia naturaleza de los medios de comunicación empleados, no existen horarios a los que deba ajustarse el alumno.
  • Examen final presencial

Las horas de dedicación a cada actividad se detallan en la siguiente tabla:

ACTIVIDADES FORMATIVAS
HORAS
Sesiones presenciales virtuales

15,0

Lecciones magistrales

6,0

Estudio del material básico

50,0

Lectura de material complementario

25,0

Trabajos, casos prácticos, test

17,0

Sesiones prácticas de laboratorio virtual

12,0

Tutorías

16,0

Trabajo colaborativo

7,0

Evaluación Final

2,0

Total

150

 

Puedes personalizar tu plan de trabajo seleccionando aquel tipo de actividad formativa que se ajuste mejor a tu perfil. El profesor-tutor te ayudará y aconsejará en el proceso de elaboración de tu plan de trabajo. Y siempre estará disponible para orientarte durante el curso.

Bibliografía

Bibliografía básica

La bibliografía básica es imprescindible para el estudio de la asignatura. Cuando se indica que no está disponible en el aula virtual, tendrás que obtenerla por otros medios: librería UNIR, biblioteca… 

Tema 1

García, L. F. (2010). Todo lo básico que debería saber sobre programación orientada a objetos en Java, pp. 1-46. Barranquilla: Uninorte.

El libro está disponible en la Biblioteca Virtual de UNIR.

Tema 2

García, L. F. (2010). Todo lo básico que debería saber sobre programación orientada a objetos en Java, pp. 75-114, 123-124. Barranquilla: Uninorte.

El libro está disponible en la Biblioteca Virtual de UNIR.

Tema 3

Pressman, R. S. (2002). Ingeniería del software: un enfoque práctico, pp. 388-394. Madrid: McGraw Hill.

El intervalo está disponible en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.


Vélez, J. (2011). Diseñar y programar, todo es empezar: Una introducción a la programación orientada a objetos usando UML y Java, pp. 141-151. Madrid: Dykinson.

El libro está disponible en la Biblioteca Virtual de UNIR.

Tema 4

García, L. F. (2010). Todo lo básico que debería saber sobre programación orientada a objetos en Java, pp. 171-198. Barranquilla: Uninorte.

El libro está disponible en la Biblioteca Virtual de UNIR.

Tema 5

Sznajdleder, P. A. (2013). Java a Fondo: estudio del lenguaje y desarrollo de aplicaciones (2ª ed.), pp. 176-192. Buenos Aires: Alfaomega Grupo Editor.

El intervalo está disponible en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.

Tema 6

Sznajdleder, P. A. (2013). Java a Fondo: estudio del lenguaje y desarrollo de aplicaciones (2ª ed.), pp. 162-176. Buenos Aires: Alfaomega Grupo Editor.

El intervalo está disponible en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.

Tema 7

Espinosa, A. R., Argente, E. & Muñoz, F. D. (2013). Concurrencia y sistemas distribuidos, pp. 1-8, 14-18. Valencia: Editorial de la Universidad Politécnica de Valencia.

El libro está disponible en la Biblioteca Virtual de UNIR.

Tema 8

Espinosa, A. R., Argente, E. & Muñoz, F. D. (2013). Concurrencia y sistemas distribuidos, pp. 43-56. Valencia: Editorial de la Universidad Politécnica de Valencia.

El libro está disponible en la Biblioteca Virtual de UNIR.

Sznajdleder, P. A. (2013). Java a Fondo: estudio del lenguaje y desarrollo de aplicaciones (2ª ed.), 200-109. Buenos Aires: Alfaomega Grupo Editor.

El intervalo está disponible en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.

Tema 9

Espinosa, A. R., Argente, E. & Muñoz, F. D. (2013). Concurrencia y sistemas distribuidos, pp. 19-37. Valencia: Editorial de la Universidad Politécnica de Valencia.

El libro está disponible en la Biblioteca Virtual de UNIR.

Sznajdleder, P. A. (2013). Java a Fondo: estudio del lenguaje y desarrollo de aplicaciones (2ª ed.), 209-215. Buenos Aires: Alfaomega Grupo Editor.

El intervalo está disponible en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.

Tema 10

Los textos para el estudio de este tema han sido elaborados por UNIR y están disponibles en el aula virtual para su consulta e impresión.

Tema 11

Pressman, R. S. (2002). Ingeniería del software: un enfoque práctico, pp. 219-223, 226-234. Madrid: McGraw Hill.

El intervalo está disponible en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.

Tema 12

Pressman, R. S. (2002). Ingeniería del software: un enfoque práctico, pp. 310-318, 281-299. Madrid: McGraw Hill.

El intervalo está disponible en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.

Tema 13

Dean, J. S. y Dean, R. H. (2009). Introducción a la programación con Java. México: Mc Graw Hill.

El intervalo está disponible en el aula virtual en virtud del artículo 32.4 de la Ley de Propiedad Intelectual.

Bibliografía complementaria

Debrawer , L. (2013). Patrones de diseño en Java. Barcelona: Editorial ENI.

Fischer, P. (2005). Introduction to Graphical User Interfaces with Java Swing. Addison Wesley.

Flórez, H. A. (2012). Programación orientada a objetos usando Java. Colombia: Ecoe Ediciones.

Fowler, M. (2004). UML Distilled: A Brief Guide to de Standard Object Modeling Language. Massachusetts: Addison Wesley.

Gamma, E., Helm, R., Johnson, R. & Vlissides, J. M. (1995). Design Patterns. Elements of Reusable Object-Oriented Software. Indiana: Addison Wesley.

Grand, M. (2002). Patterns in Java: A catalog of reusable design patterns illustrated with UML. Indiana: Wiley & Sons.

Larman, C. (2001). Applying UML and patterns. Nueva Jersey: Prentice Hall.

Laughtlin, B. D. (2006). Head First, object-oriented analysis and design. O'Reilly.

Lozano, M. D., González, P., Ramos, I., Moreno, F., & Molina, J. P. (2002). Desarrollo y generación de interfaces de usuario a partir de técnicas de análisis de tareas y casos de uso. Inteligencia Artificial. Revista Iberoamericana de Inteligencia Artificial, 6(16).

Mehlitz, P., NASA Ames Res., Tkachuk, O, Ujma, M. (2011). JPF-AWT: Model checking GUI applications. Automated Software Engineering (ASE). doi: 10.1109/ASE.2011.6100131

Oakx, S. & Wong, H. (2004). Java Threads. California: Ed. O’Reilly. 

O'Reilly, T. (marzo 2007). What Is Web 2.0: Design Patterns and Business Models for the Next Generation of Software. International Journal of Digital Economics 65, 17-37.

Palma, J. T. (2003). Programación concurrente. Madrid: Thomson.

Pérez, M. (2014). Lenguajes de programación orientada a objetos. Estados Unidos: CreateSpace.

Serbat, A. (2014). Programación en Java: Desarrolla Aplicaciones Java [Ed. Kindle]. Recuperado de Amazon.com

Weisfeld, M. (2009). The object oriented Thought process. Estados Unidos: Addison Wesley.

Zukowski, J. (2005). The Definitive Guide to Java Swing. Nueva York: Springer.

evaluación

Evaluación y calificación

El sistema de calificación se basa en la siguiente escala numérica:

0 - 4, 9

Suspenso

(SS)

5,0 - 6,9

Aprobado

(AP)

7,0 - 8,9

Notable

(NT)

9,0 - 10

Sobresaliente

(SB)

La calificación se compone de dos partes principales:

calificación

El examen se realiza al final del cuatrimestre y es de carácter PRESENCIAL y OBLIGATORIO. Supone el 60% de la calificación final y para que la nota obtenida en este examen se sume a la nota final, es obligatorio APROBARLO.

La evaluación continua supone el 40% de la calificación final. Este 40% de la nota final se compone de las calificaciones obtenidas en las diferentes actividades formativas llevadas a cabo durante el cuatrimestre.

Ten en cuenta que la suma de las puntuaciones de las actividades de la evaluación continua permite que realices las que prefieras hasta conseguir el máximo puntuable mencionado en la programación semanal. En ella se detalla la calificación máxima de cada actividad o evento concreto puntuables.

El sistema de evaluación de la asignatura es el siguiente:

SISTEMA DE EVALUACIÓN

PONDERACIÓN
MIN

PONDERACIÓN
MAX

Participación del estudiante (sesiones, foros, tutorías)

0%

40%

Trabajos, proyectos, laboratorios/talleres y/o casos

0%

40%

Test de autoevaluación

0%

40%

Examen final presencial

60%

60%

 

Ten en cuenta…
Si quieres presentarte solo al examen final, tendrás que obtener una calificación de 5 puntos sobre 6 para aprobar la asignatura.

Profesorado

María Luisa Díez Platas

Formación

La doctora Díez Platas además de contar con un Doctorado en Informática por la Universidad Pontificia de Salamanca, también ha realizado un Máster en Bibliotecas y Servicios de Información Digital por la Universidad Carlos III de Madrid.

Experiencia

Posee más de 25 años de experiencia en el ámbito universitario, tanto en tareas docentes de grado y postgrado en las áreas de matemáticas, profesamiento de lenguajes y Web Semántica, ontologías y datos abiertos enlazados y humanidades digitales. Así como en investigación y tareas de gestión.

Líneas de investigación:

Sus líneas de investigación principales se centran en el diseño de ontologías, la publicación de datos enlazados y la Web Semántica y las Humanidades Digitales. Así mismo, ha trabajado en el procesamiento y optimización de lenguajes y técnicas de Intelgiencia Artificial para reconocimiento de entidades nombradas. Ha dirigido diversos proyectos de fin de grado y fin de máster y ha participado como investigador en varios proyectos de investigación entre los que destacan el proyecto "POSTDATA: Poetry Standarization and Linked Open Data", proyecto ERC, financiado con fondos Starting Grant dentro del programa Horizonte 2020 (ERC-2015-STG-679528) y las distintas fases del proyecto "Biblioteca digital ovidiana" financiado por los Ministerios de Ciencia y Tecnología, Ciencia e Innovación y Economía y Competitividad.

Orientaciones para el estudio

Orientación para el estudio

Obviamente, al tratarse de formación online puedes organizar tu tiempo de estudio como desees, siempre y cuando vayas cumpliendo las fechas de entrega de actividades, trabajos y exámenes. Nosotros, para ayudarte, te proponemos los siguientes pasos:

  1. Desde el Campus virtual podrás acceder al aula virtual de cada asignatura en la que estés matriculado y, además, al aula virtual del Máster. Aquí podrás consultar la documentación disponible sobre cómo se utilizan las herramientas del aula virtual y sobre cómo se organiza una asignatura en la UNIR y también podrás organizar tu plan de trabajo personal con tu profesor-tutor.
  2. Observa la programación semanal. Allí te indicamos qué parte del temario debes trabajar cada semana.
  3. Ya sabes qué trabajo tienes que hacer durante la semana. Accede ahora a la sección Temas del aula virtual. Allí encontrarás el material teórico y práctico del tema correspondiente a esa semana.
  4. Comienza con la lectura de las Ideas clave del tema. Este resumen te ayudará a hacerte una idea del contenido más importante del tema y de cuáles son los aspectos fundamentales en los que te tendrás que fijar al estudiar el material básico. Lee siempre el primer apartado, ¿Cómo estudiar este tema?, porque allí te especificamos qué material tienes que estudiar. Consulta, además, las secciones del tema que contienen material complementario (Lo + recomendado y + Información).
  5. Dedica tiempo al trabajo práctico (sección Actividades y Test). En la programación semanal te detallamos cuáles son las actividades correspondientes a cada semana y qué calificación máxima puedes obtener con cada una de ellas.
  6. Te recomendamos que participes en los eventos del curso (sesiones presenciales virtuales, foros de debate…). Para conocer la fecha concreta de celebración de los eventos debes consultar las herramientas de comunicación del aula vitual. Tu profesor y tu profesor-tutor te informarán de las novedades de la asignatura.
En el aula virtual del Máster encontrarás siempre disponible la documentación donde te explicamos cómo se estructuran los temas y qué podrás encontrar en cada una de sus secciones: Ideas clave, Lo + recomendado, + Información, Actividades y Test.

 

Ten en cuenta estos consejos…

  • Sea cual sea tu plan de estudio, accede periódicamente al aula virtual, ya que de esta forma estarás al día de las novedades del curso y en contacto con tu profesor y con tu profesor tutor.
  • Recuerda que no estás solo: consulta todas tus dudas con tu profesor-tutor utilizando el correo electrónico. Si asistes a las sesiones presenciales virtuales también podrás preguntar al profesor sobre el contenido del tema. Además, siempre puedes consultar tus dudas sobre el temario en los foros que encontrarás en cada asignatura (Pregúntale al profesor).
  • ¡Participa! Siempre que te sea posible accede a los foros de debate y asiste a las sesiones presenciales virtuales. El intercambio de opiniones, materiales e ideas nos enriquece a todos.
  • Y ¡recuerda!, estás estudiando con metodología on line: tu esfuerzo y constancia son imprescindibles para conseguir buenos resultados. ¡No dejes todo para el último día!