Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Alfons Palacios Gonzàlez

Trimestre: Segon trimestre

Crèdits: 6

Professorat: 

Enric Sesa Nogueras

Idiomes d'impartició


Les classes són en català. La major part de la documentació (inclosos els enunciats de pràctiques i exàmens) són en anglès. 

Competències


Competències bàsiques
  • B2_Que els estudiants sàpiguen aplicar els seus coneixements a la seva feina o vocació d'una forma professional i tinguin les comptències que demostren mitjançant l'elaboració i defensa d'arguments i la resolució de problemes dins de la seva àrea d'estudi

  • B5_Que els estudiants hagin desenvolupat aquelles habilitats d'aprenentatge necessàries per emprendre estudis posteriors amb un alt grau d'autonomia

Competències específiques
  • EFB5_Coneixement de l'estructura, organització, funcionament i interconnexió dels sistemes informàtis, els fonaments de la seva programació i la seva aplicació per a la resolució de problemes propis de l'enginyeria

  • EIS1_Capacitat per a desenvolupar, mantenir i avaluar serveis i sistemes software que satisfacin tots els requisits de l'usuari i que es comportin de forma fiable i eficient, siguin assequibles de desenvolupar i mantenir i compleixin normes de qualitat, aplicant les teories, principis, mètodes i pràctiques de l'enginyeria del software

  • EIS4_Capacitat d'identificar i analitzar problemes i dissenyar, desenvolupar, implementar, verificar i documentar solucions software sobre la base d'un coneixement adequat de les teories, models i tècniques actuals

Competències transversals
  • T1_Que els estudiants coneixin un tercer idioma, que serà preferentment l'anglès, amb un nivell adequat de forma oral i per escrit, d'acord amb les necessitats que tindran les graduades i els graduats a cada titulació

Descripció


En aquesta assignatura s'introdueixen, des d'una vessant eminentment pràctica, els conceptes, problemes i pràctiques  més rellevants de la programació concurrent.

Aquesta assignatura s'hauria de cursar després d'haver superat l'assignatura Sistemes Operatius

 

Resultats d'aprenentatge


Aquesta assignatura contribueix a alguns dels resultats d'aprenentatge especificats per a la matèria a la qual pertany (Aplicacions distribuïdes). Concretament, en acabar l'assignatura l'estudiant haurà de ser capaç de

  • RA1: Dissenyar, escriure, provar, depurar, documentar i mantenir codi en un llenguatge d'alt nivell per a resoldre problemes de programació aplicant esquemes algorísmics i utilitzant estructures de dades.
  • RA2: Conèixer la necessitat de la concurrència en programació, els problemes lògics associats i les principals solucions.
  • RA3: Conèixer i saber utilitzar les construccions habituals en els llenguatges de programació per gestionar la concurrència.
  • RA4: Descriure els paradigmes més rellevants de concurrència, paral·lelisme i sistemes distribuïts.
  • RA5: Descriure el problema de la interferència destructiva i els seus efectes. Descriure diferents solucions a la necessitat d'exclusió mútua (semàfors, monitors ...)
  • RA6: Descriure la situació d'abraçada mortal (deadlock) i les condicions associades.
  • RA7: Descriure les propietats de seguretat (safety) i vivacitat (liveness).
  • RA8: Descriure l'arquitectura client / servidor
  • RA9: Implementar dissenys concurrents en un llenguatge de programació d'alt nivell que ofereixi eines específicament dirigides a la programació concurrent / paral·lela.
  • RA10: Raonar de manera formal i / o semiformal sobre la correcció d'un disseny concurrent.
  • RA11: Determinar els factors que incideixen negativament en la seguretat i fiabilitat d'un sistema hardware/software i minimitzar-ne els efectes.

 

Metodologia de treball


L'assignatura estarà basada en una metodologia de classe magistral en la qual s'inseriran activitats de naturalesa pràctica. També hi haurà algunes sessions de laboratori que seran de caire eminentment pràctic. Sovint, durant les sessions,  es demanarà als estudiants que resolguin i exercicis. 

Continguts


1.- Conceptes fonamentals

  • Programes, procesos, i fils
  • Parel·lelisme vs. concurrència
  • Arquitectures

2.- Implementació de procesos i fils

  • Fils en Java: la classe Thread i la interfície Runnable
  • Cicle de vida d'un fil

3.- Interferència i el problema de la secció crítica

  • Interferència
  • Exclusió mútua
  • Algorismes que garanteixen l'exclusió mútua

4.- Eines

  • Test & Set
  • Semàfors
  • Monitors

5.- Deadlock, safety & liveness

6.- Sistemes distribuits

Activitats d'aprenentatge


Es posa a disposició dels estudiants diverses activitats de naturalesa eminentment pràctica (exercicis curts, problemes) que són la base de les activitats d'aprenentatge de l'assignatura. Algunes d'aquestes activitats els estudiants les hauran de resoldre de manera no presencial seguint les indicacions del(s) docent(s) i també seran treballades a classe, ja sia com a exemples en les sessions de teoria, ja sia en les sessions de laboratori. Algunes d'aquestes activitats tindran caràcter optatiu mentre que d'altres tindran caràcter obligatori atès que tindran pes en el sistema avaluatiu de l'assignatura. Totes les activitats, tant les obligatòries com les optatives seran concebudes per a assolir les coneixements teòrico-pràctics de l'assignatura. 

