Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
FIŞA DISCIPLINEI

Codul	Disciplina	
MI051	Programare concurentă	

Specializarea	Semestrul	Ore: C+S+L	Categoria	Statutul	
Informatică - în limba engleză	8	2+0+2		optionala	

Titularii de disciplină	Prof. Dr. BOIAN Florian Mircea, florin@cs.ubbcluj.ro	
Obiective	Insuşirea teoriei şi a tehnologiilor fundamentale de programare concurentă. Se au în vedere pe de o parte aspectele teoretice privind procesele şi threadurile, precum şi instrumentele de coordonare a acestora. Aspectele practice tratate au în vedere facilităţile de lucru cu procese şi threaduri oferite de către sistemele de operare Unix (Linux), Windows NT (2000) şi de către distribuţia Java (standard).	
Conţinutul	1Nivelele prelucrarilor concurente
      1.1Procesari paralele si clasificarea Flynn
      1.2Granularitati ale paralelismului / concurentei
      1.3Tehnica pipeline
      1.4Procesoare vectoriale si sisteme cluster
      1.5Paralelism si concurenta la nivelul sistemului de operare
      1.6Evaluare multiprocesor a expresiilor complexe
      1.7Reorganizarea succesiunilor de atribuiri
      1.8Paralelizare la nivel de cicluri for
2Concepte abstracte utilizate in descrierea concurentei
      2.1Paradigme de programare nesecventiala
      2.2Relatia procese - thread-uri
      2.3Scheme de specificare a programelor concurente
      2.4Situatii de exceptie generate de concurenta
      2.5Mecanisme de control al concurentei, comunicare si sincronizare
      2.6Mecanisme de control asincron sau partial sincron
      2.7Probleme specifice care se rezolva cu ajutorul concurentei
3Programare concurenta la nivel de proces
      3.1Procese Unix, Windows, Java
      3.2Comunicarea prin pipe intre procese
      3.3Comunicarea intre procese folosind mecanismul de memorie partajata
      3.4Sincronizarea proceselor folosind semafoare
      3.5Comunicarea prin cozi de mesaje
4Programare concurenta la nivel de thread-uri
      4.1Caracteristici generale
      4.2Exemple de probleme rezolvabile prin thread-uri
      4.3Thread-uri pe platforme Unix: Posix si Solaris
      4.4Thread-uri pe platforme Microsoft: Windows NT, 2000
      4.5Thread-uri Java
5Aplicatii concurente complexe
      5.1 Scheme de proiectare a programelor concurente
      5.2Implementarea threadurilor NT in MFC
      5.3Utilizari combinate: threaduri, procese Unix, semnale
      5.4Utilizarea thread-urilor in appleturi si servleturi Java
      5.5Aplicatie vizuala multi-threading sub NT
      5.6Server Java concurent pentru chat
      5.7Client FTP noninteractiv
      5.8Evaluarea unor performante ale programelor cu thread-uri
	
Bibliografie	1. BACON J., Concurrent Systems, Addison-Wesley, England, 1998 
2. BARRY A., Concurrent Programming, http://www.csm.uwe.ac.uk/personal/am-barry/Q2H611/concprog.html 
3. BOIAN F.M., FRENTIU M., KASA Z., Effieciency in Parallel Evaluation of Arithmetic Expressions, Universitatea Babes-Bolyai, Facultatea de Matematica, Seminar on Complexity, Preprint no. 10/1989 
4. BOIAN F.M., Programare distribuita în Internet; metode si aplicatii, Editura Albastra, Cluj, 1998 
5. BOIAN F.M., Sisteme de operare interactive, Editura Libris, Cluj, 1994 
6. BOIAN F.M., FERDEAN C. M., BOIAN R.F. DRAGOS R.C. Programare concurenta pe platforme Unix, Windows, Editura Albastra - grupul Microinformatica, Cluj, 2002 
7. BOIAN F.M., VANCEA A., IURIAN S., IURIAN M., Arhitectura 80x86, Limbaj de asamblare, Legatura între limbaje, vol. I si II, Lito. Universitatea "Babes-Bolyai", Cluj, 1994 
8. FLYNN M. J., Some Computer Organizations and their Effectiveness, IEEE Transactions on Computers, C-21, 1972 
9. IGNAT I., KACSO A., Gestionarea proceselor, Editura Albastra, grupul Microinformatica, Cluj, 1995 
10. STALLINGS W., Operating Systems: Internals and Design Principles, Prentice Hall, SUA, 1997 
	
Evaluare	Nota finală este obţinută ca medie între:
- 	nota pentru un referat cu tematică de concurenţă 50%;
- 	nota pe activitatea de laborator: calitatea programelor, documentaţii etc. 50%.