es ca en ca ca ca en pt es oc es es es en es es es ca es es en es es en en gl es es es es es fr fr es fr es es es es es es es es es pt es es es es es es es es es en en fr ia bn fr cs it es eo es eo es es cs es en en fr ia bn fr cs en en en en en en en en fr es cs es en en fr ia bn fr cs en en en en en en en en en es cs es en en fr ia bn fr cs en en en en en en en en en es cs es en en fr ia bn fr cs en en en en en en en en fr es es es cs es en en fr ia bn fr cs en en en en en en en en en es es cs es en en fr ia bn fr cs en en en en en en en en en es es en en fr ia bn fr cs en en en en en en fr en en es en es fr es es es es es es en en es en en es en en en es ja en pt es pt es es es es pt es es es es es es es es es es es es es es es es es es es es es es es es en es en en es es
Asignaturas - Facultad de Informática de Barcelona - FIB - Universidad Politecnica de Cataluña - UPC - BarcelonaTech
Masters in Computer Science and Engineering
Grado en Ingeniería en informática
Versió en Català | English version
Programación Concurrente y Distribuida (PCD)
PRED - Prerrequisito para la EI , ETIG
PS - Prerrequisito para la ETIS
Se pretende que los estudiantes aprendan a diseñar e implementar programas concurrentes y distribuidos de forma segura y fiable. Para guiar a los estudiantes en las tareas de diseño se introduce el LST (Labelled System Analyser), un lmodelo que permite diseñar, visualizar y analizar sistemas de transiciones. Con el fin de que los estudiantes tengan una visión más completa de la concurrencia y de los sistemas distribuidos, se enseñan otros modelos como por ejemplo las Redes de Petri. Con el fin de tener una visión completa de los pasos que van de la modelización a la implementación se realizan prácticas en los lenguajes de programación Java y Erlang. Las prácticas de Redes de Petri se realizan en WoPeD.
Que conozcan los sistemas de transición etiquetados como herramienta de diseño y análisis de los programas concurrentes y distribuidos.
Que conozcan algún software, por ejemplo LTS, de diseño y análisis de sistemas de transición.
Que conozcan las Redes de Petri como otro modelo formal de diseño y análisis.
Que tengan una idea clara de los problemas básicos que pueden aparecer en programación concurrente y distribuida.
Que conozcan las partes de Java y Erlang relacionadas con programación concurrente y distribuida.
Que los estudiantes puedan modelar y analizar a mano ejemplos muy sencillos de programas concurrentes mediante un sistema de transición etiquetado.
Que puedan utilizar con fluidez una herramienta de análisis basado en sistemas de transición, por ejemplo el LTS.
Que sepan utilizar las Redes de Petri como otro modelo formal de diseño y análisis.
Que puedan utilizar con fluidez las partes de Java y Erlang relacionadas con programación concurrente y distribuida.
Que puedan razonar de manera formal, empleando si hace falta programas, con objeto de poder decir si un diseño es o no correcto.
Poder pasar de herramientas abstractas de diseño y análisis e implementaciones en lenguajes de programación, como Java y Etlang.
Otras horas fuera del horario fijado
Sistemas de transición y álgebra de procesos.
Sistemas de transición y procesos primitivos. Operaciones de prefijo y selección. Procesos concurrentes y su ejecución. Descripción de los sistemas LTS. Implementación en Java i Erlang.
Objetos concurrentes, exclusión mutua y condiciones de sincronización, problema del deadlock.
Problema de la interferencia destructiva. Locks y exclusión mutua. Modelado de semáforos y del problema de los monitores imbricados. Problema de deadlock, análisis mediante LST.
Propiedades de seguridad (safety) y vivacidad (liveness).
Descripción y ejemplos de propiedades de seguridad e implementación mediante LTS. Descripción de las propiedades de vivacidad, en especial la de progreso, e implementación en LTS.
Paso de mensajes y arquitectura cliente/servidor, otras arquitecturas.
Paso de mensajes. Arquitectura cliente servidor.
Introducción a otras arquitecturas: pipelines de filtros, supervisor/trabajadores, anunciante/oyente.
Paso de mensajes en Erlang. Arquitectura cliente/servidor en Erlang.
Redes de Petri, modelo y algoritmos básicos.
Ejemplos de redes de Petri. Algoritmo de Karp y Miller.
Clases especiales de redes de Petri. Introducción a WoPed.
Redes de Petri; modelado.
Estudio de casos: "reordenamiento distribuido", exclusión mutua autoestabilizante, protocolos con mensajes ack.
Horas adicionales dedicadas a la evaluación
Total horas de trabajo para el estudiante
En las clases de teoría se presentarán los conceptos básicos mediante ejemplos. En las clases de ejercicios, los estudiantes resolverán ejercicios sobre los temas de las clases de teoría. En las clases de laboratorio se verá cómo implementar estos problemas (o problemas parecidos) en Java y Erlang. Tanto en clases de problemas como de laboratorio se podrán utilizar herramientas de diseño y análisis como el LTS.
Habrá examen final y nota de laboratorio. El examen será de problemas sobre la teoría explicada. La nota de laboratorio reflejará la calidad del trabajo realizado. La nota final será:
0.6*examen final + 0.4*laboratorio
Jeff Magee & Jeff Kramer Concurrency : State Models & Java Programming (Second Edition), John Wiley & Sons, 2006.
Perterson, James Petri net theory and the modeling of systems, Prentice-Hall, 1981.
José Tomás Palma Méndez ... [et al.] Programación concurrente, International Thomson, 2003.
Joe Amstrong Programming Erlang, Software for a Concurrent World, Pragmatic Bookshelf, 2007.
Sharon Zakhour, Scott Hommel, Jacob Royal, Isaac Rabinovitch, Tom Risser, Mark Hoeber The Java Tutorial, Fouth Edition, a Short Course on the Basics, Addison Wesley, 2006.
Doug Lea Concurrent programming in Java (Second Edition) : Design Principles and Patterns, Addison-Wesley, 2000.
Bil Lewis, Daniel J. Berg Multithreaded programming with Java technology, Prentice Hall, 2000.
Francesco Cesarini, Simon Thompson Erlang, a Concurrent Approach to Software Development, O' Reilly, 2009.
Buenos conocimientos de Java a nivel de clases y objetos.
Acceso a los estudios
Plan de estudios Grado
Trabajo de Fin de Grado
Ingeniería Técnica en Informática de Gestión
Ingeniería Técnica en Informática de Sistemas
Proyecto final de carrera
© Facultad de Informática de Barcelona - Contacto - RSS
Esta web utiliza cookies propias para ofrecerle una mejor experiencia y servicio. Si continúa la navegación, entendemos que acepta nuestra política de cookies. Versión clássica Versión móvil