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:
- En la página Temas están los apuntes de los temas en HTML. En cada tema, están los enlaces a sus versiones alternativas (en PDF y en Jupyter), a su vídeo y a su código.
- En el libro Temas de Programación funcional están las transparencias de la introducción a la programación funcional (no incluye los temas de algorítmica ni los complementarios).
- En la página Temas interactivos de programación funcional están los temas en forma de libro interactivo con Jupyter.
- En la lista Vídeos de “Programación funcional con Haskell los vídeos de los temas.
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
para instalar Haskell, las librerías necesarias y verificar todos los ejemplos.
test - 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:
- El repositorio Exámenes de I1M con los exámenes propuestos desde el curso 2009-10 hasta el 2019-20, con las soluciones de todos los ejercicios.
- El libro Exámenes de programación funcional con Haskell con los exámenes de los 10 primeros cursos.
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:
- En el curso 2009-10 comienza a impartirse la asignatura y se publica la primera versión de los apuntes en PDF generado con LaTeX.
- En el curso 2010-11 se amplía el contenido con la parte de algorítmica.
- En el curso 2013-14 se amplía el contenido con 3 temas de dibujos con Gloss (dibujos, fractales y animaciones). Estos nuevos temas están sólo en la versión en HTML.
- En el curso 2014-15 se amplía el contenido con un tema de complejidad y otro sobre los diccionarios. Estos nuevos temas están sólo en la versión HTML.
- En el curso 2015-16 se publica la versión en HTML generado con Markdown. A partir de entonces, las ampliaciones se hacen en la versión HTML (por ejemplo, la últimas secciones del tema 13 sobre gráficas y manejo de ficheros están en la versión HTML y no lo está en la versión PDF).
- En el curso 2016-17 se amplía el contenido con un tema de gráficos con CodeWorld que se explica el primer día de clase. También se amplía el contenido del tema de definiciones por compresión para incluir la sección Comprensión y dibujos
- En el curso 2017-18 se amplía el contenido del tema de definiciones por recursión para incluir la sección Recursión y dibujos. También se añade un tema sobre programación dinámica.
- En el curso 2019-20 se añaden dos nuevos formatos de los temas: una interactiva (con Jupyter) y otra con los vídeos de clase.
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:
- En el curso 2009-10 se publicó el Resumen de funciones de Haskell.
- En el curso 2013-14 se publicaron los manuales de las librerías de vectores y de matrices con ejemplos de las funciones principales.
- En el curso 2014-15 se publicaron los manuales de las funciones básicas y las librerías de tipos abstractos de datos, números primos, conjuntos y diccionarios.
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.