Programa

1. Desarrollo de Software

Introducción al desarrollo de software. ¿De qué hablamos cuando hablamos de software científico? Enfoques en eficiencia, resultados correctos. Lenguajes de programación para software científico. Características del software libre y similitudes con el desarrollo científico.

2. Lenguaje interpretado (python)

Introducción a Python. Sintaxis y Zen de Python. Versatilidad: Python como a) imperativo, b) funcional, c) orientado a objetos. Liberías y namespaces.

3. Source Code Management (GIT)

Introducción a git como sistema de control de versiones distribuido. Comandos básicos para trabajo solitario. git para desarrollo colaborativo de software. GitHub.

4. Lenguajes compilados (C / FORTRAN)

Funcionamiento básico de un compilador. Punteros y referencias. Stack de las funciones. Tiempos de compilación vs tiempos de ejecución.

5. Debugging y Profiling

Diferencias entre debugging y profiling para lenguajes compilados e interpretados. Identificar bottlenecks. Estrategias de optimización de hardware (eficiencia de cache, autovectorización) y de software (algoritmos, expansión de polinomios de Horner…). Validación de resultados. Unit test y regression test.

6. Documentación

Cómo escribir documentación eficiente para el usuario y para desarrolladores. Comentarios que ayudan y comentarios que confunden. Herramientas para la generación automática de manuales de referencia.

7. Computación de alto rendimiento

Desafíos y estado del arte. Rendimiento de aplicaciones paralelas. Programación en entornos paralelos. MPI. OpenMP.

Contacto

Ante cualquier duda o consulta, escribir a nuestro correo electrónico: workshop.tpc@gmail.com