Prerequisites:
This course is NOT open to students falling into one of the following categories:
1. students with no graduate standing;
2. provisional graduate students who have not completed CS281 and CS361.
Course Description: CS600 is a graduate core course in Computer Science. The main purpose of this class is to present a modern introduction into the theory of computer algorithms and data structures. The main thrust of the course is algorithmic; the emphasis will be placed both on the design of efficient algorithm and on the mathematical analysis of their performance. We shall also take the view that one designs data structures in response to algorithmic needs and not the other way around. Consequently, the participants are assumed to be familiar with all the data structures studied in CS361. Moreover, throughout this course we assume that the participants are familiar with the mathematical machinery covered in CS281, MATH205, and MATH207. There will be 5 assignments, roughly one every three weeks. These assignments involve designing algorithms and/or proving statements about their behavior and that of supportive data structures. No late assignments will be accepted.
Course outline:
1. Mathematical Foundations
Topics to be covered include: mathematical induction, integer-valued functions, operations on asymptotic notation, asymptotic recurrences
2. Sorting and Order Statistics
Topics to be covered include: heapsort and quicksort, medians and order statistics, radix sort and bucket sort
3. Data Structures
Topics to be covered include: review of elementary data structures, binary search trees red-black trees augmenting data structures
4. Greedy Algorithms
Topics to be covered include: greedy algorithms on graphs and trees greedy algorithms for scheduling greedy heuristics
5. Exploring Graphs
Topics to be covered include: traversing trees Depth-First Search and Breadth-First Search shortest path problems
6. Introduction to Parallel Algorithms
Topics to be covered include: parallel models of computation PRAM algorithms for fundamental problems the family of mesh-connected machines applications
7. Transformation of the Domain
Topics to be covered include: The discrete Fourier Transform matrix operations symbolic operation on polynomials
8. Introduction to NP-completeness and Complexity
Topics to be covered include: reduction among problems the classes P and NP NP-complete problems classical reductions
Text:
Thomas H. Cormen, C. E. Leiserson, and R. L. Rivest, Introduction to Algorithms, McGraw-Hill and MIT Press, 1990.