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.
Este curso faz parte do Programa de cursos integrados Data Science Foundations: Data Structures and Algorithms
oferecido por
Informações sobre o curso
Completion of previous courses. Calculus, probability theory: distributions, expectations and moments. Some programming experience with Python.
O que você vai aprender
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
Habilidades que você terá
- 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.
oferecido por

Universidade do Colorado em Boulder
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.
Comece a trabalhar rumo ao seu mestrado
Programa - O que você aprenderá com este curso
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.
Avaliações
- 5 stars67,85%
- 4 stars21,42%
- 3 stars3,57%
- 1 star7,14%
Principais avaliações do DYNAMIC PROGRAMMING, GREEDY ALGORITHMS
Excellent. This course covers some difficult topics, but the lectures and homework assignments were superb and made them quite approachable.
Sobre Programa de cursos integrados 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.

Perguntas Frequentes – FAQ
Quando terei acesso às palestras e às tarefas?
O que recebo ao me inscrever nesta Especialização?
Existe algum auxílio financeiro disponível?
Mais dúvidas? Visite o Central de Ajuda ao estudante.