Formal Models of Concurrent Processes
winter semester, 2020-2021
Master groups: Distributed Systems in Internet, High Performance Computing

Profesor:
Lect. Dr. Adrian Sterca [forest at cs dot ubbcluj dot ro]
Continut:
Cursul are 3 parti:
1. Introducere in concurenta
2. Modelarea proceselor concurente din punct de vedere al datelor partajate. Sisteme tranzactionale
3. Modelarea proceselor concurente din punct de vedere al comunicarii intre ele. Algebre de procese
Bibliografie:
1. Weikum G. Vossen G. Transactional Information System: Theory, Algorithms, and Practice of Concurrency Control and Recovery. Kaufmann Morgan Publ. 2002.
2. Luca Aceto, Anna Ingolfsdottir, Kim Guldstrand Larsen, Jiri Srba, Reactive Systems: Modelling, Specification and Verification, 2007.

News (23.02.2021):

Note finale sesiune
Observatii:
La examenul scris au fost 2 puncte din oficiu si 0.4 puncte pe fiecare intrebare (am dat puncte si la raspunsuri partiale).
La proiect a contat complexitatea codului si felul cum mi-ati explicat codul.
La referat au contat mai mult raspunsurile pe care mi le-ati dat la intrebari in cadrul prezentarii.
S-a dat 1 punct in plus la nota finala tuturor celor care au avut minim 6 prezente la curs (pt acele persoane apare un "+" in coloana "Prezente").
Am actualizat fisierele cu prezente pe Ms Teams.
Pentru nelamuriri legate de notele primite, scrieti-mi mail.

Exemple de articole posibile pentru referat

Referatele pot fi predate si in sesiunea (normala sau restante), dar cu o penalizare de 4 puncte.
Proiectele de asemenea se pot preda si in sesiune (normala sau restante), dar cu o penalizare de 4 puncte (exceptie fac proiectele simplificate care au o penalizare de 4 puncte indiferent cand sunt predate (in timpul semestrului, in sesiune normala sau in sesiune restante)).
Cerinte:
Pentru promovarea cursului, un student masterand trebuie sa realizeze urmatoarele 3 lucruri, la care trebuie sa primeasca, la fiecare, nota peste 5: Nota finala este media ponderata intre cele 3 sarcini de lucru prezentate mai sus:
40% proiect + 30% referat + 30% examen scris

Referatul trebuie sa contina 4 pagini (in romana) si sa faca rezumatul unui concept (1 articol stiintific) din domeniul modelarii sistemelor concurente. Mai exact, referatul trebuie sa urmareasca una din temele:

Referatul nu trebuie sa copieze efectiv sau sa traduca cuvant cu cuvant niste articole stiintifice. De asemenea articolul pt care faceti rezumat trebuie sa introduca un concept nou (e.g. algorithm, tehnica, teorie). In plus, articolul trebuie sa aiba intre 9 si 15 pagini, sa fie publicate dupa 2010, si sa nu fie "survey" (adica articole care nu introduc ceva nou ci fac rezumatul la mai multe lucruri existente). Ca sa gasiti articole stiintifice despre temele de mai sus, cautati cuvintele cheie: concurrent, concurrent formalism, concurrent constraint programming, transactional, concurrent transaction, transactional systems, process calculi, process algebras, process calculus, schedulling, concurrent schedulling la una din adresele:
http://citeseerx.ist.psu.edu/
http://scholar.google.com/
http://portal.acm.org/dl.cfm (folositi un cont si o parola pe care v-o dau la curs)
http://en.wikipedia.org/wiki/Process_calculus
http://en.wikipedia.org/wiki/Concurrent_system

Sau alegeti unul dintre articolele oferite mai sus (ca exemple de articole posibile pentru referat).

Proiect - o aplicatie concurenta distribuita la alegerea studentului. Aplicatia trebuie sa respecte urmatoarele cerinte:
- sa fie distribuita, dar nu simpla, client-server, ci pe mai multe nivele (client/web - business/middleware - date etc.).
- sa implice aspecte de concurenta la nivel de date externe manipulate (i.e. tranzactii in baze de date).
- sa foloseasca doua baza de date diferite (cel putin 3 tabele) si sa se foloseasca tranzactii distribuite. (nu este obligatoriu sa fie 2 servere distincte de baze de date)
- sa aiba cel putin 6-8 operatii/cazuri de utilizare.
- Foarte important: Sa implementeze o tranzactie distribuita la nivel aplicatie. Adica veti considera ca o tranzactie nu consta din operatii de read() si write() de pagini de memorie asa cum facem la curs ci veti considera o tranzactie ca fiind formata din operatii SQL simple (minim 3 instructiuni SQL - insert, delete, update, select) desigur, aceste operatii SQL vor opera pe tabele diferite. Trebuie sa asigurati, la nivel aplicatie, proprietatile ACID ale acestei tranzactii. Cu alte cuvinte sa se implementeze urmatoarele:

- Atentie:: Focus-ul aplicatiei trebuie sa cada pe implementarea sistemului tranzactional, nu pe cazuri de utilizare, intrefata web sau frameworkuri pe care le-ati folosit. Puteti folosi framework-uri care sa va usureze munca (e.g. Hibernate sau alt JPA, Spring, .NET MVC etc.), dar nu trebuie sa folositi nici un fel de suport tranzactional de la acestea.


Un mic ghid de implementare pentru un proiect despre algoritmul 2PL (2 Phase Locking) il gasiti in aceste 3 poze: poza 1, poza 2, poza 3.

Ca alternativa la proiectul mai complex descris mai sus (i.e. implementarea unui algoritm de controlul concurentei dintre cei discutati la curs), doar pentru notele 5 si 6 (deci veti avea o penalizare de 4-5 puncte) puteti face un proiect simplificat care sa respecte urmatoarele: a) aplicatia sa fie distribuita, client-server, pe mai multe nivele (client/web - business/middleware - date etc.); b) aplicatia sa foloseasca cel putin o baza de date (nu neaparat relationala); c) aplicatia sa aiba cel putin 6-8 operatii/cazuri de utilizare.

Examenul scris este un examen grila.

Slide-uri curs si documentatii