Datos Identificativos 2011/12
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
Prerrequisitos
Departamento Computación
Electrónica e Sistemas
Coordinación
López Taboada, Guillermo
Correo electrónico
guillermo.lopez.taboada@udc.es
Profesorado
Arenaz Silva, Manuel Carlos
Gulias Fernandez, Victor Manuel
López Taboada, Guillermo
Paris Fernandez, Javier
Quintela Carreira, Juan Jose
Rodríguez Álvarez, Gabriel
Correo electrónico
manuel.arenaz@udc.es
victor.gulias@udc.es
guillermo.lopez.taboada@udc.es
javier.paris@udc.es
juan.quintela.carreira@udc.es
gabriel.rodriguez@udc.es
Web http://campusvirtual.udc.es/moodle
Descrición xeral Programación concorrente e paralela.
Problemas típicos: interbloqueo, inanición.
Semáforos. Comunicación e sincronización.
Dependencias. Paso de mensaxes.
Algoritmos concorrentes e paralelos.

Competencias do título
Código Competencias da titulación
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.

Resultados de aprendizaxe
Competencias de materia (Resultados de aprendizaxe) Competencias da titulación
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
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

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 y 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 Instrucciones atómicas
1.7 Sincronización mediante condiciones
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 y sincronización
1.12 Escalabilidad
T2. Algoritmos concurrentes 2.1 Productores/consumidores.
2.2 Lectores/escritores
2.3 Filósofos cenando
2.4 Compartición nula
T3. Principios de programación paralela 3.1 Conceptos
3.1.1 Niveles de paralelismo
3.1.2 Dependencias de datos
3.2 Modelo de paso de mensajes
3.2.1 Conceptos básicos
3.2.2 Comunicación punto a punto
3.2.3 Operaciones colectivas
3.3 Análisis de algoritmos paralelos
3.3.1 Medidas de prestaciones de algoritmos paralelos
3.4 Metodología de la programación paralela
3.4.1Descomposición en tareas
3.4.2 Asignación de tareas
3.4.3 Técnicas de optimización
3.5 Esquemas algorítmicos paralelos
3.5.1 Pool de tareas
3.5.2 Paradigma Master/slave
3.5.3 Esquemas en árbol
3.5.4 Single Process Multiple Data
T4. Diseño de algoritmos y aplicaciones paralelas 4.1 Bibliotecas de paso de mensajes
4,2 Casos de estudio
4.3 Evaluación del rendimiento
4.4 Aplicación de técnicas de optimización

Planificación
Metodoloxías / probas Horas presenciais Horas non presenciais / traballo autónomo Horas totais
Sesión maxistral 25 40 65
Proba mixta 4 0 4
Prácticas de laboratorio 16 24 40
Solución de problemas 10 20 30
Seminario 4 6 10
 
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.
Seminario Presentación en grupo dun tema para o seu estudo intensivo, buscándose a discusión, e a participación dos asistentes ao seminario.

Atención personalizada
Metodoloxías
Prácticas de laboratorio
Seminario
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.

Avaliación
Metodoloxías Descrición Cualificación
Prácticas de laboratorio Realización de varios exercicios prácticos de concorrencia e serie de exercicios prácticos de paralelismo.

É condición necesaria (pero non suficiente) para aprobar a asignatura obter como mínimo o 50% da puntuación máxima das prácticas de laboratorio, así como entregar e superar en prazo tódolos exercicios requeridos. Inda que a realización das prácticas sexa por parellas a súa avaliación é individual. Non entregar ou non superar en prazo a avaliación de calquera dos exercicios plantexados suporá unha cualificación de 0 en prácticas de laboratorio.
30
Proba mixta 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), cada un cun 35% da cualificación final.

É condición necesaria (pero non suficiente) para aprobar obter como mínimo o 30% da puntuación máxima de cada un dos dous bloques, así como obter un mínimo do 40% da puntuación máxima da proba mixta.
70
 
Observacións avaliación

É condición necesaria (pero non suficiente) para aprobar obter unha
cualificación global, aplicando as ponderacións da proba obxectiva e das
prácticas de laboratorio, igual ou superior ao 50%. En caso de obter
unha cualificación global igual ou superior ao 50% pero non cumplir con
algunha das condicións necesarias a cualificación final será un  Suspenso (4.5).

O mecanismo de recuperación que se habilita é exclusivamente a repetición da proba mixta (70% da cualificación global da asignatura), manténdose as condicións necesarias para aprobar requeridas na convocatoria ordinaria de xuño. A cualificación de prácticas de laboratorio (30% da cualificación global da asignatura) obtida na convocatoria ordinaria consérvase para a recuperación.


Fontes de información
Bibliografía básica Francisco Almeida [et al.] (2008). Introducción a la Programación Paralela. Madrid: Paraninfo Cengage Learning
Doug Lea (2001). Programación Concurrente en Java: Principios de Diseño y Patrones. Madrid: Addison Wesley
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
Internet e Sistemas Distribuídos/614G01023

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

Materias que continúan o temario
Programación II/614G01006
Algoritmos/614G01011
Estrutura de Computadores/614G01012
Paradigmas de Programación/614G01014
Deseño Software/614G01015

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