CS 584/684 Algorithm Design & Analysis
Credit Hours:
3
Course Coordinator:
Sayan Bandyapadhyay and Shravas Rao
Course Description:
An advanced in-depth study of the design and analysis of algorithms. Topics include models of computation, sorting, data structures, graph algorithms, matrix multiplication, fast Fourier transform, polynomial arithmetic, pattern matching, and NP-complete problems.
Prerequisites:
CS 350 or equivalent.
Goals:
Upon the successful completion of this class, students will be able to:
- Analyze most algorithms encountered in practice (at least roughly).
- Find a good algorithm to solve a problem.
- Use and understand asymptotic notation.
- Follow a correctness proof for an algorithm.
- Understand divide and conquer methods and dynamic programming.
- Understand the concept of amortized analysis.
- Describe the major sorting and searching algorithms and know their time complexity.
- Describe the meaning of NP-completeness.
- Know the process of proving a problem is NP-complete.
- Understand the idea of NP-approximation.
- Read papers describing algorithms in the computing literature.
- Write a paper clearly explaining a complex algorithm, using proper style and citations.