Asignatura: Código: Año académico: Centro: Departamento: Área: PROGRAMACIÓN LÓGICA Y FUNCIONAL 42998312 2008/09 ESCUELA POLITECNICA SUPERIOR LENGUAJES Y COMPUTACION LENGUAJES Y SISTEMAS INFORMÁTICOS Titulación: Ciclo: Cuatrimestre: Créditos teóricos: INGENIERÏA EN INFORMATICA 1º Curso: 2º Carácter: OPTATIVA 3 Créditos prácticos: 3 Profesorado: JESÚS MANUEL ALMENDROS JIMÉNEZ Objetivos Generales: Fundamentos de programación Lógica y Funcional. Conocimientos Previos Recomendados: Programación. Estructuras de Datos. Contenidos teóricos (Temporización): 1.-Introducción. 2.-Programación Lógica: Cláusulas de Horn, Hechos, Consultas, Reglas, Ejemplos. 3.-Prolog: Términos Prolog, Árbol de Búsqueda Prolog, Números Naturales, Listas, Árboles. 4.-Teoría: Resolución, Resolvente, Derivación, Refutación, Árboles SLD. 4.-Programación en Prolog: Terminación, Soluciones, Metapredicados, Corte, Negación, Lectura y Escritura. 5.-Programación Funcional. Tipos. Funciones. Expresiones. Reescritura. Listas. Entrada y Salida. Evaluación Perezosa. Orden Superior. 6.- Introducción a la Programación Lógico-Funcional. Contenidos prácticos (Temporización): Desarrollo de aplicaciones en Prolog. Desarrollo de aplicaciones en Haskell. Bibliografía: R. Bird, Introduction to Functional Programming using Haskell, 2nd edition, Prentice Hall Europe, 1998. (1st edition by R. Bird and P. Wadler, Prentice Hall, 1988.) S. Thompson, Haskell: The Craft of Functional Programming, 2nd edition, Addison-Wesley, 1999. P. Hudak, The Haskell School of Expression: Learning Functional Programming through Multimedia, Cambridge University Press, 2000. F. Rabhi and G. Lapalme, Algorithms. A Functional Programming Approach, 2nd edition, Addison Wesley, 1999. C. Reade, Elements of Functional Programming, Addison Wesley, 1989. K. Doets, From Logic to Logic Programming, The MIT Press, 1994. L. Sterling and E.Shapiro, The Art of Prolog: Advanced Programming Techniques, The MIT Press, 1986. D. Maier and D.S. Warren, Computing with Logic. Logic Programming with Prolog, Benjamin Cummings, 1988 Metodología: Se pretende que el alumno diseñe e implemente programas lógicos y funcionales. En la parte teórica se explican los fundamentos de la programación lógica y funcional, y en la parte práctica los alumnos en grupos desarrollan pequeñas aplicaciones en estos lenguajes. La implementación se realiza en Prolog y Haskell. Plan de acción tutorial: Seguimiento de las aplicaciones desarrolladas por parte del profesor. Evaluación: Entrega de prácticas y examen final. Observaciones: