Saltar al contingut Menu
Mapa
  • Inici
  • Informació
  • Contacte
  • Mapa

Programació Concurrent i Distribuïda (PCD)

Crèdits Dept. Tipus Requisits
7.5 (6.0 ECTS) CS
  • Optativa per a l'EI
  • Optativa per a l'ETIG
  • Optativa per a l'ETIS
PRED - Pre-requisit per la EI , ETIG
PS - Pre-requisit per la ETIS

Professors

Responsable:  (-)
Altres:(-)

Objectius Generals

Que els estudiants aprenguin a dissenyar i implementar programes concurrents i distribuïts de manera segura i fiable. Per guiar als estudiants en les tasques de disseny s'introdueix el LST (Labelled System Analyser), un model que permet dissenyar, visualitzar i analitzar sistemes de transicions. A fi de que els estudiants tinguin una visió més completa de la concurrència i dels sistèmes distribuïts s'ensenyen altres models com per exemple les Xarxes de Petri. A fi de tenir una visió completa dels passos que van de la modelització a la implementació es fan pràctiques en els llenguatge de programació Java i Erlang. Les pràctiques de Xarxes de Petri es fan an WoPeD.

Objectius Específics

Coneixements

  1. Que coneguin els sistemes de transició etiquetas com a eina de disseny i anàlsisi dels programas concurrent i distribuïts.
  2. Que coneguin algun software, per exemple LTS, de disseny i anàlisi de sistemes de transició.
  3. Que coneguin les Xarxes de Petri com un altre model formal de disseny i anàlisi.
  4. Que tinguin una idea clara dels problemes bàsics que poden apareixer en programació cocurrent i distribuïda.
  5. Que coneguin les parts de Java i Erlang relacionades amb programació concurrent i distribuïda.

Habilitats

  1. Que als estudiants puguin modelitzar i analitzar a ma, exemples molt senzills de programes concurrents mitjaçant un sistemes de transició etiquetats.
  2. Que puguin utilitzar amb fluïdesa una eina d'anàlisi basada en sistemes de transició per exemple el LTS.
  3. Que pugin utilitzar les Xarxes de Petri com un altre model formal de disseny i anàlisi.
  4. Que puguin utilitzar amb fluïdesa les parts de Java i Erlang relacionades amb programació concurrent i distribuïda.

Competències

  1. Que puguin raonar de manera formal, emprant si cal programes, a fi de poder dir
    si un disseny és o no correcte.
  2. Poder passar d'eines abstractes de disseny i anàlisi i implementacions en llenguatges de programació, como Java i Erlang.

Continguts

Hores estimades de:

T P L Alt L Ext. Est A Ext.
Teoria Problemes Laboratori Altres activitats Laboratori extern Estudi Altres hores fora d'horari fixat

1. Sistemes de transició i álgebra de processos.
T      P      L      Alt    L Ext. Est    A Ext. Total 
6,0 6,0 3,0 0 3,0 12,0 0 30,0
Sistemes de transició i processos primitius. Operacions de prefix i tria. Processos concurrents i la seva execució. Descripció dels sistema LTS. Implementació en Java i Erlang.

2. Objectes concurrents, exclusió mútua i condicions de sincronització, problema del deadlock.
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 4,0 2,0 0 2,0 9,0 0 21,0
Problema de l'interferència destructiva. Locks i exclusió mútua. Modelització de semàfors i del problema dels monitors imbricats. Problema de deadlock, analisi mitjançant LST.

3. Propietats de seguretat (safety) i vivacitat (liveness).
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 4,0 2,0 0 2,0 9,0 0 21,0
Descripció i exemples de propietats de seguretat i implementació mitjançant LTS. Descripció de les propitats de vivacitat, en especial la de progress, i implementació en LTS.

4. Pas de missatges i arquitectura client/servidor, altres arquitectures.
T      P      L      Alt    L Ext. Est    A Ext. Total 
6,0 6,0 3,0 0 3,0 12,0 0 30,0
Pas de missatges. Arquitectura client/servidor,
Inroducció a altres arquitectures.:pilelines de filtres, suvervisor/treballadors, anunciant/oïent.
Pas de missatges en Erlang. Disseny en Erlang d'una arquitectura client/servidor.

5. Xarxes de Petri, model i algorismes bàsics.
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 4,0 2,0 0 2,0 9,0 0 21,0
Exemples de xarxes de Petri. Algorisme de Karp i Miller.
Classes especials de xarxes de Petri. Introducció a WoPed.

6. Xarxes de Petri; modelitzacio.
T      P      L      Alt    L Ext. Est    A Ext. Total 
4,0 4,0 2,0 0 2,0 9,0 0 21,0
Estudi de casos: "rearrangement distribuït", exclusió mútua autoestabilitzant, protocols amb missatges ack.


Total per tipus T      P      L      Alt    L Ext. Est    A Ext. Total 
28,0 28,0 14,0 0 14,0 60,0 0 144,0
Hores addicionals dedicades a l'avaluació 6,0
Total hores de treball per l'estudiant 150,0

Metodologia docent

A les classes de teoria s'introduiran els conceptes bàsics mitjançant exemples. En les classes d'exercicis, els estudiants, resoldran exercicis sobre els temes de de les classes de teoria. En les classes de laboratori es veurà com implementar aquests problemes (o problemes semblants) en Java i Erlang. Tant en classes de problemes com de laboratori es podrà utilitzar eines de disseny i anàlisi com el LTS.

Mètode d'avaluació

Hi haurà examen final i nota de laboratori. L'exàmen serà de problemes sobre la teoria explicada. La nota de laboratori reflectirà la qualitat del treball realitzat. La nota final serà:
0.6*examen final + 0.4*laboratori

Bibliografía bàsica

  • Jeff Magee & Jeff Kramer Concurrency : State Models & Java Programming (Second Edition), John Wiley & Sons, 2006.
  • Perterson, James Petri net theory and the modeling of systems, Prentice-Hall, 1981.
  • José Tomás Palma Méndez ... [et al.] Programación concurrente, International Thomson, 2003.
  • Joe Amstrong Programming Erlang, Software for a Concurrent World, Pragmatic Bookshelf, 2007.
  • Sharon Zakhour, Scott Hommel, Jacob Royal, Isaac Rabinovitch, Tom Risser, Mark Hoeber The Java Tutorial, Fouth Edition, a Short Course on the Basics, Addison Wesley, 2006.

Bibliografía complementària

  • Doug Lea Concurrent programming in Java (Second Edition) : Design Principles and Patterns, Addison-Wesley, 2000.
  • Bil Lewis, Daniel J. Berg Multithreaded programming with Java technology, Prentice Hall, 2000.
  • Francesco Cesarini, Simon Thompson Erlang, a Concurrent Approach to Software Development, O' Reilly, 2009.

Enllaços web

  1. http://java.sun.com/
    Molt interessant per tot el que és de Java.


  2. http://www.doc.ic.ac.uk/~jnm/book/
    El lloc de referència pel LTS i per la primera part del curs.


Capacitats prèvies

Bons coneixements de Java a nivell de classes i objectes.


Compartir

 
logo FIB © Facultat d'Informàtica de Barcelona - Contacte - RSS
Aquest web utilitza cookies pròpies per oferir una millor experiència i servei. En continuar amb la navegació entenem que acceptes la nostra política de cookies.
Versió clàssica Versió mòbil