Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Adso Fernández Baena

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 disposa de recursos metodològics i digitals per a fer possible la seva continuïtat en modalitat no presencial en el cas de ser necessari per motius relacionats amb la Codid-19. D'aquesta forma s'assegurarà l'assoliment dels mateixos coneixements i competències que s'especifiquen en aquest pla docent. 

El Tecnocampus posarà a l'abast del professorat i l'alumnat les eines digitals necessàries per poder dur a terme l'assignatura, així com guies i recomanacions que facilitin l'adaptació a la modalitat no presencial. 

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.


Qualsevol activitat realitzada de manera fraudulenta o sense respectar les normes que per a ella s'especifiquin serà valorada amb 0 punts i podrà comportar una qualificació final (FM) de 0 punts. Això inclou, però no es limita a,  la còpia i el plagi de pràctiques i exercicis independentment del rol desenvolupat (origen o destí).

 

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.