Amb l’objectiu de recollir evidència de l’assoliment dels resultats d’aprenentatge esperats es realitzaran les següents activitats de caràcter avaluatiu:

  • Tres pràctiques adreçades a recollir evidència dels resultats d’aprenentatge de caire més pràctic: RA1, RA2, RA3, RA9 i RA10.

A nivell competencial aquestes tres pràctiques, que majoritàriament s’hauran de desenvolupar en temps no presencial, incideixen en totes les competències comunes i específiques de l’assignatura, especialment pel que fa a l’aplicació pràctica del coneixement que aquestes competències esmenten (quan s’escau, s’indica entre parèntesis els aspectes més rellevants de cada competència als quals l’assignatura contribueix):

  • CIN1(desenvolupar programari assegurant-ne fiabilitat i seguretat),
  • CIN3(hàbits de treball efectius en els entorns de desenvolupament de software)
  • CIN5(mantenir programari),
  • CIN6(aplicar procediments algorísmics),
  • CIN7
  • CIN8(construir i mantenir aplicacions de forma robusta ),
  • CIN13(coneixement i aplicació de les eines necessàries per a l’emmagatzematge)
  • EFB5(fonaments de la programació paral·lela/concurrent)
  • EIS1(desenvolupar sistemes software fiables aplicant principis mètodes i pràctiques de l’enginyeria del software)
  • EIS4

 

  • Múltiples exercicis, problemes i qüestionaris distribuïts al llarg del curs i realitzats durant les sessions de classe.  Amb aquests es pretén recollir evidència de tots els resultats d’aprenentatge, amb especial èmfasi en aquells que tenen un caire més teòric: RA4, RA5, RA6, RA7, RA8 i RA11 però sense descartar la resta. A nivell competencial, aquest conjunt de proves pretenen incidir en totes les competències comunes i específiques de l’assignatura, llevat de CIN3 que és pròpia de les tasques de caire més aplicat.

 

Per tal de superar (aprovar) les activitats avaluatives, els estudiants hauran de demostrar

  • Que han adquirit els coneixements teòrics relatius als continguts de l’assignatura i que la seva comprensió els permet de portar-los a la pràctica [MECES-2 punt a, punt c]
  • Que poden desenvolupar solucions a problemes que, si bé poden ser semblants a d’altres vistos anteriorment, presenten aspectes que són nous [MECES-2 punt f]

En relació a les competències bàsiques assignades a l’assignatura, aquestes queden cobertes especialment pel que fa als aspectes que s’expliciten:

  • CB2: resolució de problemes dins de la seva àrea d’estudi.
  • CB5: desenvolupament d’habilitats d’aprenentatge necessàries per a estudis posteriors (accés autònom a documentació, hàbits de treball efectius)

Finalment, i pel que fa a la competència transversal associada a l’assignatura (CT1: coneixement tercera llengua) aquesta es treballa a partir de les fonts documentals que els estudiants han de consultar, atès que totes elles es troben en anglès. Tot el material escrit de l’assignatura (notes, enunciats de problemes, enunciats de pràctiques, ...) es distribueix exclusiva i únicament en anglès.

Sistema d'avaluació


La qualificació final de l’assignatura (QF) es calcularà en funció de la qualificació de les pràctiques de laboratori (Pr, 50%) i d'un examen final (Ex, 50%)

 

QF = Ex si Ex< 4

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


Els estudiants amb QF < 5 podran realitzar un examen de recuperació que substituirà la primera qualificació Ex  en el càlcul de QF. En cas d'haver de fer l'examen de recuperació, les qualificacions finals en l'interval [5, 7.5) seran arrodonides a 5. Les qualificacions finals en l'interval [7.5, 10] seran arrodonides a 7.


Es responsabilitat de l'alumne evitar el plagi en totes les seves formes. En el cas de detectar un plagi, independentment del seu abast, en alguna activitat avaluativa (incloses les pràctiques), s'aplicarà l'article 8 de la normativa d'avaluació que comporta el suspens automàtic de l'assignatura sense possibilitat de recuperació. A més, el professor comunicarà a la Cap d'Estudis la situació per a que en prengui mesures  aplicables en matèria de règim sancionador. En el context d'aquesta assignatura, plagi també significa utilitzar i/o adaptar codi que no s'hagi desenvolupat de manera totalment individual (o en el si del grup en el cas d'activitats grupals). Facilitar el codi que dóna lloc al plagi és també una forma de plagi i serà tractat de la mateixa manera. De manera resumida podem dir que les activitats avaluatives s'han de resoldre de manera estrictament no col·laborativa (en el cas d'activitats en grup la col·laboració no pot transcendir el si del grup). 

 

Bibliografia


Bàsic

Ben-Ari, M.. 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.

Complementary

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