Download fdldp - Teoría de la computación

Document related concepts

Programación funcional wikipedia , lookup

Joy (lenguaje de programación) wikipedia , lookup

Scheme wikipedia , lookup

Meta Lenguaje wikipedia , lookup

Tipo de dato algebraico wikipedia , lookup

Transcript
BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA
VICERRECTORÍA DE DOCENCIA
DIRECCIÓN GENERAL DE EDUCACIÓN SUPERIOR
UNIDAD ACADÉMICA:
FACULTAD DE CIENCIAS DE LA COMPUTACIÓN
CARRERA:
LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN
NÚMERO
DE CÓDIGO Y NOMBRE DEL CURSO:
NUEVA 7
FUNDAMENTOS DE LENGUAJES DE PROGRAMACIÓN.
FECHA DE ELABORACION DEL CURSO:
ABRIL 2000
NIVEL
EN QUE SE UBICA EN EL MAPA CURRICULAR:
NIVEL FORMATIVO
NOMBRE(S)
DE EL (LOS) PROFESORES QUE ELABORARON EL PROGRAMA:
JOSÉ DE JESÚS LAVALLE MARTÍNEZ
JESÚS GARCÍA FERNÁNDEZ
GUILLERMO DE ITA LUNA
DAVID EDUARDO PINTO AVENDAÑO
JOSÉ JUAN PALACIOS PÉREZ
PEDRO VARGAS GARCÍA
OLIVA LÓPEZ PÉREZ
BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA
ESQUEMA DEL CURSO
TÍTULO DEL CURSO
FUNDAMENTOS DE LENGUAJES DE PROGRAMACIÓN.
CÓDIGO
NUEVA 7
CRÉDITOS
10
H.T. 5
H. P. 0
PRERREQUISITOS
CCO 500
OBJETIVOS GENERALES DEL CURSO
Que el estudiante aprenda los fundamentos en los que se sustenta la semántica de los
lenguajes de programación, cómo se pueden formalizar las nociones de evaluación, tipos, validez,
completez y poder expresivo de un lenguaje.
OBJETIVOS ESPECÍFICOS
El estudiante aprenderá mediante los lenguajes PCF y While las semánticas que se pueden
definir para ellos, las diferencias en cuanto a abstracción requerida, su equivalencia y el impacto en
el diseño de lenguajes de programación.
El estudiante aprenderá como se puede modelar algebraícamente el concepto de tipo de
datos.
Estudiará en detalle al cálculo lambda con tipos, sus sintaxis y el modelo de recursión.
CONTENIDO Y ESQUEMA DEL CURSO
1. El lenguaje PCF.
1.1. Sintaxis de PCF.
1.1.1. Boléanos y números naturales.
1.1.2. Apareamiento y funciones.
1.1.3. Declaración y azúcar sintáctica.
1.1.4. Recursión y operadores de punto fijo.
1.2. Programas PCF y sus semánticas.
1.2.1. Programas y resultados.
1.2.2. Semántica axiomática.
1.2.3. Semántica denotacional.
1.2.4. Semántica operacional.
1.2.5. Relaciones de Equivalencia definidas para cada forma de semántica.
1.3. Reducción PCF e interpretes simbólicos.
1.3.1. Reducción no determinística.
1.3.2. Estrategias de reducción.
1.3.3. Las estrategias reducción más izquierda y reducción retardada.
1.3.4. Reducción paralela.
1.3.5. PCF ávido.
1.4. Ejemplos de programación PCF, poder expresivo y limitaciones.
1.4.1. Registros y n-tuplas.
1.4.2. Buscando a los números naturales.
1.4.3. Iteración y recursión de cola.
1.4.4. Funciones recursivas totales.
1.4.5. Funciones recursivas parciales.
1.4.6. Indefinibilidad de operaciones paralelas.
2. Álgebra Universal y Tipos de datos algebraicos.
2.1. Preliminares de especificación algebraica.
2.2. Álgebras, firmas y términos.
2.2.1. Álgebras.
2.2.2. Sintaxis de términos algebraicos.
2.2.3. Álgebras y la interpretación de términos.
2.2.4. El lema de sustitución.
2.3. Ecuaciones, validez y completez.
2.3.1. Ecuaciones.
2.3.2. Álgebras de términos y sustitución.
2.3.3. Implicación semántica y un sistema de pruebas ecuacional.
2.3.4. Formas de Completez.
2.3.5. Congruencia, cocientes y completez deductiva.
2.3.6. Sorts no vacíos y la propiedad del modelo mínimo.
2.4. Homomorfismos e inicialidad.
2.4.1. Homomorfismos e isomorfismos
2.4.2. Álgebras iniciales.
2.5. Tipos de datos algebraicos.
2.5.1. Especificación y abstracción de datos.
2.5.2. Semántica del álgebra inicial e inducción sobre tipos de datos.
2.5.3. Ejemplos y valores error.
2.5.4. Enfoques alternativos a valores error.
3. Calculo lambda con tipos simples, modelos de cálculo lambda con tipos y recursión.
3.1. Tipos.
3.1.1. Sintaxis.
3.1.2. Interpretación de Tipos.
3.2. Términos.
3.2.1. Sintaxis sensible al contexto.
3.2.2. Sintaxis de términos .
3.2.3. Términos con producto, suma y tipo relacionado.
3.2.4. La correspondencia fórmulas como tipos.
3.2.5. Algoritmos de asignación de tipos (Typing).
3.3. Validez y completez.
3.3.1. Modelos generales y el significado de términos.
3.3.2. Estructuras aplicativas, extensionalidad y marcos.
3.3.3. La condición del modelo del medio ambiente.
3.3.4. Validez de tipos y ecuacional.
3.4. Modelos de teoria de dominios y puntos fijos.
3.4.1. Definiciones recursivas y operadores de punto fijo.
3.4.2. Ordenes parciales completos, producto lifting y cartesiano.
3.4.3. Funciones continuas.
3.4.4. Puntos fijos y la jerarquía del continuo completo.
3.4.5. Modelo de orden parcial completo para PCF.
3.5. Inducción de punto fijo.
3.6. Adecuación computacional y abstracción completa.
3.6.1. Teorema de aproximación y adecuación computacional.
3.6.2. Abstracción completa para PCF con operaciones paralelas.
3.7. Modelo de la teoría de recursión.
3.7.1. Introducción.
3.7.2. Conjuntos modestos.
3.7.3. Jerarquía recursiva completa.
4. Programas imperativos.
4.1. Programas While.
4.1.1. L-valores y R-valores.
4.1.2. Sintaxis de los programas While.
4.2. Semántica operacional
4.2.1. Símbolos básicos en expresiones.
4.2.2. Locaciones y almacenes.
4.2.3. Evaluación de expresiones.
4.2.4. Ejecución de comandos.
4.3. Semántica denotacional.
4.3.1. Cálculo lambda de asignación de tipos con almacenes.
4.3.2. Funciones semánticas.
4.3.3. Equivalencia de semántica operacional y denotacional.
4.4. Aserciones antes-después sobre programas While.
4.4.1. Aserciones de correctez de primer orden y parcial
4.4.2. Reglas de prueba.
4.4.3. Validez.
4.4.4. Completez relativa.
CRITERIOS DE EVALUACIÓN
1. Realización de dos exámenes parciales. Cada examen parcial representa el 20%
2. El alumno debe entregar una lista de ejercicios que se dejarán durante el curso. 20%.
3. Construcción de un programa. Entrega del programa 40%.
TEXTOS Y REFERENCIAS REQUERIDAS
Foundations for Programming Languages, J. C. Mitchell, MIT Press, 1996.
Semantics of Programming Languages: Structures and Techniques, G. A. Gunter, MIT
Press, 1992.
The Formal Semantics of Programming Languages, G. Winskel, MIT Press, 1993.