- Introducción a la shell en entornos Unix (en particular, terminales en GNU/Linux o Mac OSX).
- Sistemas de control de versiones: Git. Repositorios remotos: Github y Bitbucket.
- Creación de programas científicos eficientes. El coste del acceso a datos en memoria. Representación de números en los ordenadores. Aritmética en coma flotante: ¿cómo puede afectar a los resultados de un programa?
- Programación en lenguaje Python orientada a las Matemáticas, las Ciencias y la Ingeniería. Programación interactiva con IPython e Ipython Notebook. Programas interpretados (scripts). Gráficas y visualización de resultados. Testeo de errores. Verificación y validación del código.
- Primera práctica completa en computación científica: resolución mediante diferencias finitas de la ecuación de Poisson.
- Lenguajes compilados más usados en computación científica: introducción a C++ y Fortran 90. Manipulación de arrays. Proyectos Make y ficheros Makefile. Cómo utilizar desde Python nuestros programas C++ o Fortran.
- Segunda práctica: el problema de Poisson en C++ y/o en Fortran 90.
- Introducción a OpenMP: programación paralela en ordenadores con memoria compartida (por ejemplo, ordenadores usuales con varios núcleos)
- Tercera práctica: resolución paralela con OpenMP del problema de Poisson (*).
- Cuarta práctica: resolución paralela con OpenMP de sistemas de ecuaciones dferenciales (*).
- Introducción a MPI en ordenadores con memora distribuida (por ejemplo, supercomputadores formados por clusters de ordenadores).
- Quinta práctica: resolución paralela con MPI del problema de Poisson (*).
- Sexta práctica: resolución paralela con MPI de sistemas de ecuaciones diferenciales (*).
(*) Estas prácticas se realizarán en C++ o bien en Fortran 90/95/2003/2008, según las preferencias de cada estudiante. |