Babes-Bolyai University of Cluj-Napoca
Faculty of Mathematics and Computer Science
Study Cycle: Graduate
SUBJECT

Code	Subject	
MID0019	Parallel Programming: Techniques and Paradigms	

Section	Semester	Hours: C+S+L	Category	Type	
Computer Science - in Romanian	5	2+0+2	speciality	optional	
Mathematics-Computer Science - in Romanian	5	2+0+2	speciality	optional	
Information engineering - in Romanian	7	2+0+2		optional	

Teaching Staff in Charge	Assoc.Prof. NICULESCU Virginia, Ph.D., vniculescu@cs.ubbcluj.ro	
Aims	- To understand the fundametal notions of parallel programming.
- To know and use some formal methods for parallel programs development.
- To implement parallel algorithms using MPI language and Java threads.	
Content	This course covers theoretical foundations of parallel algorithms. The emphasis of this course is on the design and analysis of parallel algorithms.
Parallel algorithms are presented with emphasis on linear algebra applications, FFTs, graph, searching and sorting algorithms.

1. Fundamental notions about parallel programming:
 - Parallel systems classifications 
 - Processors interconnection networks
 - Parallel programs performance evaluation
2.General principles for parallel programs construction: methodical design, partitioning, communication, agglomeration, mapping.
3.A method based on imperative programming: 
 - Parameterized processes,
 - Data distributions,
 - Derivation from specifications.
4. Methods based on functional programming:
 - Bird-Meertens Formalism,
 - PowerList, ParList, PList theories.
Laboratory
Parallel programs development using:
 - Java Threads,
 - Message Passing Interface (MPI).
	
Bibliography	1. CHIOREAN, IOANA:  Calcul Paralel - Fundamente, Ed. Microinformatica, 1995.
1. FOSTER, IAN: Designing and Building Parallel Programs, Addison-Wesley 1995. 
2. LOYENS, L.D.: A Design Method for Parallel Programs, PhD. Thesis, University of Eindhoven, 1992. 
3. MISRA, J.: PowerList: A structure for parallel recursion. ACM Transactions on Programming Languages and Systems, 16(6):1737-1767, November 1994. 
4. NICULESCU, V.: Modele de elaborare a algoritmilor paraleli, PhD. Thesis, Univ. Babes-Bolyai, 2002. 
5. PETCU, D.: Procesare paralela, Editura Eubeea, 2001, Colectia Informatica, Timisoara, ISBN 973-9479-48-0, 414 pagini. 
6. SKILLICORN, D.: Foundations of Parallel Programming, Cambridge International Series on Parallel Computations, 1994. 
7. SKILLICORN,D.B. - TALIA, D.: Models and Languages for Parallel Computation. ACM Computer Surveys, 30(2) pg.123-136, June 1998.
8. The Message Passing Interface (MPI) standard, [http://www-unix.mcs.anl.gov/mpi/], 2000.
9. The Java Tutorial. [http://java.sun.com/docs/books/tutorial/]	
Assessment	An average between the laboratory grade and a written exam grade.
Lab activity: 40%
Written examination: 60%