3-3-0
This course is intended to make students familiar with most of the existing techniques for problem solving. It starts with an introduction to algorithms efficiency, solving recurrence relations and basic data structures. Then different techniques for algorithms design are discussed; the divide-and-conquer technique, the greedy technique and its applications to graph algorithms, dynamic programming, backtracking and branch and bound algorithms. With every technique presented, examples from different domains are studied, and their algorithms analyzed. At the end, students are briefly introduced to the vast area of "difficult" problems, or NP - complete.
Prerequisite: Computer Science 204 and MAT 105
Note: See MAT277. Students may not take this course for credits if they recevied credits for MAT 277.