The course aims to introduce students to techniques of developing efficient algorithms and analyzing the resource use of algorithms. It covers design principles such as dynamic programming, greedy methods and the divide and conquer method. It also include basic techniques in computing time/space complexity bounds of algorithms.
T.C. Cormen, C.H. Leiserson, and R.L. Rivest, Introduction to Algorithms, The MIT Press and McGraw-Hill, 1992.
Recognize the need for, and have the ability to engage in life long learning.
Ability to design and conduct experiments as well as analyze and interpret data.
Ability to apply knowledge of mathematics, science and engineering.