Organización de las prácticas
Los alumnos debían realizar cinco prácticas obligatorias y cuatro trabajos optativos de profundización sobre algunas partes del temario. Las prácticas fueron:
- Reimplementación de un algoritmo voraz.
- Desarrollo de un algoritmo de vuelta atrás y otro de ramificación y poda.
- Eliminación de redundancia en un algoritmo con recursividad múltiple.
- Desarrollo de un algoritmo de programación dinámica.
- Desarrollo de un algoritmo heurístico y comparación con algoritmos exactos.
La práctica 5 es la más interesante ya que cierra la asignatura dando una visión global de la misma, por lo que a continuación nos centramos en ella. El enunciado de la práctica repetía la especificación del problema de selección de actividades ponderadas, ya conocido por los alumnos. A los alumnos se les exigía que utilizaran OptimEx para comparar la optimidad de al menos 3 algoritmos. Se les proporcionaba un algoritmo voraz basado en orden creciente de duración. Un segundo algoritmo debían tomarlo los alumnos de su práctica 1 y adaptarlo al nuevo problema. Por último, podían tomar otros algoritmos desarrollados en las prácticas 2 y 4. Suponiendo que los algoritmos estuvieran correctamente desarrollados, la respuesta esperada era que los algoritmos de vuelta atrás, ramificación y poda o programación dinámica eran óptimos mientras que los algoritmos voraces, no.
La práctica podía hacerse individualmente o en parejas. La sesión presencial duró 2 horas.