Facultad de Ciencias Máster en Astrofísica GUÍA DOCENTE DE LA ASIGNATURA: Técnicas de Programación Curso Académico 2017-2018 Fecha de la última modificación: 24-07-2017 Fecha: 19-07-2017
1. Datos Descriptivos de la Asignatura Código: 275462135 - Centro: Facultad de Ciencias - Titulación: Máster en Astrofísica - Plan de Estudios: 2013 (publicado en 11-02-2014) - Rama de conocimiento: Ciencias - Itinerario / Intensificación: - Departamento/s: Astrofísica - Área/s de conocimiento: Astronomía y Astrofísica - Curso: 2 - Carácter: Optativo - Duración: Cuatrimestral - Créditos ETCS: 3.0 - Horario: http://www.ull.es/view/master/mastrofisica/horarios/es - Dirección web de la asignatura: http://www.campusvirtual.ull.es - Idioma: Castellano e inglés 2. Requisitos para cursar la asignatura No existen requisitos para cursar la asignatura 3. Profesorado que imparte la asignatura Profesor/a Coordinador/a: ANGEL M. DE VICENTE GARRIDO - Grupo: - Departamento: Astrofísica - Área de conocimiento: Astronomía y Astrofísica - Lugar Tutoría: Despacho IAC - Horario Tutoría: Martes, miércoles y jueves 14:30-16:30 - Teléfono (despacho/tutoría): - Correo electrónico: angelv@iac.es - Dirección web docente: http://www.campusvirtual.ull.es 4. Contextualización de la asignatura en el Plan de Estudios - Bloque Formativo al que pertenece la asignatura: - Perfil Profesional: 5. Competencias - 1 -
Competencia Específicas [CE8] Saber programar, al menos, en un lenguaje relevante para el cálculo científico en Astrofísica [CE11] Desarrollar la capacidad de modelizar matemáticamente diversos fenómenos físicos. Competencias Básicas [CB6] Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en el desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación [CB7] Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios [CB8] Que los estudiantes sean capaces de integrar conocimientos y enfrentarse a la complejidad de formular juicios a partir de una información que, siendo incompleta o limitada, incluya reflexiones sobre las responsabilidades sociales y éticas vinculadas a la aplicación de sus conocimientos y juicios [CB10] Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo Competencias General [CG1] Conocer las técnicas matemáticas y numéricas avanzadas que permitan la aplicación de la Física y de la Astrofísica a la solución de problemas complejos mediante modelos sencillos 6. Contenidos de la asignatura Contenidos teóricos y prácticos de la asignatura - Profesor/a: Ángel Manuel de Vicente Garrido - Temas (epígrafes): * CONCEPTOS BÁSICOS DE FORTRAN 90. * DEPURADORES DE CÓDIGO (DEBUGGERS). * PROGRAMACIÓN PARALELA: CONCEPTOS BÁSICOS. EL STANDARD MPI. * PROCEDIMIENTOS, RECURSIVIDAD. * PUNTEROS Y MEMORIA DINÁMICA. * RENDIMIENTO Y OPTIMIZACIÓN DE PROGRAMAS SERIE Y PARALELO * APLICACIÓN DE LA PROGRAMACIÓN EN PARALELO A UN PROBLEMA ASTROFÍSICO. Actividades a desarrollar en otro idioma 7. Metodología y Volumen de trabajo del estudiante Descripción El objetivo de esta asignatura es que el alumno aprenda (ayudado de ejemplos y prácticas con el ordenador) ciertas técnicas avanzadas de programación necesarias para la implementación de multitud de algoritmos habituales en aplicaciones astrofísicas, así como los conceptos básicos de la programación paralela. Se persigue que el alumno sea capaz de implementar en Fortran90 algoritmos complejos que requieran estructuras de datos dinámicas; que adquiera conocimientos básicos de programación paralela y que sepa evaluar de manera teórica y práctica la mejora en el rendimiento que la programación paralela puede introducir en un código. - 2 -
Las clases se dividirán entre clases teóricas (approx. 1/2) y clases prácticas (approx. 1/2) donde el alumno pondrá en práctica los conocimientos aprendidos. Asimismo, el alumno tendrá que realizar dos prácticas obligatorias. Actividades formativas en créditos ECTS, su metodología de enseñanza-aprendizaje y su relación con las competencias que debe adquirir el estudiante Actividades formativas Horas presenciales Horas de trabajo autónomo Total Horas Relación con competencias Clases teóricas 15.00 15 [CB8], [CB10], [CG1], [CE8], [CE11] Clases prácticas (aula / salas de demostraciones / prácticas laboratorio) Estudio/preparación de clases teóricas Estudio/preparación de clases prácticas 15.00 15 [CB6], [CB7], [CG1], [CE8] 20.00 20 [CG1], [CE11] 25.00 25 [CB6], [CG1], [CE8] Total horas 30 45 75 Total ECTS 3 8. Bibliografía / Recursos Bibliografía Básica Fortran 90/95 Explained, Metcalf, M., Raid, J.K., Oxford University Press, 1999 Parallel programming with MPI, Pacheco, P., Morgan Kaufmann, 1996. Using MPI 2nd edition: portable parallel programming with the Message Passing Interface, Gropp, W., Lusk, E., Skjellum, A., The MIT Press, 1999 9. Sistema de Evaluación y Calificación Descripción La evaluación se realizará de la siguiente forma: * examen teórico al final del curso: 50% * entregable práctico n.1 sobre recursividad, punterors, etc.: 25% * entregable práctico n.2 sobre programación en paralelo: 25% Para aprobar la asignatura se requiere tener aprobado el examen teórico, así como cada una de las prácticas. En caso de no aprobar o no presentarse al examen, las notas de las prácticas se guardarán para todas las convocatorias del curso. - 3 -
Estrategia Evaluativa TIPO DE PRUEBA COMPETENCIAS CRITERIOS PONDERACIÓN Pruebas objetivas [CB7], [CB8], [CG1], [CE11] Examen teórico al finalizar el curso. Trabajos y Proyectos [CB6], [CB10], [CE8] Entregables 50% 50% 10. Resultados de aprendizaje El alumno aprenderá los conceptos básicos de Fortran90, junto con conceptos más avanzados (punteros y recursividad) que le permitirán crear programas con estructuras de datos dinámicas y recursivas, para así implementar algoritmos que usen árboles, listas etc. Asimismo, el alumno aprenderá los conceptos básicos de programación en paralelo, y en concreto el uso de la librería MPI, para poder implementar programas paralelos que puedan ejecutarse en cientos o miles de procesadores. Como aplicación práctica, todos estos contenidos se enmarcan en el desarrollo de un código para simulaciones N- body en paralelo (Fortran+MPI) usando el algoritmo Barnes-Hut, para lo cual el alumno tendrá que poner en práctica todos los conceptos arriba mencionados. 11. Cronograma / calendario de la asignatura Descripción Tema 1. Introducción a conceptos básicos de Fortran90 Tema 2. Introducción al problema N-body, algoritmo Barnes-Hut Tema 3. Procedimientos y recursividad en Fortran90 Tema 4. Punteros y tipos derivados en Fortran90 Tema 5. Algoritmo Barnes-Hut en Fortran90 Tema 6. Introducción a la programación en paralelo Tema 7. Operaciones colectivas en MPI Tema 8. Barnes-Hut en paralelo (dos posibles soluciones). Rendimiento teórico de las dos soluciones. Tema 9. Depuradores, profilers (si hay tiempo al final del curso) 1 er Cuatrimestre SEMANA Temas Actividades de enseñanza aprendizaje Horas de trabajo presencial Semana 1: 1 Introducción a conceptos básicos de Fortran90. Ejercicios básicos con Fortran90 en el CCA Semana 2: 2 y 3 Introducción al problema N-body, hilo conductor de la asignatura. Necesidad de conceptos más complejos para resolver N- body con el algoritmo Barnes-Hut. Teoría de procedimientos y recursividad. Horas de trabajo autonomo Total - 4 -
Semana 3: 3 Ejercicios sobre recursividad Semana 4: 4 Teoría de punteros y tipos derivados. Ejercicios sobre punteros y tipos derivados Semana 5: 5 Finalización de ejercicios de recursividad, punteros, etc. y estudio de solución al problema N-body con el algoritmo Barnes- Hut. Práctica 1 disponible. Tiempo para realizarla: 3 semanas. Semana 6: 6 y 7 Introducción a la teoría de programación en paralelo. Operaciones punto a punto y colectivas con MPI. Primeros ejercicios básicos. Práctica 2 disponible. Tiempo para realizarla: 3 semanas. Semana 7: 7 y 8 Ejercicios más avanzados con MPI. Demostración de solución al problema N- body con algoritmo Barnes-Hut y en paralelo. Estudio y comparación de dos posibles soluciones y sus diferentes rendimientos. Semana 8: 9 Herramientas de ayuda al desarrollo: profilers, debuggers, etc. 2.00 3.00 5 Semana 9: 0 Semana 10: 0 Semana 11: 0 Semana 12: 0 Semana 13: 0 Semana 14: 0 Semana 15: 0 Semanas 16 a 18: 0 Total horas 30 45 75-5 -