

This course covers basic algorithm design techniques such as divide and conquer, dynamic programming, and greedy algorithms. It concludes with a brief introduction to undecidability (NP-completeness) and the use of linear/integer programming solvers to solve optimization problems. We also cover some advanced topics in data structures. This course can be taken for academic credit toward CU Boulder’s MS in Data Science or MS in Computer Science programs, both offered on Coursera.
Dynamic programming, greedy algorithms is listed in the GenAI.Works courses directory, from University of Colorado.