Plan docente de la asignatura

 

 

Cerrar imatge de maquetació

 

Imprimir

 

Datos generales

 

Nombre de la asignatura: Herramientas Informáticas Avanzadas

Código de la asignatura: 572549

Curso académico: 2020-2021

Coordinación: Sergio Madurga Diez

Departamento: Departamento de Ciencia de Materiales y Química Física

créditos: 3

Programa único: S

 

 

Horas estimadas de dedicación

Horas totales 75

 

Actividades presenciales y/o no presenciales

30

(presencialidad: 100%)

 

-  Prácticas de ordenador

Presencial y no presencial

 

30

Trabajo tutelado/dirigido

10

(presencialidad: 20%)

Aprendizaje autónomo

35

(presencialidad: 0 %)

 

 

Competencias que se desarrollan

 

BÁSICAS Y GENERALES

CG2 - Ser capaz de consultar la bibliografía científica, bases de datos y analizar documentos científico-técnicos en inglés.

CG5 - Ser capaz de predecir y controlar la evolución de situaciones complejas mediante el desarrollo de nuevas e innovadoras metodologías de trabajo adaptadas al ámbito científico/investigador, tecnológico o profesional concreto, en general multidisciplinar, en el que se desarrolle su actividad.

CG6 - Desarrollar la autonomía suficiente para participar en proyectos de investigación y colaboraciones científicas o tecnológicas dentro su ámbito temático, en contextos interdisciplinares y, en su caso, con una alta componente de transferencia del conocimiento.

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 (o multidisciplinares) relacionados con su área de estudio

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.

TRANSVERSALES

CT1 - Ser autónomo, dinámico y organizado, con capacidad analítica y de síntesis, con capacidad de análisis crítico y con capacidad de prospectiva.

CT2 - Tener capacidad de autoevaluación y capacidad autocrítica constructiva.

CT4 - Tener capacidad de análisis, de síntesis, de adquirir perspectivas globales y de aplicación de los conocimientos a casos prácticos.

CT5 - Tener la apacidad de tomar decisiones y de adaptación a situaciones nuevas.

ESPECÍFICAS

CE1 - Ser capaz de trabajar en los entornos informáticos que se emplean en el los ámbitos de la modelización atomística y multiescala.

CE2 - Comprender y saber utilizar las estructuras algorítmicas básicas en el contexto de lenguajes de programación de alto nivel.

CE3 - Ser capaz de escribir programas en lenguajes de programación de alto nivel y los conceptos básicos de paralelización y optimización que permitan la ejecución paralela de tareas en el contexto de la modelización computacional atomística y multiescala.

CE4 - Ser capaz de escribir scripts para realizar tareas complejas que involucren diferentes programas y comandos del sistema operativo.

CE15 - Comprender los límites computacionales de aplicación de cada metodología estudiada y ser capaz de discernir para cada caso real de estudio qué aproximación es la más apropiada.

 

 

 

 

 

Objetivos de aprendizaje

 

Referidos a conocimientos

  • Conocer diferentes herramientas colaborativas y entornos de desarrollo.
  • Conocer los algoritmos que permiten generar programas que se ejecutan en paralelo.
  • Programación avanzada en lenguajes de programación de alto nivel.
  • Programación de scripts complejos.

 

Referidos a habilidades, destrezas

  • Saber escribir programas complejos en lenguajes de programación de alto nivel.
  • Saber escribir scripts complejos en lenguajes de programación de alto nivel.
  • Saber optimizar programas escritos en lenguajes de programación de alto nivel.
  • Saber escribir programas complejos que permitan una ejecución en paralelo.

 

Referidos a actitudes, valores y normas

  • Trabajo en grupo

 

 

Bloques temáticos

 

1. High Performance Computing (HPC)

1.1. Concurrent Programming

  • Multitasking and parallel processing
  • Ideal case: Lineal scaling
  • Measurement of efficiency. Amdahl’s Law
  • Concurrency problems
    • Shared objects and mutual exclusion
    • Monitors and synchronization (Semaphores)
    • Deadlock: Dining philosopher’s problem

1.2. Parallel Programming

  • Computer Architecture
    • Uniform memory access (UMA)
      • Shared memory
      • Threads
      • Vectorization: good code practices
    • Non-Uniform memory access (NUMA)
      • Distributed memory
      • Independent processes
      • Message passing communication
    • Hybrid architectures
  • Message Passing Interface (MPI)
  • Practices using MPI: (“Hello world” and similar)

2. Good Programming Practices

2.1. Version control

  • Repositories
  • Git & GitHub

2.2. Writing good code

  • Documentation
  • Style consistency
  • Modularization

2.3. Testing and debugging

2.4. High level - low level programming integration

3. Advanced Tools

3.1. Advanced Bash programming

  • Stdout & stdin
  • Pipes & filters
  • find, awk, sed, xargs

3.2. Automated code compilation tools

  • Dependencies
  • Makefiles / make
    • Targets
    • Variables

3.4. Interactive computational environments

  • Ipython & Notebook

 

 

Metodología y actividades formativas

 

Se utilizarán las siguientes metodologías docentes:

  • Clases magistrales. Para introducir los conceptos del temario, que el estudiante deberá profundizar individualmente
  • Clases prácticas. Actividades prácticas donde el alumno aplica en el aula los conocimientos teóricos en un contexto determinado.
  • Trabajo en grupo. Desarrollo de un proyecto de software.
  • Aprendizaje basado en problemas. El proyecto se basará en problemas planteados por el profesor, y se harán uso de las herramientas explicadas en clase.


 

 

 

Evaluación acreditativa de los aprendizajes

 

La asignatura contiene dos aspectos: (1) ejercicios propuestos y resueltos durante las clases, y (2) trabajo en común desarrollado a lo largo del curso.
 

Ejercicios propuestos en clase (1): 20%

Presentación oral del trabajo realizado (2): 40%

Dossier del trabajo realizado (2): 40%

Los alumnos que tengan una nota superior a 3,5 podrán ser re-evaluados. La re-evaluación consiste en una prueba de escrita que incluye todo el programa de la asignatura y que corresponderá al 100% de la calificación.

 

 

Evaluación única

Dado el carácter eminentemente práctico de la asignatura no se prevé la posibilidad de evaluación única.