Prerequisites: CSCI 210 and MATH 200. Offered in fall and spring. Design and analysis of basic classes of algorithms: Divide and conquer, greedy methods, tree and graph traversals, and backtracking. Applications to problems such as sorting and searching, traveling salesperson, and knapsack. Theory of complexity.