In this course, you will :
- Apply basic algorithmic techniques such as greedy algorithms, binary search, sorting and dynamic programming to solve programming challenges..
- Apply various data structures such as stack, queue, hash table, priority queue, binary search tree, graph and string to solve programming challenges..
- Apply graph and string algorithms to solve real-world challenges: finding shortest paths on huge maps and assembling genomes from millions of pieces..
- Solve complex programming challenges using advanced techniques: maximum flow, linear programming, approximate algorithms, SAT-solvers, streaming..