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