Informática (2014-15)
Esta asignatura del primer curso del Grado en Matemáticas de la Grado en Matemáticas presenta la programación desde una perspectiva funcional y simbólica. El programa se estructura en cuatro módulos: en primer lugar, se desarrollan los fundamentos de la programación funcional utilizando Haskell, abarcando desde los conceptos elementales hasta las técnicas más avanzadas; en segundo lugar, se profundiza en el estudio e implementación de estructuras de datos fundamentales y algoritmos asociados, incluyendo pilas, colas, árboles y grafos; el tercer módulo incorpora contenidos complementarios especializados, como la generación de gráficos mediante la biblioteca Gloss y el análisis de la complejidad algorítmica; finalmente, se aborda el cálculo simbólico empleando el sistema Maxima, orientado específicamente hacia aplicaciones matemáticas computacionales.
El material didáctico es amplio, incluyendo el texto de los temas, ejercicios y exámenes resueltos y ejemplos de código. Se complementa con manuales de referencia para Haskell y guías sobre tipos abstractos de datos. La asignatura combina fundamentos teóricos con aplicación práctica, preparando a los estudiantes para resolver computacionalmente problemas matemáticos.
Temas
- 1ª parte: Programación funcional con Haskell
- Tema 1: Introducción a la programación funcional.
- Tema 2: Introducción a la programación con Haskell y código.
- Tema 3: Tipos y clases.
- Tema 4: Definición de funciones y código.
- Tema 5: Definiciones de listas por comprensión y código.
- Tema 6: Funciones recursivas y código.
- Tema 7: Funciones de orden superior y código.
- Tema 8: Razonamiento sobre programas.
- Tema 9: Declaraciones de tipos y clases.
- Tema 10: Evaluación perezosa.
- Tema 11: Aplicaciones de la programación funcional y código.
- Tema 12: Analizadores funcionales.
- Tema 13: Programas interactivos.
- 2ª parte: Algorítmica con Haskell
- Tema 14: El TAD de las pilas.
- Tema 15: El TAD de las colas.
- Tema 16: El TAD de las colas de prioridad.
- Tema 17: El TAD de los conjuntos.
- Tema 18: El TAD de las tablas.
- Tema 19: El TAD de las árboles binarios de búsqueda.
- Tema 20: El TAD de los montículos.
- Tema 21: El TAD de los polinomios.
- Tema 22: Algoritmos sobre grafos.
- Tema 23: Técnicas de diseño descendente de algoritmos.
- Tema 24: Técnicas de diseño ascendente de algoritmos.
- 3ª parte: Temas complementarios
- 4ª parte: Cálculo simbólico con Maxima
- Tema CS1: Introducción a Maxima con wxMaxima y ejercicios.
- Tema CS2: Funciones de una variable y ejercicios.
- Tema CS3: Aritmética y ejercicios.
- Tema CS4: Sucesiones y recursión y ejercicios.
- Tema CS5: Programación y ejercicios.
- Tema CS6: Matrices en Maxima y ejercicios.
- Tema CS7: Gráficos y animaciones.
Libros con temas, ejercicios y exámenes
- En Temas de "Programación funcional" (2014-15) se encuentran las transparencias de la introducción a la programación funcional en forma de libro.
- En Ejercicios de "Informática de 1º de Matemáticas" (2014–15) se encuentran todas las relaciones de ejercicios con sus soluciones.
- En Exámenes de "Programación funcional con Haskell" (2014–15) se encuentran todos los exámenes con sus soluciones.
- En Introducción al cálculo simbólico con Maxima se encuentran una introducción al cálculo simbólico mediante ejercicios con sus soluciones.
Códigos
- En Códigos de los temas de "Programación funcional" se encuentra los códigos los temas de la 2ª parte del curso.
- En Resumen de los tipos abstractos de datos se encuentra las especificaciones de los TAD estudiados desde el tema 14 al 21.
Manuales de referencia de Haskell
- Resumen de funciones de Haskell.
- Manual de funciones básicas de Haskell con ejemplos.
- Manual de la librería de números primos Data.Numbers.Primes.
- Manual de la librería de vectores Data.Vector.
- Manual de la librería de matrices Data.Matrix.
- Manual de la librería de conjuntos Data.Set.
- Manual de la librería de diccionarios Data.Map.
- Manual de funciones de los tipos abstractos de datos con ejemplos.
Referencias
Programación funcional con Haskell
Libros programación funcional con Haskell
- R. Bird. Introduction to functional programming using Haskell. (Prentice-Hall, 1998).
- H.C. Cunningham. Notes on functional programming with Haskell.
- Hal Daume III et al. Yet another Haskell tutorial.
- A.J.T. Davie. An introduction to functional programming systems using Haskell. (Cambridge University Press, 1992).
- K. Doets y J. van Eijck. The Haskell road to logic, maths and programming.
- J. Fokker. Programación funcional.
- J. Gallardo, P. Gutiérrez y B. Ruiz. Una introducción agradable a Haskell versión 98 (es una traducción de P. Hudak, J. Peterson y J. Fasel A Gentle Introduction to Haskell, Version 98).
- G. Hutton. Programming in Haskell. (Cambridge University Press, 2007).
- M. Lipovača. Learn you a Haskell for great good!
- B. O'Sullivan, J. Goerzen y D. Stewart. Real world Haskell. (O'Reilly Media, Inc., 2008).
- The Haskell wikibook.
Manuales de referencia de Haskell
- J. Bailey. Haskell cheat sheet.
- Haskell. Reference card.
- B. Pope y A. van IJzendoorn. A tour of the Haskell prelude.
- A. van IJzendoorn. Tour of the Haskell syntax.
- M. Nic. Haskell reference.
- Prelude.
- Haskell Hierarchical Libraries.
Buscador de funciones de Haskell
Ejercicios de Haskell
Cursos sobre programación funcional con Haskell
- J.A. Alonso. Programación declarativa (2008-09).
- J.E. Gallardo. Programación declarativa - Haskell.
- G. Hutton. Functional programming.
- P. Wadler. Informatics 1 – Functional programming.
Cálculo simbólico
- J.A. Alonso. Resumen de funciones de Maxima.
- J. Arántegui. Introducción a Maxima.
- R. Rodríguez. Maxima con wxMaxima: software libre en el aula de matemáticas.
- M. Rodríguez. Primeros pasos en Maxima.
Sistemas
En esta sección se encuentran enlaces a los sistemas utilizados en la asignatura "Informática" y a los procedimientos de instalación.
Instalación de los sistemas en Windows
Los ficheros para instalar los sistemas en Windows son los siguientes
Instalación de los sistemas en Ubuntu
Se pueden instalar los sistemas en Ubuntu con el gestor de paquetes Synaptic, buscando los paquetes ghc6, emacs23, haskell-mode, quickcheck2, maxima y wxmaxima.
Además, copiar en el directorio del usuario el fichero de configuración de emacs.
Instalación de los sistemas en Mac
Los pasos de la instalación en Mac son los siguientes:
- Instalar MacPorts usando su guía de instalación.
- Instalar aquamacs desde aquí.
- Configurar aquamacs: En la pestaña Options seleccionar Option, Command, Meta keys y después Meta & Spanish .
- Instalar la plataforma Haskell desde aquí.
Sitios de los sistemas
Los sitios oficiales de los sistemas son los siguientes