Técnicas de Programación
(Curso Académico 2023 - 2024)
Mostrar Todo


Nota informativa: Atendiendo a la normativa de Protección de Datos y propiedad intelectual en la que se limita la publicación de imágenes de terceras personas sin su consentimiento, aquellos que difundan grabaciones de las sesiones de clase sin previo consentimiento de las personas implicadas, serán responsables ante la ley del uso prohibido de las citadas grabaciones.



1. Datos descriptivos de la asignatura
  • Código: 275462135
  • Centro: Escuela de Doctorado y Estudios de Postgrado
  • Lugar de impartición: Facultad de Ciencias. Sección de Física
  • Titulación: Máster Universitario en Astrofísica
  • Plan de Estudios: 2013 (publicado en 11-02-2014)
  • Rama de conocimiento: Ciencias
  • Itinerario/Intensificación:
  • Departamento/s:
  • Área/s de conocimiento:
    • Astronomía y Astrofísica
  • Curso: 2
  • Carácter: Optativo
  • Duración: Primer cuatrimestre
  • Créditos ECTS: 3,0
  • Modalidad de impartición: Presencial
  • Horario: Ver horario
  • Dirección web de la asignatura: Ver web de la asignatura
  • Idioma: Castellano e inglés
2. Requisitos de matrícula y calificación
3. Profesorado que imparte la asignatura

Profesor/a Coordinador/a: HANNU PARVIAINEN

General:
Nombre:
HANNU
Apellido:
PARVIAINEN
Departamento:
Astrofísica
Área de conocimiento:
Astronomía y Astrofísica
Grupo:
Contacto:
Teléfono 1:
Teléfono 2:
Correo electrónico:
hparviai@ull.es
Correo alternativo:
hannu@iac.es
Tutorías primer cuatrimestre:
DesdeHastaDíaHora incialHora finalLocalizaciónPlantaDespacho
Todo el cuatrimestre Lunes 11:00 13:00 Instituto de Astrofísica de Canarias - EX.1A IAC IAC
Todo el cuatrimestre Miércoles 11:00 13:00 Instituto de Astrofísica de Canarias - EX.1A IAC IAC
Todo el cuatrimestre Jueves 11:00 13:00 Instituto de Astrofísica de Canarias - EX.1A IAC IAC
Observaciones: El horario de las tutorías es orientativo, pero se puede acordar otro horario previo contacto por email.
Tutorías segundo cuatrimestre:
DesdeHastaDíaHora incialHora finalLocalizaciónPlantaDespacho
Observaciones:
4. Contextualización de la asignatura en el plan de estudio
  • Bloque formativo al que pertenece la asignatura:
  • Perfil profesional:
5. Competencias

Competencia Específicas

  • CE8 - Saber programar, al menos, en un lenguaje relevante para el cálculo científico en Astrofísica
  • CE11 - Saber utilizar la instrumentación astrofísica actual (tanto en observatorios terrestres como espaciales) especialmente aquélla que usa la tecnología más innovadora y conocer los fundamentos de la tecnología utilizada

Competencias Generales

  • 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

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

Exclusiva de la Especialidad de Teoría y Computación

  • CX2 - Aplicar los conocimientos de informática, Física, Astrofísica y computación para construir simulaciones numéricas de fenómenos o escenarios astrofísicos
6. Contenidos de la asignatura

Contenidos teóricos y prácticos de la asignatura

Profesor: Hannu Parviainen
Temas (epígrafes):
- Conceptos básicos de Fortran90.
- Depuradores de código (debuggers).
- Programación paralela: conceptos básicos. El estándar 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

Impartición de temas, los materiales educativos, los ejercicios de ejemplos y prácticas, y los exámenes serán en inglés.
7. Metodología y volumen de trabajo del estudiante

Descripción

El objetivo de esta asignatura es que el alumnado 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 sea capaz de implementar en Fortran 90 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.
Las clases se dividirán entre clases teóricas (aprox. 1/2) y clases prácticas (aprox. 1/2) donde el alumnado pondrá en práctica los conocimientos aprendidos. Asimismo, 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 0,00 15,0 [CB10], [CB8], [CG1], [CE11], [CE8]
Clases prácticas (aula/ laboratorio/centro de calculo/observatorio) 15,00 0,00 15,0 [CX2], [CB7], [CB6], [CG1], [CE8]
Realización de trabajos (individual/grupal) 0,00 35,00 35,0 [CX2], [CB10], [CB8], [CB7], [CB6], [CG1], [CE11], [CE8]
Estudio/preparación de Clases 0,00 10,00 10,0 [CX2], [CB6], [CG1], [CE11], [CE8]
Total horas
Total ECTS
8. Bibliografía / Recursos

Bibliografía básica

W.S. Brainerd "Guide to Fortran 2008 Programming" (London: Springer, 2015).
P.S. Pacheco "Parallel Programming with MPI" (San Francisco, CA: Morgan Kaufmann, 1997).
W. Gropp, E. Lusk, A. Skjellum "Using MPI: Portable Parallel Programming with the Message-Passing Interface" (3rd ed., Cambridge, MA: The MIT Press, 2014).

Bibliografía complementaria

M. Metcalf, J. Reid, M. Cohen "Modern Fortran Explained" (2nd ed., NY: Oxford University Press, 2018). If the last edition of this book is not available, it can be substituted by previous editions from the same authors: "Modern Fortran Explained" (1st ed., 2011), "Fortran 95/2003 Explained" (2004), or "Fortran 90/95 Explained" (1996, 1999).

