Identifying Data 2015/16
Subject (*) Concorrencia e Paralelismo Code 614G01018
Study programme
Grao en Enxeñaría Informática
Descriptors Cycle Period Year Type Credits
Graduate 2nd four-month period
Second Obligatoria 6
Language
Spanish
Galician
English
Teaching method Face-to-face
Prerequisites
Department Computación
Electrónica e Sistemas
Coordinador
Rodríguez Álvarez, Gabriel
E-mail
gabriel.rodriguez@udc.es
Lecturers
Barreira Rodriguez, Noelia
Fraguela Rodriguez, Basilio Bernardo
López Taboada, Guillermo
Martin Santamaria, Maria Jose
Paris Fernandez, Javier
Quintela Carreira, Juan Jose
Ramos Garea, Sabela
Rey Expósito, Roberto
Rodríguez Álvarez, Gabriel
Sanchez Penas, Juan Jose
Touriño Dominguez, Juan
E-mail
noelia.barreira@udc.es
basilio.fraguela@udc.es
guillermo.lopez.taboada@udc.es
maria.martin.santamaria@udc.es
javier.paris@udc.es
juan.quintela.carreira@udc.es
sabela.ramos.garea@udc.es
roberto.rey.exposito@udc.es
gabriel.rodriguez@udc.es
juan.jose.sanchez.penas@udc.es
juan.tourino@udc.es
Web http://campusvirtual.udc.es/moodle
General description

Study programme competencies
Code Study programme competences
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.

Learning aims
Learning outcomes Study programme competences
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

Contents
Topic Sub-topic
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 Pool de tarefas
3.5.2 Paradigma Master/slave
3.5.3 Esquemas en árbore
3.5.4 Single Process Multiple Data
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

Planning
Methodologies / tests Competencies Ordinary class hours Student’s personal work hours Total hours
Guest lecture / keynote speech A12 A20 C4 C6 C8 25 40 65
Mixed objective/subjective test A12 A20 B3 C4 C6 3 0 3
Laboratory practice A12 A20 B3 C8 16 24 40
Problem solving B3 C6 10 20 30
Seminar A12 A20 B3 C4 C6 C8 5 6 11
 
Personalized attention 1 0 1
 
(*)The information in the planning table is for guidance only and does not take into account the heterogeneity of the students.

Methodologies
Methodologies Description
Guest lecture / keynote speech 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.
Mixed objective/subjective test Exame da materia que combinará preguntas sobre a teoría con problemas a resolver.
Laboratory practice 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.
Problem solving 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.
Seminar Presentación en grupo dun tema para o seu estudo intensivo, buscándose a discusión, e a participación dos asistentes ao seminario.

Personalized attention
Methodologies
Laboratory practice
Seminar
Problem solving
Description
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.

Assessment
Methodologies Competencies Description Qualification
Laboratory practice 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.

É condición necesaria (pero non suficiente) para aprobar a asignatura obter como mínimo o 50% da puntuación máxima de cada un dos dous bloques de prácticas de laboratorio.

En caso de NON SUPERAR calquera bloque de prácticas non será posible superar a materia en xuño. En caso de que o alumno se presente ao exame de maio a súa calificación en actas será SUSPENSO. Se non se presenta a súa calificación será NON PRESENTADO.


30
Mixed objective/subjective test 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.

É condición necesaria (pero non suficiente) para aprobar obter como mínimo o 40% da puntuación máxima da proba mixta.
70
 
Assessment comments

É 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), requeríndose de novo obter como mínimo o 40% da puntuación máxima da proba
mixta.

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. Non é posible recuperar/mellorar para xullo a nota de prácticas de laboratorio xa que é unha nota obtida en avaliación continua.

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


Sources of information
Basic 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
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

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


Recommendations
Subjects that it is recommended to have taken before
Programming II/614G01006
Algoritmos/614G01011
Estrutura de Computadores/614G01012
Paradigmas de Programación/614G01014
Deseño Software/614G01015

Subjects that are recommended to be taken simultaneously
Sistemas Operativos/614G01016
Redes/614G01017
Proceso Software/614G01019

Subjects that continue the syllabus
Internet e sistemas distribuidos/614G01023

Other comments


(*)The teaching guide is the document in which the URV publishes the information about all its courses. It is a public document and cannot be modified. Only in exceptional cases can it be revised by the competent agent or duly revised so that it is in line with current legislation.