Students will study techniques for designing and analyzing algorithms. The design techniques including divide-and-conquer, dynamic programming, greediness and probabilistic approaches will be covered. An analysis of best/average/worst case complexity in both time and space will be covered. Credit hours: 4. Prerequisite or Corequisite: MATH 2236 or the equivalent.