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

Profesor:
Conf. 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 (29.02.2024):

Grades (after re-examination)

If you have questions about the grades, please drop me an email. If you spot mistakes, drop me an email in the next two days.
I have created a Microsoft team for the course, named Formal Modeling of Concurrent Processes 2023.
You can add yourself to the team using the code: 4z0evom.
The re-examination will take place on Friday, 23rd of February 2024, time 5pm in room 6/II. You will present the projects (and reports, if any) immediately after the exam, on the same day (no schedule required).

Examples of candidate articles for the report

Click here in order to choose your report paper and to schedule your presentation at the seminar.
In the first two weeks of January 2024, you will present the project at the seminars (not the report).
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 sesiunea de 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)).
The report presentations will take place according to the following table:

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