Prerequisites: MA 221, CS 201
Models of Computation: Turing machines and random access machines, space and time complexity measures, lower and upper bounds; Design and analysis techniques: the greedy method, divide-and-conquer, dynamic programming, backtracking, branch and bound. Priority Queues: heaps, binomial heaps, Fibonacci heaps. Sorting and order statistics: sorting algorithms (insertion-sort, bubble-sort, shell-sort, quick-sort, merge-sort, heap-sort and external-sort) and their analyses, selection. Graph Algorithms: connectivity, bi-connectivity, topological sort, shortest paths, minimum spanning trees, maximum flow. Advanced topics: the disjoint set union problem; NP-completeness; geometric, approximation, parallel, and randomized algorithms.
Texts:
References: