Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Calculatoare şi tehnologia informaţiei
Programul de studii: Ingineria informatiei - in limba romana
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	
7	2+0+1+1	specialitate	opţională	

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

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

III. Obiectivele disciplinei
- Cunoasterea unor notiuni fundamentale despre programarea paralela.
- Implementarea de algoritmi paraleli folosind standardul MPI si thread-uri Java.

IV. Conţinutul disciplinei

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, algoritmi de cautare, de sortare si din teoria grafelor.
Curs:
1. Notiuni fundamentale ale calcului paralel
2. Principii generale de constructie a programelor paralele
3. Tehnici de constructie a programelor paralele
Laborator:
 - Thread-uri Java
 - Programare bazata pe MPI (Message Passing Interface)	

V. Bibliografie
1.	Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar: Introduction to Parallel Computing, Second Edition, Addison Wesley, 2003, pg: 856.
2.	Foster, Ian: Designing and Building Parallel Programs, Addison-Wesley, 1995. 
3.	Niculescu, Virginia.: Calcul paralel. Proiectare si dezvoltare formala a programelor paralele, Presa Univ. Clujana, 2005, 301pg. 
4.	Petcu, D.: Procesare paralela, Editura Eubeea, 2001, Colectia Informatica, Timisoara, 414 pg.
5.	Chiorean, Ioana:  Calcul Paralel - Fundamente, Ed. Microinformatica, 1995.
6.	The Message Passing Interface (MPI) standard, [http://www-unix.mcs.anl.gov/mpi/]
7.	 The Java Tutorial. [http://java.sun.com/docs/books/tutorial/]

VI. Tematica activităţilor didactice pe săptămâni
Curs
1. Notiuni fundamentale ale calcului paralel: (C1-C4)
 - Clasificari ale sistemelor paralele
 - Retele de interconectare a procesoarelor - topologii
 - Comunicatia in sistemele paralele
2. Programare paralela pe sisteme cu spatiu de adrese partajat (Threads) (C5-C6).
3.  Masurarea performantei programelor paralele (C7)
4. Principii generale de constructie a programelor paralele: proiectare metodica, partitionare, comunicare, aglomerare, mapare. C8
5. Modele de programe paralele. C9
6. Programare paralela bazata pe transmitere de mesaje (MPI). C10-C11
7. Tehnici de constructie a programelor paralele..  C12-C13
8. Programe paralele pentru: sortare, cautare, calcule cu matrice etc. C14
Laborator
Dezvoltare de programe paralele folosind:
 - Thread-uri Java,
 - Programare in MPI (Message Passing Interface).

VII. Metode didactice folosite
Expunerea (descriere, explicaţie, prelegere cu demonstraţii), conversaţia (dezbatere şi dialog), discutarea unor studii de caz.
Materialul expus este însoţit de exemplificări implementate în diverse limbaje de programare. Activitatea de laborator constă din elaborarea unui referat şi realizarea unui mini-proiect de programare.
Studentii vor fi organizati in echipe de 1-3 membrii. Fiecare echipa va rezolva o problema folosind diferite modele de dezvoltare.	

VIII. Evaluare
Nota finala va reflecta activitatea din timpul laboratorului si rezultatul de la colocviu.
Activitatea de laborator: 30% 
Rezultat colocviu: 70%
Colocviu: prezentare proiect si intrebari teoretice 50%+20%

IX. Bibliografie suplimentară
1. V. Niculescu, Modele de elaborare a algoritmilor paraleli, PhD. Thesis, Univ. Babes-Bolyai, 2002.
2.  D.B. Skillicorn, D. Talia. Models and Languages for Parallel Computation. ACM Computer Surveys, 30(2) pg.123-136, June 1998	

	Data,							Titular curs,
1.10.2010	Conf. Dr. NICULESCU Virginia
                                                                                                         www.cs.ubbcluj.ro/~vniculescu/PP