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.
课程信息
Completion of previous courses. Calculus, probability theory: distributions, expectations and moments. Some programming experience with Python.
您将学到的内容有
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
您将获得的技能
- Analysis of Algorithms
- Algorithm Design
- Python Programming
- Data Structure Design
- Intractability
Completion of previous courses. Calculus, probability theory: distributions, expectations and moments. Some programming experience with Python.
提供方

科罗拉多大学波德分校
CU-Boulder is a dynamic community of scholars and learners on one of the most spectacular college campuses in the country. As one of 34 U.S. public institutions in the prestigious Association of American Universities (AAU), we have a proud tradition of academic excellence, with five Nobel laureates and more than 50 members of prestigious academic academies.
立即开始攻读硕士学位
授课大纲 - 您将从这门课程中学到什么
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.
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.
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.
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.
审阅
- 5 stars69.69%
- 4 stars18.18%
- 3 stars3.03%
- 2 stars3.03%
- 1 star6.06%
来自DYNAMIC PROGRAMMING, GREEDY ALGORITHMS的热门评论
Excellent. This course covers some difficult topics, but the lectures and homework assignments were superb and made them quite approachable.
Excellent course! I really learned alot and enjoyed all the challenges and topics in your course. Thank you so much!
关于 Data Science Foundations: Data Structures and Algorithms 专项课程
Building fast and highly performant data science applications requires an intimate knowledge of how data can be organized in a computer and how to efficiently perform operations such as sorting, searching, and indexing. This course will teach the fundamentals of data structures and algorithms with a focus on data science applications. This specialization is targeted towards learners who are broadly interested in programming applications that process large amounts of data (expertise in data science is not required), and are familiar with the basics of programming in python. We will learn about various data structures including arrays, hash-tables, heaps, trees and graphs along with algorithms including sorting, searching, traversal and shortest path algorithms.

常见问题
我什么时候能够访问课程视频和作业?
我订阅此专项课程后会得到什么?
有助学金吗?
还有其他问题吗?请访问 学生帮助中心。