Técnicas de Programación
(Curso Académico 2024 - 2025)
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. Los estándares OpenMP y 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 tres 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 [CE8], [CG1], [CE11], [CB8], [CB10]
Clases prácticas (aula/ laboratorio/centro de calculo/observatorio) 15,00 0,00 15,0 [CE8], [CG1], [CX2], [CB7], [CB6]
Realización de trabajos (individual/grupal) 0,00 35,00 35,0 [CX2], [CB10], [CG1], [CE8], [CE11], [CB7], [CB8], [CB6]
Estudio/preparación de Clases 0,00 10,00 10,0 [CE8], [CG1], [CE11], [CX2], [CB6]
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).

S. Chachon, B. Straub "Pro Git",
https://git-scm.com/book/en/v2

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 programación general en Fortran. Disponible: semana 2. Entrega: semana 5.
  2. 33.3% Entregable práctico 2 sobre programación en paralelo. Disponible: semana 5. Entrega: semana 8.
  3. 33.3% Entregable práctico 3 sobre programación en paralelo. Disponible: semana 7. Entrega: semana 11.
Para superar la asignatura se requiere aprobar cada una de las prácticas. 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
Trabajos y proyectos [CX2], [CB10], [CG1], [CE8], [CE11], [CB7], [CB8], [CB6] Demostración de las capacidades de aplicar los conocimientos adquiridos para resolver problemas en tres entregables prácticos. 100,00 %
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 8 semanas se tratarán los siguientes temas:
Tema 1: Introducción a conceptos básicos de Fortran.
Tema 2: Tipos de datos, estructuras de control.
Tema 3: Procedimientos y recursividad en Fortran.
Tema 4: Punteros y tipos derivados en Fortran.
Tema 5: Herramientas de desarollo de código, depuración, análisis de rendimiento, control de versiones.
Tema 6: Introducción de un problema de programación astrofísica.
Tema 7: Introducción a la programación en paralelo, estandares OpenMP y MPI.
Tema 8: Conceptos básicos de OpenMP.
Tema 9: Conceptos básicos de MPI.
Tema 10: Llamadas colectivas en MPI.
 

Primer cuatrimestre

Semana Temas Actividades de enseñanza aprendizaje Horas de trabajo presencial Horas de trabajo autónomo Total
Semana 1: 1 Introducción a conceptos básicos de Fortran. Ejercicios básicos con Fortran.
 
2.00 3.00 5.00
Semana 2: 2 y 3 Tipos de datos en Fortran. Estructuras de control de flujo.

Modularización, funciones y subrutinas
Módulos. Procedimientos y recursiviad. Ejercicios sobre recursividad.

Práctica 1 disponible. Tiempo para realizarla: 3 semanas.
4.00 6.00 10.00
Semana 3: 3 y 4 Modularización, funciones y subrutinas
Módulos. Procedimientos y recursiviad. Ejercicios sobre recursividad.

Teoría de punteros y tipos derivados. Ejercicios sobre punteros y tipos derivados.
4.00 6.00 10.00
Semana 4: 4 Teoría de punteros y tipos derivados. Ejercicios sobre punteros y tipos derivados. 4.00 6.00 10.00
Semana 5: 5 y 6 Herramientas de ayuda al desarollo: depuradores, perfilajes, y control de versiones.

Introducción de un problema de programación astrofísica.

Práctica 2 disponible. Tiempo para realizarla: 3 semanas.
4.00 6.00 10.00
Semana 6: 7 y 8 Introducción a la teoría de programación en paralelo: OpenMP y MPI.

Conceptos y ejercicios básicos de OpenMP.

 
4.00 6.00 10.00
Semana 7: 9 y 10 Conceptos básicos de MPI.

Llamadas colectivas y avanzadas con MPI.  Ejercicios avanzados con MPI.

Práctica 3 disponible.  Tiempo para realizarla: 4 semanas.
4.00 6.00 10.00
Semana 8: 10 Llamadas colectivas y avanzadas con MPI.  Ejercicios avanzados con MPI. 4.00 6.00 10.00
Total 30.00 45.00 75.00
Fecha de última modificación: 30-06-2024
Fecha de aprobación: 01-07-2024