Materiales para el estudio de la programación funcional con Haskell

He publicado en GitHub la página Informática con materiales para el estudio de la programación funcional con Haskell cuyo contenido se ha ido creando a lo largo de los 11 años que he impartido la asignatura de Informática en primero del Grado en Matemáticas.

Voy a comentar su contenido siguiendo los apartados de la página y en la última sección comentaré su desarrollo histórico.

1. Temas y códigos

El primer apartado la página es Temas y códigos que contiene los apuntes y códigos de los temas. Los temas están en las siguientes versiones:

Respecto a los códigos de los temas:

  • En el repositorio de Códigos de los temas están los códigos de los temas como un proyecto. Está escrito como un proyecto de forma que basta ejecutar stack test para instalar Haskell, las librerías necesarias y verificar todos los ejemplos.
  • En I1M: Code for the Haskell course taught at the University of Seville, de Hackage, está el código y la documentación de las librerías desarrolladas en el curso.
  • En la página codigosDeTemas están los enlaces a los códigos de los temas usados en los apuntes de los temas.

2. Manuales de funciones Haskell

El segundo apartado es Manuales que contiene las manuales, con ejemplos, de las funciones de las librerías que se usan en el curso.

3. Relaciones de ejercicios

El tercer apartado es Ejercicios que contiene:

  • El repositorio Ejercicios de I1M con las relaciones de ejercicios y sus soluciones. Está escrito como un proyecto de forma que basta ejecutar stack
    test
    para instalar Haskell, las librerías necesarias y verificar todos los ejemplos.
  • El libro Ejercicios de programación funcional con Haskell con los ejercicios del repositorio anterior. Este libro es una compilación de los que he ido publicando cada año, desde el curso 2009-10, con las relaciones del curso como se explica más detalladamente en la última sección. El libro consta de tres partes: introducción a la programación funcional (PF), matemática mediante PF y algorítmica mediante PF. La segunda parte, aunque se plantean como relaciones de ejercicios, en realidad se deben de ver como temas desarrollados por los alumnos.
  • El libro Piensa en Haskell tiene una colección de ejercicios de programación funcional con Haskell. Publicado en el 2012, es una versión preliminar del anterior.
  • El blog Exercitium con los problemas propuestos diariamente desde el curso 2013-14 hasta el 2019-20.

4. Colección de exámenes

El cuarto apartado es Exámenes que contiene:

5. Sistemas utilizados

El quinto apartado es Sistemas donde se indica la forma de instalar Haskell y las librerías usadas en el curso.

6. Enlaces a los cursos que han usado el material.

El sexto apartado es Cursos con los enlaces a los cursos que han usado el material desde el 2009-10 al 2019-20.

7. Enlaces con documentación.

El séptimo apartado es Documentación con enlaces a vídeos, libros y otros recursos sobre Haskell. Su última sección es una colección de enlaces a sitios con ejercicios de programación, algunos de los cuales (como Kattis) se han usado algunos años.

8. Evolución del contenido

Las páginas de los cursos, en las que se puede ver la evolución del contenido, son Curso 2009-10, Curso 2010-11, Curso 2011-12, Curso 2012-11, Curso 2013-11, Curso 2014-15, Curso 2015-16, Curso 2016-17, Curso 2017-18, Curso 2018-19 y Curso 2019-20.

El desarrollo histórico de los temas es el siguiente:

Respecto de los ejercicios, al final de cada curso he publicado un libro con las soluciones de sus ejercicios. Los libros son: Ejercicios del 2009-10, Ejercicios del 2010-11, Ejercicios del 2011-12, Ejercicios del 2012-13, Ejercicios del 2013-14, Ejercicios del 2014-15, Ejercicios del 2015-16, Ejercicios del 2016-17, Ejercicios del 2017-18, Ejercicios del 2018-19 y Ejercicios del 2019-20.

Además, en el verano del 2012 publiqué el libro Piensa en Haskell que contiene una colección de ejercicios de programación funcional en Haskell que incluye ejercicios de los tres primeros cursos.

