CS 217 COMPUTING ALGORITHMS I

Syllabus


Summary

Design and analysis of algorithms using six algorithmic design techniques: divide-and-conquer, greedy method, dynamic programming, tree and graph traversals, backtracking, and branch-and-bound. Lower bound theory. NP-complete theory.

Prerequisites: CSci 131, CSci 144, or permission of instructor.

Texts

  1. Introduction to Algorithms, Cormen, Leiserson and Rivest, McGraw Hill, 1992
  2. Computer Algorithms, Horowitz, Sahni and Rajasekaran, Computer Science Press, 1997

Course Outline

  1. Basic Principles of Algorithm Design and Analysis
  2. Data Structures: Stacks, queues, linked lists, trees, binary search trees, heaps, graphs, sets, union-find
  3. The Divide and Conquer Method: Overall technique, mergesort, quicksort, quickselect, FFT, etc.
  4. The Greedy Method: Overall technique, the knapsack problem, optimal merge pattern, Huffman coding, minimum spanning tree, single-sourse shortest paths problem, etc.
  5. Dynamic Programming: Overall technique, matrix chain problem, all-pairs shortest path problem, optimal binary search trees, etc.
  6. Graph Traversal Techniques: Tree traversal and applications, depth-dirst search, bread-first search, connectivity algorithms, biconnectivity algorithms, etc.
  7. Backtracking: Overall technique, generation of combinatorial objects such as graphs, sets, permutations, graph colorings, cliques, Hamiltonian cycles, etc.
  8. Branch and Bound method: Overall method, the 0/1 knapsack problem, the job assignment problem, the traveling salesman problem, etc.
  9. Lower bound theory: Techniques for determining complexity lower bounds of problems, algorithm modeling, application to lower bound on sorting, searching, and merging.
  10. Introduction to the Theory of NP-completeness: Nondeterministic algorithms, complexity classes, NP-completeness, problem reduction, NP-complete problems such as satisfiability, the k-clique problem, the hamiltonian cycle problem, etc.

Return to the Home Page