Como evaluación final de Programación Declarativa, deben entregar un proyecto que va a juntar varias cosas que aprendieron en Haskell. Se espera de ustedes que dediquen entre 4 y 8 horas por semana sobre ese proyecto durante 3 semanas (o el equivalente en menos tiempo).

Pueden trabajar solos o en grupos de 2.

Propuesta de proyecto

Me mandan un mail de unos párrafos a guillaumh@gmail.com, conteniendo su propuesta de proyecto en texto bruto en el cuerpo, y, si hace falta, con unos links útiles. Traten de contestar a las preguntas siguientes:

Escribir la propuesta implica investigar un poco el asunto. ¿Qué librerías Haskell pueden ayudarles a implementar e proyecto? ¿Qué algoritmos existentes van a implementar? ¿El proyecto es alcanzable?

Hay dos tipos de proyectos que pueden hacer:

  1. Contribución a un proyecto de software libre.

    Elegir una librería o aplicación libre en Hackage u otro lado, y contribuir. Pueden arreglar bugs, agregar nuevas funcionalidades y/o documentación.

    Unas ideas de proyectos: darcs pandoc (ver 1 y 2), gitit, xmonad, ghc

    Asegúrense de ponerse en contacto con los autores/mantenedores del software.

  2. Aplicaciones/librerías.

    Pueden escribir una aplicación en Haskell o una librería que haga algo divertido/útil/interesante. Por ejemplo (pero no solamente):

    Un programa que juega contra el usuario (go, truco, poker, damas, ajedrez …), una implementación de estructura(s) de datos interesante(s), un analizador sintáctico (parser) para un pequeño lenguaje de programación, un raytracer, reimplementar un proyecto que ya escribieron en otro lenguaje, reimplementar un programa en línea de comando conocido (grep, netcat, cliente SSH, FTP o IRC, servidor HTTP), un binding para alguna librería existente en C++ (proveer ejemplos que demuestran que funciona)…

Entrega final

Si piensan presentar su proyecto en una fecha de examen final, pónganse en contacto conmigo por mail unos días (en plural) antes.

Mándenme la URL del repositorio de su proyecto. Así puedo hacer recomendaciones para mejorar su proyecto (y su nota).

La entrega final tiene que ser todo el código que escribieron, acompañado de un documento que describe su proyecto (un archivo README.md es suficiente). La documentación tiene que incluir:

Pueden entregar el proyecto de una de las dos manera siguientes:

Criterios de evaluación

A revisar antes de presentar el proyecto…

Aspectos Criterios de evaluación

Previo aviso

  • Indispensable: mandar (una versión casi final de) el proyecto más de 24 horas antes del final

Adecuación

  • Bien: implementa la propuesta
  • Mejor: agrega funciones

Esfuerzo

  • Bien: parece un veradero proyecto
  • Mal: parece un trabajo práctico hecho en 2 horas

Correctitud

  • Mal: No compila, tiene warnings, falla en la ejecución

Técnicas

  • Bien: usa técnicas vistas en clases
  • Mejor: usa técnicas encontradas fuera de clases

Estética

  • Bien: código indentado, uso de módulos, comentarios

Demostración

  • Bien: demostración de menos de 10 minutos,
  • Bien: todos los integrantes del proyecto hablan

Autoría

  • Eliminatorio: plagio
  • Bien: citar fuente código usado si hay

Notas de Proyectos entregados hasta ahora (desde 2015)

# alumnos Descripción Nota
  2

Generador de resumen de textos en HTML

9

  1

Juego de truco en modo texto

6

  1

Intérprete de Chip8

10

  1

Mejoro de un programa de path tracing

7

  2

Resolvedor de Sudoku

8