Description
In this course, you will learn:
- How to represent data such that you can get it quickly and easily when you need it.
- What is the best way to evaluate the efficacy of algorithms?
- How to turn algorithmic solutions for larger inputs from bootstrapped solutions for small inputs.
- Several classic optimization issues are solved.
- How to determine whether a locally optimal (greedy) strategy can deliver a globally optimal solution to a problem.
Syllabus:
- Mathematical Preliminaries; Asymptotic analysis and recurrence relations; Sorting and Searching; Heaps and Binary Search Trees
- Algorithm Design Paradigms - Divide-and-Conquer algorithms, Dynamic Programming, Greedy Algorithms
- Graphs and graph traversals; minimum spanning trees; shortest paths
- Flows; NP-completeness; Approximation Algorithms