**Introduction**

An algorithm is defined as a series of computational steps required to accomplish an exact task. The algorithm works for a given input and will terminate in a well distinct state. The basic conditions of an algorithm are: input, output, effectiveness, definiteness and finiteness. The purpose of the development an algorithm is to resolve a general, well specified problem.

A concern while designing an algorithm also pertains to the type of computer on which the algorithm would be implemented. The two forms of architectures of computers are given: sequential computer and parallel computer. Thus, depending upon the architecture of the computers, we contain sequential as well as parallel algorithms.

The algorithms which are implemented on the sequential computers simply perform according to sequence of steps for resolving a given problem. Such algorithms are called as sequential algorithms.

However, a trouble can be solved after separating it into sub-problems and those in turn are implemented in parallel. Later on, the results of the answers of these sub problems can be combined together and the last solution can be achieved. In such situations, the number of processors needed would be more than one and they would be communicating with each other for producing the final output. This environment operates on the parallel computer and the special kind of algorithms known parallel algorithms are designed for these computers. The parallel algorithms depend on the type of parallel computer they are designed for. Therefore, for a given problem, there would be a need to design the dissimilar kinds of parallel algorithms depending upon the kind of parallel architecture.

A parallel computer is a set of processors that are capable to work cooperatively to resolve a computational problem. This definition is broad sufficient to include parallel supercomputers that have hundreds or thousands of processors, multiple-processor workstations, networks of workstations, and embedded systems. The parallel computers can be characterized with the help of various kinds of models given as random access machine (RAM), Interconnection Networks ,parallel random access machine (PRAM) etc. While designing a parallel algorithm, the computational power of a variety of models can be analyzed and measured, parallelism can be involved for a given difficulty on a specific model after understanding the characteriscitics of a model. The analysis of parallel algorithm on dissimilar models assist in determining the best model for a problem after receiving the results in terms of the space and time complexity.

In this part, we have first discussed the various parameters for analysis of an algorithm. After that, the various types of computational models such as combinational circuits etc. have been presented. Then, a few problems have been taken up, e.g., matrix multiplication, sorting etc. and solved using parallel algorithms with the help of a variety of parallel compuational models.