The primary goal of this course is to introduce students to algorithm analysis and design in order to improve students' analytical thinking skills. The emphasis of the course is on algorithms and problem‐solving techniques. Runtime analysis, complexity analysis of sorting and searching algorithms, divide and conquer algorithms, dynamic programming, greedy algorithms, graph algorithms, and string matching algorithms are all important concepts.