De igual forma, a lo largo de cada curso he ido publicado las soluciones de sus exámenes. Los libros son Exámenes del 2009-10, Exámenes del 2010-11, Exámenes del 2011-12, Exámenes del 2012-13, Exámenes del 2013-14, Exámenes del 2014-15, Exámenes del 2015-16, Exámenes del 2016-17, Exámenes del 2017-18, Exámenes del 2018-19 y Exámenes del 2019-20.

El desarrollo histórico de los manuales es el siguiente:

Por último, desde el curso 2010-11 he publicado en el blog Vestigium los diarios de clases (con un breve resumen de su contenido) que se iban publicando al final de cada clase. Los diarios (cuyas entradas están en orden cronológico inverso) son: Diario del 2010-11, Diario del 2011-12, Diario del 2012-13, Diario del 2013-14, Diario del 2014-15, Diario del 2015-16, Diario del 2016-17, Diario del 2017-18, Diario del 2018-19 y Diario del 2019-20.

I1M2019: El tipo abstracto de datos de grafos en Haskell

En la clase de hoy del curso de Informática de 1º del Grado en Matemáticas hemos estudiado el tipo abstracto de datos de los grafos y dos de sus implementaciones en Haskell: mediante vectores y matrices de adyacencia.

La clase se ha dado mediante videoconferencia los correspondientes vídeos son

  • El TAD de grafos mediante vectores

  • El TAD de grafos mediante matricess

Los apuntes correspondientes a la clase es la sección 1 del tema 22

Una versión interactiva de los apuntes en IHaskell se encuentra aquí.

I1M2019: El patrón de búsqueda en escalada en Haskell

En la clase de hoy de del curso Informática de 1º del Grado en Matemáticas hemos estudiado la técnica de resolución de problemas mediante búsqueda en escalada en espacios de estados.

En primer lugar se explicó la idea de la búsqueda en escalada y cómo, usando dicha idea, se puede transformar el patrón de búsqueda por primero el mejor en el de búsqueda en escalada. Finalmente, se aplicó el patrón de búsqueda en escalada a la resolución del problema del cambio de monedas.

La clase se ha dado mediante videoconferencia y el correspondiente vídeo es

Los apuntes correspondientes a la clase es la sección 3 del tema 23

Una versión interactiva de los apuntes en IHaskell se encuentra aquí.

El código del problema del cambio de monedas usado en la clase es
Read More “I1M2019: El patrón de búsqueda en escalada en Haskell”

I1M2019: El patrón de búsqueda por primero el mejor en Haskell

En la clase de hoy de del curso Informática de 1º del Grado en Matemáticas hemos estudiado la técnica de resolución de problemas mediante búsqueda informada en espacios de estados.

En primer lugar se estudiaron los algoritmos búsqueda con información (coste, heurística y A*). A continuación se estudió cómo adaptar el patrón de búsqueda ciega a búsqueda informada usando las colas de prioridad. Finalmente, se aplicó el patrón de búsqueda por primero el mejor a la resolución del problema del 8 puzzle.

La clase se ha dado mediante videoconferencia los correspondientes vídeos son

  • Algoritmos de búsqueda informada en espacios de estados

  • El patrón de búsqueda por primero el mejor en Haskell

Los apuntes correspondientes a la clase es la sección 3 del tema 23

Una versión interactiva de los apuntes en IHaskell se encuentra aquí.

El código de la primera solución del problema del 8 puzzle usado en la clase es
Read More “I1M2019: El patrón de búsqueda por primero el mejor en Haskell”

Vídeos de las clases de algorítmica con Haskell

Con motivo de la pandemia hemos tenido que pasar la docencia al formato no presencial.

En la asignatura de Informática de 1º de Matemáticas el cambio ha tenido lugar al principio de la segunda parte del curso en el que aplica la programación funcional con Haskell, estudiada en la primera parte, a problemas de algorítmica.

Todas las clases no presenciales las he dado por videoconferencia y he subido sus vídeos a YouTube. En este momento hay 16 vídeos correspondientes a las 9 clases no presenciales impartidas: