Datos Identificativos 2020/21
Asignatura (*) Concorrencia e Paralelismo Código 614G01018
Titulación
Grao en Enxeñaría Informática
Descriptores Ciclo Período Curso Tipo Créditos
Grao 2º cuadrimestre
Segundo Obrigatoria 6
Idioma
Castelán
Galego
Inglés
Modalidade docente Híbrida
Prerrequisitos
Departamento Ciencias da Computación e Tecnoloxías da Información
Computación
Enxeñaría de Computadores
Coordinación
Paris Fernandez, Javier
Correo electrónico
javier.paris@udc.es
Profesorado
Barreira Rodriguez, Noelia
Darriba López, Diego
Enes Álvarez, Jonatan
Fraguela Rodriguez, Basilio Bernardo
González Domínguez, Jorge
Martín Rodilla, Patricia
Paris Fernandez, Javier
Quintela Carreira, Juan Jose
Sanchez Penas, Juan Jose
Touriño Dominguez, Juan
Correo electrónico
noelia.barreira@udc.es
diego.darriba@udc.es
jonatan.enes@udc.es
basilio.fraguela@udc.es
jorge.gonzalezd@udc.es
patricia.martin.rodilla@udc.es
javier.paris@udc.es
juan.quintela.carreira@udc.es
juan.jose.sanchez.penas@udc.es
juan.tourino@udc.es
Web http://moodle.udc.es
Descrición xeral
Plan de continxencia 1. Modificacións nos contidos
Non se modifican os contidos.

2. Metodoloxías
Todas as metodoloxías manteñense.

3. Mecanismos de atención personalizada ao alumnado

Correo electrónico: Diariamente. Calquera estudiante pode contactar para consultar dúbidas sobre a docencia expositiva, ou os traballos de laboratorio.

Teams. Diariamente. Calquera estudiante pode solicitar unha tutoría por teams, que poderá ser por videoconferencia ou texto segundo o profesorado o estime necesario.

4. Modificacións na avaliación

Non hai modificacións na avaliación.

*Observacións de avaliación:

5. Modificacións da bibliografía ou webgrafía

Non hai modificación.

Competencias do título
Código Competencias do título
A12 Coñecemento e aplicación dos procedementos algorítmicos básicos das tecnoloxías informáticas para deseñar solucións a problemas, analizando a idoneidade e a complexidade dos algoritmos propostos.
A20 Coñecemento e aplicación dos principios fundamentais e técnicas básicas da programación paralela, concorrente, distribuída e de tempo real.
B3 Capacidade de análise e síntese
C4 Desenvolverse para o exercicio dunha cidadanía aberta, culta, crítica, comprometida, democrática e solidaria, capaz de analizar a realidade, diagnosticar problemas, formular e implantar solucións baseadas no coñecemento e orientadas ao ben común.
C6 Valorar criticamente o coñecemento, a tecnoloxía e a información dispoñible para resolver os problemas cos que deben enfrontarse.
C8 Valorar a importancia que ten a investigación, a innovación e o desenvolvemento tecnolóxico no avance socioeconómico e cultural da sociedade.

Resultados de aprendizaxe
Resultados de aprendizaxe Competencias do título
Coñecemento e aplicación dos procedementos algorítmicos básicos das tecnoloxías informáticas para deseñar solucións a problemas, analizando a idoneidade e a complexidade dos algoritmos propostos dende o punto de vista da concorrencia e o paralelismo. A12
B3
C4
Coñecemento e aplicación dos principios fundamentais e técnicas básicas da programación paralela, concorrente, distribuída e de tempo real. A20
C6
C8

Contidos
Temas Subtemas
T1. Principios de programación concurrente 1.1 Conceptos.
1.1.1 Arquitecturas hardware
1.1.2 Sistemas operativos
1,1.3 Procesos e Threads
1.2 Programación Multiproceso (fork/join)
1.3 Programación Multithread
1.4 Sección crítica.
1.5 Exclusión mutua
1.6 Instruccións atómicas
1.7 Sincronización mediante condicións
1.8 Semáforos
1.8.1 Mutex
1.8.2 Semáforos
1.9 Interbloqueo. Prevención, evitación, recuperación.
1.10 Inanición.
1.11 Comunicación e sincronización
1.12 Escalabilidade
T2. Algoritmos concorrentes 2.1 Productores/consumidores.
2.2 Lectores/escritores
2.3 Filósofos ceando
2.4 Compartición nula
T3. Principios de programación paralela 3.1 Conceptos
3.1.1 Niveis de paralelismo
3.1.2 Dependencias de datos
3.2 Modelo de paso de mensaxes
3.2.1 Conceptos básicos
3.2.2 Comunicación punto a punto
3.2.3 Operacións colectivas
3.3 Análise de algoritmos paralelos
3.3.1 Medidas de prestacións de algoritmos paralelos
3.4 Metodoloxía da programación paralela
3.4.1Descomposición en tarefas
3.4.2 Asignación de tarefas
3.4.3 Técnicas de optimización
3.5 Esquemas algorítmicos paralelos
3.5.1 Single Process Multiple Data
3.5.2 Paradigma Master/slave
T4. Deseño de algoritmos e aplicacións paralelas 4.1 Bibliotecas de paso de mensaxes
4.2 Casos de estudo
4.3 Evaluación de rendemento
4.4 Aplicación de técnicas de optimización

