Credits: 3 Level: undergraduate
Efficiency classifications and mathematical analysis of recursive and nonrecursive algorithms. Major algorithm design techniques: brute force, divide-and-conquer, decrease-and-conquer, transform-and-conquer, space and time tradeoffs, greedy approach, dynamic programming, backtracking and branch-and-bound. Introduction to NP-completeness, approximation algorithms. Applications to a wide variety of computational problems: sorting, searching, string processing, graphs, arithmetic, linear algebra.
CSC 1052 and CSC 1300