Visualizar: Normal | Grande | Pequeño | Alto contraste

Programación Funcional


Página de Programación Funcional

La asignatura


En esta página web se incluye información sobre la asignatura optativa Programación Funcional, correspondiente a las titulaciones de Ingeniero Técnico en Informática de Sistemas e Ingeniero Técnico en Informática de Gestión. La asignatura depende del Departamento de Sistemas Informáticos y Programación de la Facultad de Informática de la Universidad Complutense de Madrid.


El objetivo de la asignatura es introducir el estilo de programación funcional, capacitando a los alumnos para aplicarlo al tratamiento de algoritmos y estructuras de datos en aplicaciones de complejidad media. Existen multitud de documentos describiendo las ventajas de la programación funcional . Una motivación muy clásica de la necesidad de utilizar lenguajes funcionales puede encontrarse en el artículo de John Hughes, Why Functional Programming Matters, y otra aún más clásica es la charla impartida por John Backus al ser galardonado en 1977 con el premio Turing. Su conferencia Can Programming be Liberated from the Von Neumann Style? A Functional Style and Its Algebra of Programs en el acto de entrega del mencionado premio es todo un clásico.

El lenguaje de programación sobre el que se articula la asignatura es el lenguaje funcional perezoso Haskell, lenguaje para el que existen diversos compiladores e intérpretes de libre distribución, y que se ha convertido en el estándar de facto en el área de los lenguajes funcionales perezosos. Puede encontrarse una muy buena introducción al uso del lenguaje en A Gentle Introduction to Haskell.


Práctica:

Los alumnos podrán elegir si quieren realizar una práctica o no. Para los que elijan realizarla, el 20% de la nota final del curso vendrá dada por la realización de dicha práctica, mientras que la nota final del resto de alumnos dependerá exclusivamente del examen final. La práctica se realizará individualmente o en grupos de 2 alumnos. Cada grupo deberá proponer la práctica que van a realizar, que deberá ser distinta de las práctica de todos los demás grupos. Ejemplos de posibles prácticas son las siguientes:

  • Programa que manipule autómatas finitos y expresiones regulares, y que por ejemplo transforme de expresión regular a autómata finito determinista mínimo.
  • Programa que juegue a las 4 en raya.
  • Repertorio de programas que incluya un conjunto suficientemente amplio de problemas típicos de MTP.
  • Repertorio de estructuras de datos típicas de EDI, junto con algunos programas que las usen.
  • Repertorio de algoritmos de manipulación de grafos (recorridos, búsqueda de caminos mínimos, etc).
  • Manipulación de gramáticas incontextuales.
  • Simulador de una máquina de Turing.

Cada grupo deberá presentar una propuesta de práctica no más tarde del 8 de enero, y la práctica realizada se entregará no más tarde del momento en el que se realice el examen final de la asignatura en Febrero.


Hojas de ejercicios:




Dirección:
Fernando Rubio Diez
Departamento de Sistemas Informáticos y Programación
Facultad de Informática
Universidad Complutense
C/. Profesor José García Santesmases, s/n
28040 Madrid
Tfno: +34-91-3947629
Fax: +34-91-3947529
e-mail: fernando@sip.ucm.es



Facultad de Informática - Universidad Complutense de Madrid