Versión imprimible Curso Académico
Técnicas de Programación
Curso 2017/18
1. Datos Descriptivos de la Asignatura
ASIGNATURA: Técnicas de Programación 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: - Área/s de conocimiento:
  • Astronomía y Astrofísica
- Curso: 2
- Carácter: Optativo
- Duración: Cuatrimestral
- Créditos ECTS: 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 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] 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
- Profesor/a:
-Temas (epígrafes):


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.
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 / sala de demostraciones / prácticas laboratorio)  15.00      15  [CB6], [CB7], [CG1], [CE8]
Estudio/preparación clases teóricas     20.00   20  [CG1], [CE11]
Estudio/preparación clases prácticas     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.


Estrategia Evaluativa
TIPO DE PRUEBA COMPETENCIAS CRITERIOS PONDERACIÓN
Pruebas objetivas  [CB7], [CB8], [CG1], [CE11]   Examen teórico al finalizar el
curso. 
 50% 
Trabajos y proyectos  [CB6], [CB10], [CE8]   Entregables   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) 

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 Fortran90.
Ejercicios básicos con Fortran90 en el CCA 
 4.00   6.00   10 
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. 
 4.00   6.00   10 
Semana 3:  3   Ejercicios sobre recursividad   4.00   6.00   10 
Semana 4:  4   Teoría de punteros y tipos derivados.
Ejercicios sobre punteros y tipos derivados 
 4.00   6.00   10 
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. 
 4.00   6.00   10 
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. 
 4.00   6.00   10 
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.   4.00   6.00   10 
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


Fecha de última modificación: 24-07-2017
Fecha de aprobación: 19-07-2017