Bibliografía opcional — Clase 0

Estas lecturas son opcionales: no constituyen un requisito para las próximas clases ni serán evaluadas directamente. Se incluyen para quienes quieran profundizar en algunas de las ideas discutidas durante la sesión.

No es necesario leerlas todas. La ruta corta recomendada reúne tres trabajos accesibles que introducen algunos de los principios metodológicos centrales del curso.

Ruta corta recomendada

1. Ingeniería de software para computación científica

Referencia Artículo académico
Wilson, G., Aruliah, D. A., Brown, C. T., Chue Hong, N. P., Davis, M., Guy, R. T., Haddock, S. H. D., Huff, K. D., Mitchell, I. M., Plumbley, M. D., Waugh, B., White, E. P., & Wilson, P. (2014). Best practices for scientific computing. PLOS Biology, 12(1), e1001745.

¿De qué trata?

Presenta recomendaciones concretas para desarrollar software científico más confiable y mantenible: utilizar nombres significativos, automatizar tareas repetitivas, trabajar mediante cambios incrementales, usar control de versiones, reducir la duplicación, escribir pruebas y documentar las decisiones relevantes.

¿Por qué es pertinente para el curso?

Introduce una de nuestras ideas centrales: el software utilizado para producir resultados experimentales también forma parte del aparato científico. Por lo tanto, su diseño, verificación y documentación afectan directamente la calidad de la evidencia obtenida.

2. Inspiración natural y metáforas

Referencia Artículo académico
Aranha, C., Camacho Villalón, C. L., Campelo, F., Dorigo, M., Ruiz, R., Sevaux, M., Sörensen, K., & Stützle, T. (2022). Metaphor-based metaheuristics, a call for action: The elephant in the room. Swarm Intelligence, 16, 1–6.

¿De qué trata?

Es un artículo breve que cuestiona la publicación de algoritmos cuya principal contribución aparente es una nueva metáfora. Las personas autoras no proponen abandonar la inspiración natural, sino describir los algoritmos mediante terminología precisa, identificar claramente su aporte técnico y compararlos de manera justa con métodos competitivos.

¿Por qué es pertinente para el curso?

Se relaciona directamente con la distinción discutida en clases entre la fuente de una intuición y el mecanismo computacional que implementa el algoritmo. Una metáfora puede facilitar la intuición o la comunicación, pero no reemplaza una especificación algorítmica ni demuestra novedad técnica.

3. Reproducibilidad en computación científica

Referencia Artículo académico
Hernandez, J. A., & Colom, M. (2025). Reproducible research policies and software/data management in scientific computing journals: A survey, discussion, and perspectives. Frontiers in Computer Science, 6, 1491823.

¿De qué trata?

Analiza políticas editoriales, herramientas y prácticas de gestión de software y datos en publicaciones de computación científica. El estudio examina 200 artículos y 16 revistas, e identifica diferencias importantes entre las recomendaciones existentes y su adopción efectiva.

¿Por qué es pertinente para el curso?

Profundiza en la idea de que el código, los datos, las configuraciones, las dependencias y los entornos de ejecución deben considerarse parte de la evidencia científica, y no únicamente materiales complementarios.

Trabajos vinculados con la experiencia docente

4. Aplicación de un algoritmo genético a ingeniería de software

Referencia Publicación de conferencia
Slater Muñoz, I., & Bergel, A. (2021). Beacon: Automated test generation for stack-trace reproduction using genetic algorithms. In 2021 IEEE/ACM 14th International Workshop on Search-Based Software Testing (SBST) (pp. 1–7). IEEE.

¿De qué trata?

Presenta una aplicación de algoritmos genéticos a la reproducción automática de errores en programas Python. Las soluciones candidatas son secuencias de instrucciones, y su evaluación considera la capacidad de producir una excepción con la traza buscada.

¿Por qué es pertinente para el curso?

Muestra que la aplicación de una metaheurística requiere tomar decisiones específicas sobre representación, evaluación y operadores. No basta con aplicar selección, cruce y mutación como una receta independiente del problema.

5. Diseño modular de software para computación evolutiva

Referencia Tesis
Slater Muñoz, I. A. (2025). Keen: Kotlin genetic algorithms framework. [Tesis de magíster, Universidad de Chile]. Repositorio Académico de la Universidad de Chile.

¿De qué trata?

Estudia el diseño de un framework de computación evolutiva implementado en Kotlin, con énfasis en modularidad y extensibilidad. Relaciona conceptos de computación evolutiva con decisiones de diseño de software y presenta casos de estudio sobre algoritmos genéticos y programación genética lineal.

¿Por qué es pertinente para el curso?

Ayuda a comprender por qué representaremos operadores, políticas y condiciones de término como componentes explícitos y reemplazables. También ejemplifica cómo conocimientos de ingeniería de software pueden aplicarse al desarrollo de herramientas para computación científica.

Historia y contexto del área

6. Historia y evolución conceptual de las metaheurísticas

Referencia Capítulo de libro
Sörensen, K., Sevaux, M., & Glover, F. (2018). A history of metaheuristics. In R. Martí, P. M. Pardalos, & M. G. C. Resende (Eds.), Handbook of heuristics (pp. 791–808). Springer.

¿De qué trata?

Este capítulo presenta la evolución histórica de las metaheurísticas mediante diferentes períodos, comunidades y cambios de perspectiva.

¿Por qué es pertinente para el curso?

Permite comprender que varios algoritmos precedieron al término metaheuristic y que la identidad del área se construyó después de la aparición de varios de sus métodos más conocidos.

Lectura para retomar al final del curso

7. Componentes, infraestructura y diseño sistemático de metaheurísticas

Referencia Artículo académico
Swan, J., Adriaensen, S., Brownlee, A. E. I., Hammond, K., Johnson, C. G., Kheiri, A., Krawiec, F., Merelo, J. J., Minku, L. L., Özcan, E., Pappa, G. L., García-Sánchez, P., Sörensen, K., Voß, S., Wagner, M., & White, D. R. (2022). Metaheuristics “in the large”. European Journal of Operational Research, 297(2), 393–406.

¿De qué trata?

Propone avanzar desde implementaciones y familias aisladas hacia una infraestructura compartida para diseñar, implementar, analizar y comparar metaheurísticas. Entre sus ideas centrales se encuentran las plantillas extensibles, los componentes reutilizables, las descripciones explícitas de problemas y los protocolos experimentales comunes.

¿Por qué es pertinente para el curso?

Representa especialmente bien la perspectiva general que adoptaremos: estudiar algoritmos mediante sus componentes y decisiones, favorecer implementaciones modulares y construir infraestructura que facilite la experimentación reproducible.

Ruta de lectura sugerida

Una progresión posible para abordar estas lecturas, de lo más introductorio a lo más avanzado:

  1. Wilson et al. (2014): cómo las prácticas de ingeniería pueden mejorar el software científico.
  2. Aranha et al. (2022): por qué una metáfora no basta para explicar, justificar o diferenciar un algoritmo.
  3. Hernandez y Colom (2025): por qué el software y los artefactos computacionales forman parte de la evidencia científica.
  4. Slater Muñoz y Bergel (2021) y Slater Muñoz (2025): cómo estas ideas se aplican en Beacon y Keen, dos herramientas concretas de ingeniería de software para computación evolutiva.
  5. Sörensen et al. (2018) y Swan et al. (2022): contexto histórico del área y una lectura avanzada para retomar al final del curso.