Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Adso Fernández Baena

Trimestre:2

Crèdits: 6

Professorat: Enric Sesa Nogueras

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.

Si per motius relacionats amb la COVID-19 l'assignatura s'hagués d'impartir en modalitat no-presencial o en alguna  modalitat que representés una disminució sensible de la presencialitat, la metodologia de les sessions s'adaptarà a aquestes  circumstàncies per continuar garantit el necessari equilibri teòric-pràctic. L'objectiu darrer d'aquesta adaptació serà el de preservar al màxim l'assoliment dels coneixements i de les competències especificades en aquest pla docent.

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 trabajo


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 lliurin  exercicis. Aquests exercicis seran una part substancial de l'avaluació de l'assignatura.

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 (40%) i dels exercicis realitzats durant el curs (60%)

 

Ca: qualificació mitjana dels exercicis del curs

Pr: qualificació mitjana de les pràctiques

QF: Qualificació final de l’assignatura

 

QF = Ca si Ca< 4

QF = 0.6·Ca + 0.4·Pr si Ca ≥ 4


Els estudiants amb QF < 5 podran realitzar un examen de caràcter “final” i recuperatori. La qualificació final (QF) màxima en cas d’haver de fer aquest examen serà de 5.


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.