programación concurrente


Hoy he iniciado mi participación en el máster en computación de la Universidad de Cantabria como parte de mi formación para mi puesto de empleo de ingeniero de I+D+i en la universidad con la asignatura de programación concurrente.

En la presentación de la asignatura, realizada por el profesor José María Drake Moyano miembro del Grupo de Computadores y Tiempo Real, se presentaron los objetivos generales de la asignatura, las capacidades que se espera que alumno adquiera al finalizar el curso, el programa previsto de la asignatura, la metodología docente y el proceso de evaluación y finalmente se dieron unas reseñas bibliográficas. A continuación se dio el primer tema del primer módulo dedicado a justificar la necesidad de realizar programación concurrente. La asignatura tiene una fuente documental en la web en donde se encuentran los apuntes de la asignatura en formato pdf.

En cuanto a los objetivos generales de la asignatura, se trata de:

  • Conocer y practicar la programación concurrente, para tener la capacidad de identificar las ventajas y problemas que presenta, en contraste con la programación secuencial.
  • Concebir, especificar, diseñar, implementar y verificar aplicaciones informáticas en las que se utilice la programación concurrente.
  • Conocer los conceptos básicos sobre concurrencia, sus ventajas y patologías que conlleva, así como los recursos y primitivas de sincronización que históricamente se han investigado y desarrollado para realizar una programación concurrente segura.
  • Conocer y practicar la programación concurrente con los lenguajes de programación Java y ADA.

Tengo que comentar respecto a los objetivos anteriores que el lenguaje de programación que se va a utilizar en la exposición básica teórica y las prácticas es Java pero se va a realizar un módulo opcional en Ada ya que es el lenguaje utilizado por el grupo CTR para la programación de sistemas en tiempo real.

Como comentario general tengo que decir que este tema de la programación concurrente tiene mucha relevancia en mi trabajo puesto que los sistemas embebidos que estamos investigando en el proyecto MULTICUBE son sistemas MPSoC con varios cores que necesariamente deben ser programados con aplicaciones que hacen uso de la concurrencia.

En cuanto a las capacidades que van a ser adquiridas en el curso el profesor Drake mencionó las siguientes:

  • Saber integrar la concurrencia en el proceso de desarrollo de una aplicación, como medio para simplificar su estructura interna, mejorar sus respuestas y hacerla más robusta frente a fallos.
  • Ser capaz de identificar las características y ventajas que una aplicación informática tiene por el hecho de ser concebida, diseñada e implementada utilizando programación concurrente.
  • Conocer y saber elegir entre las diferentes alternativas para implementar una aplicación concurrente: utilizando un lenguaje de programación, los recursos al efecto que proporciona un sistema operativo o un middleware.
  • Tener la capacidad de diseñar e implementar una aplicación concurrente utilziando los lenguajes de programación Java y ADA

Ya hemos mencionado que el lenguaje ADA es opcional. Nos dio a elegir cuál queríamos utilizar y yo elegí Java (aunque en mi trabajo utilizo C++, pero los conceptos básicos de concurrencia que aprenda en Java son igualmente válidos en C++) No vamos a ver los middleware ni los mecanismos de sistema operativo que permiten la distribución y la concurrencia en aplicaciones (hay otra asignatura del máster que los trata en profundidad) Aquí nos vamos a concentrar en los mecanismos proporcionados por el lenguaje de programación.

En cuanto al programa de la asignatura, está dividida en varios módulos y estos en temas. También se tiene un laboratorio en el que se desarrolla un trabajo tutorado de programación concurrente en Java y una parte final de trabajo personal en el que se desarrolla una aplicación concurrente que se debe presentar y entregar al equipo docente.

* Módulo I: Conceptos y recursos para la programación concurrente

o Motivación de la programación concurrente
o Recursos para programación concurrente
o Interaccion entre procesos de un programa concurrente
o Patologías de programa concurrentes.
o Mecanismos basados en intercambio de mensajes
o Patologías de programa concurrentes.

* Módulo II: Programación concurrente con Java

o Threads Java.
o Sincronización entre Threads Java

* Módulo III: Formalización de la concurrencia: Redes Petri

o Redes de Petri: definición, formalización y ejecución
o Redes de Petri: propiedades y métodos de análisis.
o Redes de Petri: modelado de sistemas concurrentes.
o Extensiones de las redes de Petri: temporización.

* Módulo IV: Programación concurrente con ADA 2005

o Tareas Ada.
o Sincronización entre Tareas Ada
o Transferencia de control asíncrono entre tareas Ada.

* Trabajo dirigido

o Red ferroviaria Especificación
o Red ferroviaria Código Secuencial

La metodología docente consiste, siguiendo los nuevos dictados de Bolonia, en una serie de sesiones presenciales llamados seminarios y laboratorios más un trabajo dirigido individual de cada alumno. La parte teórica se va a exponer con ayuda de ejemplos, parte de los cuales se harán de forma práctica en el laboratorio. El trabajo dirigido será de una complejidad parecida a los ejemplos desarrollados en clase. El tiempo que deberá dedicar el alumno a realizarlo estará fuera del horario presencial. La presentación del proyecto individual ante el profesor dará lugar a una calificación de 0 a 10 con los siguiente baremos:

  • Haber obtenido la funcionalidad del proyecto: 3.0 puntos
  • Defensa de la solución propuesta: 3.0 puntos
  • Idoneidad de los medios utilizados: 2.0 puntos
  • Originalidad y elegancia de la solución: 2.0 puntos

La evaluación se realizará antes del día 9 de febrero de 2009.

La bibliografía está compuesta por las siguientes referencias:

  • Concurrent Programming. A. Burn and G. Davies. Addidosn Wesley 1993.
  • Java Concurrency in Practice. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes and Doug Lea. Addison-Wesley Professional, 2006. [IND M C61 19]
  • Concurrent Programming in Java(TM) Design Principles and Patterns. Doug Lea. Java Series from the Source. Addison-Wesley 1997. [IND M C61A 163]

2 comentarios en “programación concurrente

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s