Dynamic Programming, Greedy Algorithms (Coursera)

Dynamic Programming, Greedy Algorithms (Coursera)
Course Auditing
Categories
Effort
Certification
Languages
Completion of previous courses. Calculus, probability theory: distributions, expectations and moments. Some programming experience with Python.
Misc

MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Dynamic Programming, Greedy Algorithms (Coursera)
This course covers basic algorithm design techniques such as divide and conquer, dynamic programming, and greedy algorithms. It concludes with a brief introduction to intractability (NP-completeness) and using linear/integer programming solvers for solving optimization problems. We will also cover some advanced topics in data structures.

MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Dynamic Programming, Greedy Algorithms can be taken for academic credit as part of CU Boulder’s Master of Science in Data Science (MS-DS) degree offered on the Coursera platform. The MS-DS is an interdisciplinary degree that brings together faculty from CU Boulder’s departments of Applied Mathematics, Computer Science, Information Science, and others. With performance-based admissions and no application process, the MS-DS is ideal for individuals with a broad range of undergraduate education and/or professional experience in computer science, information science, mathematics, and statistics.

Course 3 of 3 in the Data Structures and Algorithms Specialization.


What You Will Learn

- Describe basic algorithm design techniques

- Create divide and conquer, dynamic programming, and greedy algorithms

- Understand intractable problems, P vs NP and the use of integer programming solvers to tackle some of these problems


Syllabus


WEEK 1

Divide and Conquer Algorithms

We will formally cover divide and conquer algorithms as a design scheme and look at some divide and conquer algorithms we have encountered in the past. We will learn some divide and conquer algorithms for Integer Multiplication (Karatsuba’s Algorithm), Matrix Multiplication (Strassen’s Algorithm), Fast Fourier Transforms (FFTs), and Finding Closest Pair of Points.


WEEK 2

Dynamic Programming Algorithms

In this module, you will learn about dynamic programming as a design principle for algorithms. We will provide a step-by-step approach to formulating a problem as a dynamic program and solving these problems using memoization. We will cover dynamic programming for finding longest common subsequences, Knapsack problem and some interesting dynamic programming applications.


WEEK 3

Greedy Algorithms

In this module, we will learn about greedy algorithms. We will understand the basic design principles for greedy algorithms and learn about a few algorithms for greedy scheduling and Huffman codes. We will also learn some interesting cases when being greedy provides a guaranteed approximation to the actual solution.


WEEK 4

Intractability and Supplement on Quantum Computing

P vs NP, Examples such as Travelling Salesperson Problem, Vertex Cover, 3-Coloring and others; Integer Linear Programming and Translating Problems into Integer Programming.



MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Course Auditing
68.00 EUR/month
Completion of previous courses. Calculus, probability theory: distributions, expectations and moments. Some programming experience with Python.

MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.