Otros recursos

9. Sistema de evaluación y calificación

Descripción

Esta asignatura, con contenido predominantemente práctico, solo puede pasar por evaluación continua de las tres siguientes etapas con 1/3 de la nota final por cada una:
  1. 33.3% Entregable práctico 1 sobre recursividad y punteros. Disponible: semana 4. Entrega: semana 8.
  2. 33.3% Entregable práctico 2 sobre programación en paralelo. Disponible: semana 7. Entrega: semana 11.
  3. 33.3% Examen teórico de tipo quiz. Al final del curso. Podemos hacerlo justo después de la entrega del proyecto práctico 2, o retrasarlo para más tarde hasta la fecha oficial del examen de enero.
Para superar la asignatura se requiere aprobar cada una de las prácticas, así como el examen teórico. En caso de no superar la evaluación continua en la primera convocatoria, se permite la recuperación de partes de la continua (las otras notas se guardarán) en la segunda convocatoria, en la que mantenemos la misma modalidad de evaluación continua.

Estrategia Evaluativa

Tipo de prueba Competencias Criterios Ponderación
Pruebas objetivas [CB8], [CB7], [CG1], [CE11] Corrección y precisión en las respuestas en el exámen teórico. 33,33 %
Trabajos y proyectos [CX2], [CB10], [CB6], [CE8] Demostración de las capacidades de aplicar los conocimientos adquiridos para resolver problemas en dos entregables prácticos. 66,67 %
10. Resultados de Aprendizaje
Esta asignatura proporciona conocimientos avanzados de programación en Fortran 90. Se pretende desarrollar conceptos tales como punteros, recursividad y paralelización de códigos de aplicación directa en problemas de la Astrofísica (modelización, análisis, cálculo masivo).
11. Cronograma / calendario de la asignatura

Descripción

Las clases de teoría y práctica se imparten mixtas en el Centro de Cálculo del Alumnado. El orden de los temas puede cambiar según las necesidades y el progreso del grupo.  

En un periodo de 9 semanas se tratarán los siguientes temas:
Tema 1: Introducción a conceptos básicos de Fortran.
Tema 2: Herramientas de desarollo de código, depuración, análisis de rendimiento.
Tema 3: Tipos de datos, estructuras de control.
Tema 4: Introducción al problema de los N-cuerpos, algoritmo Barnes-Hut.
Tema 5: Procedimientos y recursividad en Fortran.
Tema 6: Punteros y tipos derivados en Fortran.
Tema 7: Algoritmo Barnes-Hut en serie en Fortran.
Tema 8: Introducción a la programación en paralelo, estandar MPI.
Tema 9: Llamadas punto a punto en MPI.
Tema 10: Tipos derivados en MPI.
Tema 11: Llamadas colectivas en MPI.
Tema 12: Algoritmo Barnes-Hut en paralelo (dos variantes). Rendimiento teórico de las dos soluciones.

Primer cuatrimestre

Semana Temas Actividades de enseñanza aprendizaje Horas de trabajo presencial Horas de trabajo autónomo Total
Semana 1: 1 y 2 Introducción a conceptos básicos de Fortran. Ejercicios básicos con Fortran. Herramientas de ayuda al desarollo: depuradores, perfilajes, etc. 2.00 3.00 5.00
Semana 2: 3 y 4 Tipos de datos en Fortran, arreglos, estructuras de control de flujo.  El problema de los N-cuerpos, algoritmo Barnes-Hut, órdenes de algoritmos. Necesidad de conceptos más complejos para resolver el problema con el algoritmo Barnes-Hut. 4.00 6.00 10.00
Semana 3: 5 Modularización, funciones y subrutinas, módulos. Procedimientos y recursiviad. Ejercicios sobre recursividad. 2.00 3.00 5.00
Semana 4: 6 y 7 Teoría de punteros y tipos derivados. Ejercicios sobre punteros y tipos derivados. Solución al problema de los N-cuerpos con el algoritmo Barnes-Hut en serie.  Práctica 1 disponible. Tiempo para realizarla: 4 semanas. 4.00 6.00 10.00
Semana 5: 8 y 9 Introducción a la teoría de programación en paralelo. La Interfaz de Paso de Mensajes (MPI). Llamadas punto a punto en MPI.  Ejercicios básicos con MPI. 4.00 6.00 10.00
Semana 6: 10 Tipos derivados en MPI con arreglos y estructuras de datos. 4.00 6.00 10.00
Semana 7: 11 Llamadas colectivas y avanzadas con MPI.  Ejercicios avanzados con MPI.  Práctica 2 disponible.  Tiempo para realizarla: 4 semanas. 4.00 6.00 10.00
Semana 8: 12 Solución al problema de los N-cuerpos con algoritmo Barnes-Hut en paralelo. Estudio y comparación de dos posibles soluciones y sus diferentes rendimientos. 4.00 6.00 10.00
Semana 9: 12 Solución al problema de los N-cuerpos con algoritmo Barnes-Hut en paralelo. Estudio y comparación de dos posibles soluciones y sus diferentes rendimientos. 2.00 3.00 5.00
Total 30.00 45.00 75.00
Fecha de última modificación: 27-06-2023
Fecha de aprobación: 10-07-2023