General information


Subject type: Mandatory

Coordinator: Adso Fernández Baena

Trimester: Second term

Credits: 6

Teaching staff: 

Enric Sesa Nogueras

Teaching languages


The classes are in Catalan. Most of the documentation (including practice and exam statements) is in English. 

Skills


Basic skills
  • B2_That students know how to apply their knowledge to their job or vocation in a professional way and have the skills they demonstrate by developing and defending arguments and solving problems within their area of ​​study

     

  • B5_That students have developed those learning skills necessary to undertake further studies with a high degree of autonomy

     

Specific skills
  • EFB5_Knowledge of the structure, organization, operation and interconnection of information systems, the fundamentals of their programming and their application for solving engineering problems

     

  • EIS1_Ability to develop, maintain and evaluate software services and systems that meet all user requirements and that behave reliably and efficiently, are affordable to develop and maintain and comply with quality standards, applying theories, principles, methods and software engineering practices

     

  • EIS4_Ability to identify and analyze problems and design, develop, implement, verify and document software solutions based on adequate knowledge of current theories, models and techniques

     

Transversal competences
  • T1_That students know a third language, which will be preferably English, with an adequate level of oral and written form, according to the needs of the graduates in each degree

     

Description


In this subject, the most relevant concepts, problems and practices of concurrent programming are introduced from an eminently practical point of view.

This subject has methodological and digital resources to make possible its continuity in non-contact mode in the case of being necessary for reasons related to the Codid-19. In this way, the achievement of the same knowledge and skills that are specified in this teaching plan will be ensured. 

The Tecnocampus will make available to teachers and students the digital tools needed to carry out the course, as well as guides and recommendations that facilitate adaptation to the non-contact mode. 

Learning outcomes


This subject contributes to some of the learning outcomes specified for the subject to which it belongs (Distributed Applications). Specifically, at the end of the course the student must be able to

  • LO1: Design, write, test, debug, document and maintain code in a high-level language to solve programming problems by applying algorithmic schemes and using data structures.
  • LO2: Understand the need for concurrency in programming, the associated logical problems and the main solutions.
  • LO3: Know and be able to use the usual constructions in programming languages ​​to manage concurrency.
  • LO4: Describe the most relevant paradigms of concurrency, parallelism and distributed systems.
  • LO5: Describe the problem of destructive interference and its effects. Describe different solutions to the need for mutual exclusion (traffic lights, monitors ...)
  • LO6: Describe the situation of a deadlock and associated conditions.
  • LO7: Describe the properties of safety and liveness.
  • LO8: Describe the client / server architecture
  • LO9: Implement concurrent designs in a high-level programming language that offers tools specifically aimed at concurrent / parallel programming.
  • LO10: Reason formally and / or semi-formally about the correction of a concurrent design.
  • LO11: Determine the factors that negatively affect the security and reliability of a hardware / software system and minimize their effects.

 

Working methodology


The subject will be based on a master class methodology in which activities of a practical nature will be inserted. There will also be some laboratory sessions that will be eminently practical. Often, during the sessions, students will be asked to solve and exercises. 

Contents


1.- Fundamental concepts

  • Programs, processes, and threads
  • Parallelism Vs. concurrence
  • Architectures

2.- Implementation of processes and threads

  • Threads in Java: the Thread class and the Runnable interface
  • Life cycle of a thread

3.- Interference and the problem of the critical section

  • Interference
  • Mutual exclusion
  • Algorithms that guarantee mutual exclusion

4.- Tools

  • Test & Set
  • Traffic lights
  • Monitors

5.- Deadlock, safety & liveness

6.- Distributed systems

Learning activities


Various activities of an eminently practical nature (short exercises, problems) are made available to students, which are the basis of the learning activities of the subject. Some of these activities will have to be solved by the students in a non-contact way following the instructions of the teacher (s) and will also be worked in class, either as examples in the theory sessions, or in the sessions of laboratories. Some of these activities will be optional while others will be mandatory as they will have weight in the evaluation system of the subject. All the activities, both compulsory and optional, will be designed to achieve the theoretical-practical knowledge of the subject. 

In order to gather evidence of the achievement of the expected learning outcomes, the following evaluative activities will be carried out:

  • Three practices aimed at collecting evidence of the most practical learning outcomes: RA1, RA2, RA3, RA9 and RA10.

At the competence level, these three practices, which will mostly have to be developed in a non-contact time, affect all the common and specific competences of the subject, especially with regard to the practical application of the knowledge that these competences mention (when where appropriate, the most relevant aspects of each competence to which the subject contributes are indicated in brackets):

  • CIN1 (develop software ensuring reliability and security),
  • CIN3 (effective work habits in software development environments)
  • CIN5 (maintain software),
  • CIN6 (apply algorithmic procedures),
  • CIN7
  • CIN8 (build and maintain robust applications),
  • CIN13 (knowledge and application of the necessary tools for storage)
  • EFB5 (fundamentals of parallel / concurrent programming)
  • EIS1 (develop reliable software systems applying principles, methods and practices of software engineering)
  • EIS4

 

  • Multiple exercises, problems and questionnaires distributed throughout the course and carried out during class sessions. These are intended to collect evidence of all learning outcomes, with special emphasis on those that have a more theoretical nature: RA4, RA5, RA6, RA7, RA8 and RA11 but without ruling out the rest. At the competence level, this set of tests aims to affect all the common and specific competencies of the subject, except for CIN3, which is specific to the most applied tasks.

 

In order to pass (pass) the assessment activities, students will have to demonstrate

  • That they have acquired the theoretical knowledge related to the contents of the subject and that their understanding allows them to put them into practice [MECES-2 point a, point c]
  • That they can develop solutions to problems that, although they may be similar to others seen above, present aspects that are new [MECES-2 point f]

In relation to the basic competences assigned to the subject, these are covered especially with regard to the aspects that are explained:

  • CB2: problem solving within their area of ​​study.
  • CB5: development of learning skills needed for further studies (autonomous access to documentation, effective work habits)

Finally, and with regard to the transversal competence associated with the subject (CT1: knowledge of a third language), this is worked on from the documentary sources that students must consult, since all of them are in English. All the written material of the subject (notes, problem statements, practice statements, ...) is distributed exclusively and only in English.

Evaluation system


The final grade of the subject (QF) will be calculated based on the grade of the laboratory practices (Pr, 50%) and a final exam (Ex, 50%)

 

QF = Ex and Ex <4

QF = 0.5· Ex + 0.5· Pr and Ex ≥ 4


Students with QF <5 will be able to take a resit exam that will replace the first Ex grade in the QF calculation. In case of having to take the resit exam, the final grades in the range [5, 7.5) will be rounded to 5. The final grades in the range [7.5, 10] will be rounded to 7.


Any activity carried out fraudulently or without respecting the rules specified for it will be valued at 0 points and may lead to a final grade (FM) of 0 points. This includes, but is not limited to, copying and plagiarizing practices and exercises regardless of the role played (origin or destination).

 

REFERENCES


Basic

Ben-Ari, M .. Principles of concurrent and distributed programming. 2006. Essex: Pearson, 2006. ISBN 9780321312839.

Palma Méndez, José Tomás et al ,. Concurrent programming. Madrid: International Thomson, 2003. ISBN 8497321847.

Complementary

Magee, Jeff; Kramer, Jeff. Concurrency: state models & Java programs. 2nd ed. Chichester: John Wiley & sons, 2006. ISBN
0470093552.