Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - linia de studiu română
Limba de predare: Română

SYLLABUS

I. Date generale
Codul	Disciplina	
MID0019	Programare paralelă: tehnici şi paradigme	

Semestrul	Ore: C+S+L+P	Categoria	Statutul	
6	2+0+1+0	specialitate	opţională	

II. Cadre didactice cu norma de bază în Universitate
Numele şi	Titlul	Gradul	Departamentul	Tipul activităţii	
prenumele	ştiinţific	didactic		C	S	L	
NICULESCU Virginia	Dr. 	Conf.	Informatică	*			

Cadre didactice asociate
Numele şi	Titlul	Instituţia	Tipul	Tipul activităţii	
prenumele	ştiinţific		postului	C	S	L	

III. Obiectivele disciplinei
1. Obtinerea de cunostinte de baza despre programarea paralela. 
2. Cunoasterea si folosirea celor mai importante paradigme/tehnici de dezvoltare a programelor paralele. 
3. Implementarea programelor paralele folosind MPI si thread-uri Java. 

IV. Conţinutul disciplinei
Curs 
Cursul introduce fundamentele teoretice ale programarii paralele,  iar accentul este pus pe proiectarea si analiza algoritmilor paraleli. 
Sunt prezentati si dezvoltati algoritmi din algebra liniara, analiza numerica, algoritmi de cautare, sortare si din teoria grafelor. 

Laborator 
Dezvoltare de programe paralele folosind: 
- Thread-uri Java.
- Programare in MPI (Message Passing Interface). 

V. Bibliografie
1. I. Foster, Designing and Building Parallel Programs, Addison-Wesley 1995. 
2. A. Grama, A. Gupta, G. Karypis, V. Kumar. Introduction to Parallel Computing, Addison Wesley, 2003.
3. V. Niculescu. Calcul Paralel. Proiectare si dezvolare formala a programelor paralele. Presa Univ. Clujana, 2006.
4. D.B. Skillicorn, D. Talia. Models and Languages for Parallel Computation. ACM Computer Surveys, 30(2) pg.123-136, June 1998. 
5.  B. Wilkinson, M. Allen, Parallel Programming Techniques and Applications Using Networked Workstations and Parallel Computers, Prentice Hall, 2002  
6. The Message Passing Interface (MPI) standard, [www.mpi-forum.org] 
7. Java Programming Language [www.oracle.com/us/technologies/java/overview]

VI. Tematica activităţilor didactice pe săptămâni
1. Notiuni fundamentale ale calcului paralel: [S1-S4]
- Clasificari ale sistemelor paralele.
- Retele de interconectare a procesoarelor.
- Comunicatia in sistemele paralele.
- Masurarea performantei programelor paralele 
- Scalabilitate
- Granularitate

2. Principii generale de constructie a programelor paralele: 
-Proiectare metodica PCAM
    ->partitionare, 
    ->comunicare, 
    ->aglomerare, 
    ->mapare. 
-Descompunere domeniului de date versus descompunere functionala
-Distributii de date

3. Paradigme ale programarii paralele[S6-S7]
- Master-slaves
- Task-Farm
- Work-Pool
- Divide&Conquer
- Pipeline

4. Tehnici de utilizate in constructia algoritmilor paraleli: [S8-S11]
- Tehnica arborelui binar
- Tehnica dublarii recursive
- Pointer-Jumping
- Tehnica reducerii ciclice par-impar
- Contractia arborescenta

5. Exemple de algoritmi paraleli [S12-S14]
- algoritmi numerici: inmultire de matrici, rezolvare sistem linear
- algoritmi de sortare
- algoritmi de cautare

VII. Metode didactice folosite
Prelegeri, proiecte practice, exerciţii, studiu individual, conversaţii.

VIII. Evaluare
Nota finala va reflecta activitatea din timpul laboratorului si rezultatul de la colocviu. 
Proiect : 60%
Colocviu: 40%	

IX. Bibliografie suplimentară
1. D. Grigoras. Calculul Paralel. De la sisteme la programarea aplicatiilor. Computer Libris Agora, 2000.
2. V. Niculescu, Modele de elaborare a algoritmilor paraleli, PhD. Thesis, Univ. Babes-Bolyai, 2002.
3. E.F. Van de Velde. Concurrent Scientific Computing. Spring-Verlag, New-York Inc. 1994.	

	Decan,							Director departament,,

	Data,							Titular curs,
								Conf. Dr.  NICULESCU Virginia