Teoría de la Concurrencia

Transcripción

Teoría de la Concurrencia
UNIVERSIDAD NACIONAL AUTÓNOMA
DE MÉXICO
LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN
Programa de la asignatura: Teorı́a de la Concurrencia
Clave:
Semestre:
Campo de conocimiento:
Área de Formación:
??
6-8
Linea terminal:
Horas
Horas por Total de horas
semana
Créditos:
Teorı́a
Práctica
10
5
0
5
112
Tipo:
Modalidad:
Carácter:
Curso
Obligatoria
Seriación indicativa antecedente: Lenguajes de Programación.
Seriación indicativa subsecuente: Seminario de Ciencias de la Computación A,B.
Objetivo General: La concurrencia es una parte fundamental de los sistemas modernos de cómputo. Gran
parte de los lenguajes de programación actuales incluyen algún soporte para concurrencia, permitiendo
el desarrollo de programas distribuidos y multihilo. El objetivo de esta materia consiste en presentar la
teorı́a de la concurrencia mediante el uso de lenguajes de programación minimales que capturen conceptos
fundamentales como la sincronización, el paso de mensajes y la movilidad. Una estudio sólido de estos
fundamentos permitirá al programador tener un visión más profunda al utilizar lenguajes de programación
concurrentes.
Contenido Temático
Unidad
Tema
1
Introducción
2
El cálculo de sistemas comunicantes (CCS)
3
El cálculo π
4
Sistemas de tipos para concurrencia
5
Aplicaciones
Total de Semanas
Semanas
1.0
3.0
4.0
4.0
4.0
16.0
Desarrollo temático
1. Introducción
Que el alumno se familiarice con los conceptos fundamentales de la concurrencia y que
conozca las herramientas matemáticas básicas para su formalización.
1.1. ¿ Qué es la programación concurrente ?
1.2. Terminologı́a de la concurrencia.
1.3. Álgebras de proceso.
2. El cálculo de sistemas comunicantes (CCS)
Que el alumno conozca el cálculo de procesos CCS, sus propiedades matemáticas, su
importancia como un formalismo para modelar la comunicación indivisible entre dos
participantes y su utilidad en la evaluación de propiedades de correctud de un sistema
tales como el interbloqueo o punto muerto (deadlock).
1
2.1.
2.2.
2.3.
2.4.
Ejemplos de procesos y su comportamiento.
Sintaxis y semántica: sistemas de transición etiquetados, paso de valores.
Bisimulación fuerte y débil.
Equivalencia observacional y contextual.
3. El cálculo π
Que el alumno conozca algunos aspectos del cálculo π, en particular su realce sobre CCS
al permitir la descripción de cómputos concurrentes cuya configuración puede cambiar
durante la ejecución.
3.1. Sintaxis y semántica.
3.2. Bisimulación y equivalencia de procesos.
3.3. Congruencia.
3.4. Variantes: cálculo π ası́ncrono y poliádico.
4. Sistemas de tipos para concurrencia
Que el alumno reconozca la importancia y ventajas del uso de tipos en programación
concurrente. Que comprenda las garantı́as de correctud que proporciona un sistema
de tipos, como son la seguridad de que cierto proceso de comunicación eventualmente
tendrá exito, bajo ciertas condiciones de equidad (fairness), independientemente de si
el proceso en cuestión diverge.
4.1. Fundamentos, tipos canal, tipos de entrada y salida.
4.2. Linearidad, subtipado y polimorfismo.
4.3. Tipos sesión.
5. Aplicaciones
Que el alumno reciba un panorama de aplicaciones relacionadas a los conocimientos adquiridos. Por ejemplo, la implementación de un prototipo de lenguaje de programación
concurrente o el modelado de sistemas biológicos.
5.1. Seguridad de protocolos.
5.2. Sistemas biológicos.
5.3. Prototipos e implementaciones.
BIBLIOGRAFÍA BÁSICA:
1. S. Gay, V. Vasconcelos, A. Ravara. Session Types for Inter-Process Communication. Technical Report TR-2003-133. Department of Computing Science. University of Glasgow. 2003.
2. N. Kobayashi. Type Systems for Concurrent Programs. LNCS 2757, pp. 439-453. Springer 2003.
3. Milner R. Communicating and Mobile Systems: The π-calculus. Cambridge University Press. 1999.
ISBN 0521 65869 1.
4. Sangiorgi D., Walker D. The π-calculus, A Theory of Mobile Processes. Cambridge University Press
2001. ISBN 0 521 78177 9.
2
BIBLIOGRAFÍA COMPLEMENTARIA:
1. M. Abadi, A. D. Gordon. A Calculus for Cryptographic Protocols: The Spi Calculus. Information
and Computation 148, pp. 1-70. Academic Press 1999.
2. J.A. Bergstra, A. Ponse, S. A. Smolka, editores. Handbook of Process Algebra. Elsevier Science,
2001.
3. Guerriero, M.L., Prandi, D., Priami, C., Quaglia, P. Process Calculi Abstractions for Biology. En
Algorithmic Bioprocesses. pp. 463-486. Natural Computing Series, Springer 2009
4. C.A.R. Hoare. Communicating Sequential Processes, Prentice Hall 1985. Versión 2004 disponible en
http://www.usingcsp.com/cspbook.pdf
5. M. Neubauer, P. Thiemann. An implementation of session types. En Proc. 7th International Symposium on Practical Aspects of Declarative Languages (PADL’04). LNCS 3057, pp 56–70. Springer
2004.
6. B. C. Pierce, D. N. Turner. Pict: A Programming Language Based on the Pi-Calculus. En G. Plotkin,
C. Stirling, M. Tofte, editores, Proof, Language and Interaction: Essays in Honour of Robin Milner,
pp. 455-494. MIT Press, 2000.
Sugerencias didácticas:
Exposición oral
Exposición audiovisual
Ejercicios dentro de clase
Ejercicios fuera del aula
Seminarios
Lecturas obligatorias
Trabajo de investigación
Prácticas de taller o laboratorio
√
(√)
(√)
(√)
(√)
(√)
(√)
( )
( )
Otras:
( )
Mecanismos de evaluación del aprendizaje:
Exámenes parciales
( )
Examen final escrito
(√)
Trabajos y tareas fuera del aula
( )
Prácticas de laboratorio
( √)
Exposición de seminarios por los
( )
alumnos
√
Partcicipación en clase
( )
Asistencia
( )
Proyectos de programación
( )
Otras:
( )
PERFIL PROFESIOGRÁFICO: Egresado preferentemente de la Licenciatura en Ciencias de la Computación o Matemático con especialidad en Computación. Es conveniente que posea un posgrado en la
disciplina.
3

Documentos relacionados