I1M2017: Programación con Haskell en la Red usando Repl.it

En la segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha explicado cómo programar con Haskell sólo de una conexión a la Red (ya sea en un ordenador que no tiene instalado Haskell, una tableta o un teléfono).

Para ello basta usar el sistema Repl.it que proporciona una sesión en la Red con Haskell (en concreto, la versión 8.0.1 de GHCi).

Como ejemplo se realizó la sesión grabada en el vídeo Haskell con Repl.it.

I1M2017: Resolución de problemas y el método de Polya

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha explicado el método de Polya de resolución de problemas.

La explicación se ha basado en la resolución del problema de cálculo eficiente del conjunto de divisores (que es la primera parte del problema propuesto ayer en Exercitium.

En primer lugar se consideró la solución elemental

Se comprueba que con dicha definición se resuelve los tres primeros ejemplos del enunciado del problema, pero no se resuelve el cuarto ejemplo. Por ello se plantea cómo mejorar la solución. Analizando el problema se ve que la clave está en considerar la factorización prima (que se calcula eficientemente con la función primeFactors de la librería Data.Numbers.Primes.

Trabajando con con ejemplo concreto (el cálculo de los divisores de 24) se observa las transformaciones que hay que hacer a la lista de los divisores primos de 24 para calcularlo.

Además, para una de esas transformaciones vemos que se puede usar otros de los problemas resueltos anteriormente en Exercitium: Producto cartesiano de una familia de conjuntos.

Una vez se tiene un plan para resolver el problema, se confirma haciendo los cálculos en una sesión de GHCi.

Ya sólo queda escribir la definición y comprobar que ha aumentado la eficiencia respecto de la primera solución y es capaz de calcular el cuarto ejemplo del enunciado del problema.

A continuación se comentó el método de Pólya para resolver problemas y se recomendó la lectura del libro de Polya Cómo plantear y resolver problemas.

Revisión de Exercitium

Durante el curso 2013-14 inicié el blog Exercitium como complemento del curso de Informática de 1º del Grado de Matemáticas (I1M) de la Universidad de Sevilla.

El objetivo de Exercitium es plantear diariamente un problema para que los alumnos de I1M puedan practicar y escribir distintas soluciones en los comentarios.

Hasta el momento, en Exercitium se han publicado 514 ejercicios y 2.633 comentarios con soluciones. Además, según las estadísticas de WordPress, el blog ha tenido 118.249 visitas distribuidas como se muestra en la siguiente tabla

Revisión de Exercitium: Visitas mensualesVisitas mensuales

Como se observa, las visitas decrecen en verano (ya que no se proponen ejercicios desde julio hasta noviembre).

La distribución geográfica de las visitas se resume en el siguiente mapa de estadísticas de WordPress

Revisión de Exercitium: MapaMapa de visitas

Se observa que aunque en principio el blog era para las alumnos de I1M, las visitas no se han limitado a España sino que se ha extendido a otros países. Los países con mayor número de visitas son

País Visitas
España 94.730
México 4.754
Colombia 3.252
Estados Unidos 2.533
Perú 2.155
Argentina 1.923
Ecuador 1.666

Aprovechando el período de descanso estival he empezado una revisión de los problemas de Exercitium. La idea es escribir con Stack un proyecto por cada curso y publicarlo en GitHub. De momento, he publicado Exercitium1 con la revisión de los primeros ejercicios del curso 2013-14 y su correspondiente documentación en GitHUb.io.

En la revisión, estoy añadiéndole tests con DocTest, propiedades con QuickCheck y documentación con Haddock.

De esta forma, se facilita la descarga de los ejercicios y su uso. Para ello, basta

  • Instalar Stack (siguiendo sus instrucciones).
  • Descargar el proyecto usando una de las siguientes opciones
    • Descargar el fichero de Exercitium1, descomprimirlo y cambiar al directorio Exercitium1-master.
    • Clonar el repositorio de Exercitium1 con

      y cambiar al directorio Exercitium1.
  • Configurar el proyecto con
  • Construir el fichero con
  • Comprobar que todo está bien con

Durante este verano tengo previsto continuar las revisiones, publicarlas en GitHub y anunciarlas en Twitter con la etiqueta #RevExercitium.