Identifying Data 2017/18
Subject (*) Concurrency and Parallelism 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
Enxeñaría de Computadores
Coordinador
Paris Fernandez, Javier
E-mail
javier.paris@udc.es
Lecturers
Barreira Rodriguez, Noelia
Fraguela Rodriguez, Basilio Bernardo
González Domínguez, Jorge
Paris Fernandez, Javier
Perez Otero, Ramon
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
jorge.gonzalezd@udc.es
javier.paris@udc.es
ramon.otero@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://moodle.udc.es
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
The student should know basic algorithms and how to apply them to solve problems, analyzing the adequacy and complexity of the proposed concurrent and parallel algorithms. A12
B3
C4
The student should know how to apply the fundamentals of real time, parallel, concurrent and distributed programming. A20
C6
C8

Contents
Topic Sub-topic
T1. Concurrent programming fundamentals 1.1 Concepts
1.1.1 Hardware architectures
1.1.2 Operating Systems
1,1.3 Threads and Processes
1.2 Multiprocess programming (fork/join)
1.3 Multithread programming
1.4 Critical section
1.5 Mutual exclusion
1.6 Atomic instructions
1.7 Condition synchronization
1.8 Semaphores
1.8.1 Mutex
1.8.2 Semaphores
1.9 Deadlock. Prevention, avoidance, recovery
1.10 Starvation
1.11 Communication and synchronization
1.12 Scalability
T2. Concurrent Algorithms 2.1 Producers/consumers.
2.2 Readers/writers
2.3 Dining philosophers
2.4 Shared nothing
T3. Parallel programming principles 3.1 Concepts
3.1.1 Levels of paralellism
3.1.2 Data dependencies
3.2 Message passing model
3.2.1 Basic concepts
3.2.2 Point to point communication
3.2.3 Collective operations
3.3 Analysis of parallel algorithms
3.3.1 Performance measure of parallel algorithms
3.4 Methodology for parallel programming
3.4.1 Task decomposition
3.4.2 Task assignment
3.4.3 Optimization techniques
3.5 Schemes for parallel algorithms
3.5.1 Single Process Multiple Data
3.5.2 Master/slave paradigm
T4. Design of parallel algorithms and applications 4.1 Message passing libraries
4.2 Case of study
4.3 Performance evaluation
4.4 Inclusion of optimization techniques

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 Lecture with audiovisual reinforcement materials, and questions directed at the students to reinforce the transmission of concepts and improve the learning process.
Mixed objective/subjective test Written exam with questions about the content of the lectures and the practical problems solved in the laboratory practice.
Laboratory practice Practical activities aimed at enhancing the comprehension of the material by the students, such as programming exercicies.
Problem solving Solving of concrete problems that appeared during the laboratory practice, possibly exploring multiple solutions.
Seminar Presentation in groups about specific topics for in depth analysis, encouraging discussion and participation by everyone in attendance.

Personalized attention
Methodologies
Laboratory practice
Seminar
Problem solving
Description
During the laboratoy practice, seminars and problem solving sessions students will be able to ask questions about the contents. The teacher, after considering these questions, will reinforce specific topics, solve problems that involve the concepts that are unclear, or any other activity that may help to improve the understanding of the content.

Assessment
Methodologies Competencies Description Qualification
Laboratory practice A12 A20 B3 C8 Practical exercises divided on two blocks: concurrency and parallelism. Each block is worth 50% of the laboratory practice grade. Exercises can be solved in groups of two, but will be graded individually.

It is necessary to get at least 50% of the grade of each block of the laboratory practice in order to pass the subject.

If the grade of either block is less than 50% the student will fail the subject in the June evaluation. In this situation, and student who does the exam in June will get a FAIL grade (SUSPENSO). A student who does not do the exam in June will get a DID NOT REPORT (NO PRESENTADO).
30
Mixed objective/subjective test A12 A20 B3 C4 C6 Exam on the contents explained during the lectures and practiced in the laboratory. There will be two parts: concurrency (topics T1 and T2) and parallelism (topics T3 and T4). Each part is worth 50% of the grade of the mixed test.

In order to pass the subject it is necessary to get at least 40% of the maximum grade.
70
 
Assessment comments

The final grade will be the weighted addition of the mixed test and the laboratory practice grades. In order to pass it is necessary to get at least 50% of the maximum grade. If a grade of 50% or more is achieved but some of the necessary conditions for passing the mixed test and laboratory practice are not met the final grade will be FAIL (4.5).

For the July evaluation only the mixed test will be graded again (70% of the total grade). It is still necessary to get at least 40% of the maximum grade in this exam.

The grade obtained during the term in the laboratory practice (30% of the final grade) will be used for both the June and July evaluations. The evaluation of the laboratoy practice must be done in the group assigned to each student.

No special consideration will be given to students with part time enrollment.


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

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
Algorithms/614G01011
Computer Structure/614G01012
Programming Paradigms/614G01014
Software Design/614G01015

Subjects that are recommended to be taken simultaneously
Operating Systems/614G01016
Networks/614G01017
Software Process/614G01019

Subjects that continue the syllabus
Internet and Distributed Systems/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.