Información general


Tipo de asignatura: obligatoria

Coordinador: Ana Beatriz Pérez Zapata

trimestre: Segundo trimestre

Créditos: 6

Profesorado: 

Enric Sesa Nogueras

Idiomas de impartición


  • Català

Las clases están en catalán. La mayor parte de la documentación (incluidos los enunciados de prácticas y exámenes) están en inglés. 

Competencias


competencias básicas
  • B2_Que los estudiantes sepan aplicar sus conocimientos en su trabajo o vocación de una forma profesional y tengan las competencias que demuestran mediante la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio

     

  • B5_Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía

     

Competencias específicas
  • EFB5_Conocimiento de la estructura, organización, funcionamiento e interconexión de los sistemas informátis, los fundamentos de su programación y su aplicación para la resolución de problemas propios de la ingeniería

     

  • EIS1_Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y que se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la ingeniería del software

     

  • EIS4_Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales

     

competencias transversales
  • T1_Que los estudiantes conozcan un tercer idioma, que será preferentemente el inglés, con un nivel adecuado de forma oral y por escrito, de acuerdo con las necesidades que tendrán las graduadas y graduados en cada titulación

     

Descripción


En esta asignatura se introducen, desde una vertiente eminentemente práctica, los conceptos, problemas y prácticas más relevantes de la programación concurrente.

Esta asignatura debería cursarse después de haber superado la asignatura Sistemas Operativos

 

Contenidos


1.- Conceptos fundamentales

  • Programas, procesos, e hilos
  • Parel·lelisme vs. concurrencia
  • arquitecturas

2.- Implementación de procesos e hilos

  • Hilos en Java: la clase Thread y la interfaz Runnable
  • Ciclo de vida de un hilo

3.- Interferencia y el problema de la sección crítica

  • interferencia
  • exclusión mutua
  • Algoritmos que garantizan la exclusión mutua

4.- Herramientas

  • Test & Set
  • semáforos
  • Monitores

5.- Deadlock, safety & liveness

6.- Sistemas distribuidos

Sistema de evaluación


La calificación final de la asignatura (QF) se calculará en función de la calificación de las prácticas de laboratorio (Pr, 50%) y de un examen final (Ex, 50%)

 

QF = Ex si Ex< 4

QF = 0.5·Ex + 0.5·Pr si Ex >= 4


Los estudiantes con QF < 5 podrán realizar un examen de recuperación que sustituirá a la primera calificación Ex en el cálculo de QF. En caso de tener que realizar el examen de recuperación, las calificaciones finales en el intervalo [5, 7.5) serán redondeadas a 5. Las calificaciones finales en el intervalo [7.5, 10] serán redondeadas a 7.

Las prácticas no son recuperables. 


Es responsabilidad del alumno evitar el plagio en todas sus formas. En caso de detectar un plagio, independientemente de su alcance, en alguna actividad evaluativa (incluidas las prácticas), se aplicará el artículo 8 de la normativa de evaluación que comporta el suspenso automático de la asignatura sin posibilidad de recuperación. Además, el profesor comunicará a la Jefa de Estudios la situación para que tome medidas aplicables en materia de régimen sancionador. En el contexto de esta asignatura, plagio también significa utilizar y/o adaptar código que no se haya desarrollado de forma totalmente individual (o en el seno del grupo en el caso de actividades grupales). Facilitar el código que da lugar al plagio es también una forma de plagio y será tratado por igual. De forma resumida podemos decir que las actividades evaluativas deben resolverse de forma estrictamente no colaborativa (en el caso de actividades en grupo la colaboración no puede trascender el seno del grupo). 

 

Bibliografía


Básico

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

Palma Méndez, José Tomás et al ,. Programación concurrente. Madrid: International Thomson, 2003. ISBN 8497321847.

Complementario

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