Description

This course builds on knowledge of elementary algorithm analysis gained in CS3303: Data Structures, and introduces more advanced algorithms. Implementation strategies for algorithms including Brute Force, Branch and Bound, Divide and Conquer, Greedy, Linear Programming and Dynamic programming as well as techniques to analyze and evaluate the complexity of algorithms are taught. Finally the concepts of NP-complete, hard problems, impossible problems, and the halting problem will be explored.