This course introduces the basic concepts and methods used in the design and analyze of the algorithms. Algorithm design is a specific method to create a mathematical process in solving problem. At the end of this course, the student must be able to design an algorithm (or more than one) to solve any proposed problem using flow chart and pseudo code. Then, he must be able to analyze it and to find the most efficient solution.

Algorithm analysis means determining the amount of resources necessary to execute it. Resources mean time and space. This course allows the student to calculate the amount of time and space needed to execute each instruction of an algorithm, compare the cost of different types of instructions, and calculate the total time of execution. Given that, he must be able to distinguish between efficient and non efficient algorithm. Based on this comparison the student will learn about the complexity (easy, hard), and the comparability of the problem (solvable or not).