Planificación
Metodoloxías / probas Competencias Horas presenciais Horas non presenciais / traballo autónomo Horas totais
Sesión maxistral A12 A20 C4 C6 C8 30 45 75
Proba mixta A12 A20 B3 C4 C6 3 0 3
Prácticas de laboratorio A12 A20 B3 C8 16 24 40
Solución de problemas B3 C6 10 19 29
Proba práctica A20 A12 B3 2 0 2
 
Atención personalizada 1 0 1
 
*Os datos que aparecen na táboa de planificación son de carácter orientativo, considerando a heteroxeneidade do alumnado

Metodoloxías
Metodoloxías Descrición
Sesión maxistral Exposición oral complementada co uso de medios audiovisuais e a introdución de algunhas preguntas dirixidas aos estudantes, coa finalidade de transmitir coñecementos e facilitar a aprendizaxe.
Proba mixta Exame da materia que combinará preguntas sobre a teoría con problemas a resolver.
Prácticas de laboratorio Metodoloxía que permite que os estudantes aprendan efectivamente a través da realización de actividades de carácter práctico, tales como desenvolvemento de exercicios de programación.
Solución de problemas Resolución de problemáticas concretas xurdidas nas prácticas de laboratorio a teor dos coñecementos que se traballaron, os cales poden plantexar múltiples solucións.
Proba práctica Probas de evaluación continua que trata dos contidos vistos nas prácticas e problemas ao longo do curso.

Atención personalizada
Metodoloxías
Prácticas de laboratorio
Solución de problemas
Descrición
Nas práticas de laboratorio, seminarios e na resolución de problemas os estudantes poderán presentar cuestións, dúbidas, etc. O profesor/a, atendendo a estas solicitudes, repasará conceptos, resolverá novos problemas ou utilizará calquera actividade que considere axeitada para resolver as cuestións plantexadas.

As tutorías persoais faranse a través de medios telemáticos.

Avaliación
Metodoloxías Competencias Descrición Cualificación
Proba práctica A20 A12 B3 Probas de evaluación continua realizadas ao longo do curso sobre os temas traballados nas sesión de laboratorio e na docencia expositiva. 20
Prácticas de laboratorio A12 A20 B3 C8 Realización de varios exercicios prácticos de concorrencia (bloque de prácticas de concorrencia) e unha serie de exercicios prácticos de paralelismo (bloque de prácticas de paralelismo). Cada bloque de prácticas representa a metade da nota máxima de prácticas de laboratorio.

Inda que a realización das prácticas pode ser por parellas a súa avaliación é individual.
30
Proba mixta A12 A20 B3 C4 C6 Proba sobre os contidos presentados na docencia expositiva e desenvolvidos nas sesións de laboratorio e nas titorías grupais. Estará dividida en dous bloques: concorrencia (temas 1 e 2) e paralelismo (temas 3 e 4), sendo cada bloque a metade da nota máxima da proba mixta.
50
 
Observacións avaliación

Para aprobar á asignatura é necesario obter unha
cualificación global  igual ou superior ao 50% aplicando as ponderacións da proba obxectiva, das
prácticas de laboratorio e das probas prácticas.

O mecanismo de recuperación que se habilita é exclusivamente a repetición da proba mixta (50% da cualificación global da asignatura).

A cualificación de prácticas de laboratorio (30% da cualificación global da asignatura) e das probas prácticas obtida na convocatoria ordinaria consérvanse para a recuperación. Non é posible recuperar/mellorar para xullo a nota de prácticas de laboratorio. A avaliación das prácticas de laboratorio farase obligatoriamente no grupo asignado a cada alumno.

Non se fará ningunha consideración especial cara aos alumnos con matrícula a tempo parcial.


Fontes de información
Bibliografía básica Doug Lea (2000). Concurrent programming in Java design, principles and patterns . Reading, Massachusetts: Addison Wesley
Francisco Almeida [et al.] (2008). Introducción a la Programación Paralela. Madrid: Paraninfo Cengage Learning
Peter S. Pacheco (1997). Parallel Programming with MPI. San Francisco, California : Morgan Kauffman
Joe Armstrong (2007). Programming Erlang: Software for a Concurrent World. United States: Pragmatic Programmers

Bibliografía complementaria Wilkinson, B. y Allen, M.. (1999). Parallel Programming. Techniques and Applications Using Networked Workstations and Parallel Computers. . Upper Saddle River, New Jersey : Prentice Hall,


Recomendacións
Materias que se recomenda ter cursado previamente
Programación II/614G01006
Algoritmos/614G01011
Estrutura de Computadores/614G01012
Paradigmas de Programación/614G01014
Deseño Software/614G01015

Materias que se recomenda cursar simultaneamente
Sistemas Operativos/614G01016
Redes/614G01017
Proceso Software/614G01019

Materias que continúan o temario
Internet e sistemas distribuidos/614G01023

Observacións


(*)A Guía docente é o documento onde se visualiza a proposta académica da UDC. Este documento é público e non se pode modificar, salvo casos excepcionais baixo a revisión do órgano competente dacordo coa normativa vixente que establece o proceso de elaboración de guías