Course Objectives :

The study of algorithm includes many important and active areas of research. The course describes and use major algorithmic techniques (divide-and-conquer, dynamic programming, linear programming, greedy paradigm, and cite problems for which each technique is suitable. Evaluate and compare different algorithms using worst-, average-, and best-case analysis. Detail information about lower bound theory. Explain the difference between tractable and intractable problems, and identify the basic complexity classes, such as P, NP and NP- complete. Give detail description about parallel algorithm designing techniques such as PRAM, MESH and Hypercube algorithms which will be useful for research in parallel computing.

Course Learning Outcomes:

Use and apply current technical concepts and practices in core computing and information technologies. Analyze a problem, and identify and define the computing requirements appropriate to its solution. Prove the correctness and analyze the running time of   the basic algorithms for those classic problems in various domains; apply the algorithms and design techniques to solve problems; analyze the complexities of various problems in different domains.