Introduction to Graduate Algorithms (Udacity)

Introduction to Graduate Algorithms (Udacity)

This is a graduate-level course in the design and analysis of algorithms. We study techniques for the design of algorithms (such as dynamic programming) and algorithms for fundamental problems (such as fast Fourier transform or FFT).

Class Deals by MOOC List - Click here and see Udacity's Active Discounts, Deals, and Promo Codes.

In addition, we study computational intractability, specifically, the theory of NP-completeness. The main topics covered in the course include: dynamic programming; divide and conquer, including FFT; randomized algorithms, including RSA cryptosystem and hashing using Bloom filters; graph algorithms; max-flow algorithms; linear programming; and NP-completeness.
The design and analysis of algorithms form an essential basis for computer science. This course is useful for those who want to pursue advanced studies in computer science, as well as those who want to work as a software engineer.

What you will learn

Dynamic Programming
Fibonacci Numbers, Longest Increasing Subsequence (LIS), Longest Common Subsequence (LCS)
Knapsack, Chain Matrix Multiplication
Shortest Path Algorithms

Randomized Algorithms
Modular Arithmetic: Fast Modular Exponentiation, Multiplicative Inverses
RSA Cryptosystem: Fermat's Little Theorem, RSA Protocol, Primality Testing
Hashing: Traditional Chain Hashing, Bloom Filters

Divide and Conquer
Fast Integer Multiplication
Linear-Time Median
Fast Fourier Transform

Graph Algorithms
Strongly Connected Components, 2-Satisfiability
Minimum Spanning Tree
Markov Chains, PageRank

Max-Flow Problems
Ford-Fulkerson Algorithm
Max-Flow Min-Cut Theorem, Edmonds-Karp Algorithm
Max-Flow applied to Image Segmentation

Linear Programming
Simplex Algorithm
Weak and Strong Duality
Max-SAT Approximation

NP-Completeness
Complexity Classes: P, NP, NP-Complete
NP-Complete Problems: 3-SAT, Independent Set, Clique, Vertex Cover, Knapsack, Subset-Sum
Halting Problem

Prerequisites and requirements
Students are expected to have an undergraduate course on the design and analysis of algorithms. In particular, they should be familiar with basic graph algorithms, including DFS, BFS, and Dijkstra's shortest path algorithm, and basic dynamic programming and divide and conquer algorithms (including solving recurrences). An undergraduate course in discrete mathematics is assumed, and students should be comfortable analyzing the asymptotic running time of algorithms.
The course uses the textbook Algorithms by Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani.

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

Related Courses

Approximation Algorithms (Coursera) Coursera
EIT Digital

Approximation Algorithms (Coursera)

Many real-world algorithmic problems cannot be solved efficiently using traditional algorithmic tools, for example because the problems are NP-hard. The goal of this course is to become familiar with important algorithmic concepts and techniques needed to effectively deal with such problems. These techniques apply when we don't require the optimal solution to certain problems, but an approximation that is close to the optimal solution. We will see how to efficiently find such approximations.

Sep 18th 2026
4 Weeks
Computability, Complexity & Algorithms (Udacity) Udacity
Georgia Institute of Technology,Udacity

Computability, Complexity & Algorithms (Udacity)

The Power and Limitation of Algorithms. In this course, we will ask the big questions, "What is a computer? What are the limits of computation? Are there problems that no computer will ever solve? Are there problems that can’t be solved quickly? What kinds of problems can we solve efficiently and how do we go about developing these algorithms?" Understanding the power and limitations of algorithms helps us develop the tools to make real-world computers smarter, faster and safer.

Self Paced
Self-Paced
High Performance Computing (Udacity) Udacity
Georgia Institute of Technology,Udacity

High Performance Computing (Udacity)

The goal of this course is to give you solid foundations for developing, analyzing, and implementing parallel and locality-efficient algorithms. This course focuses on theoretical underpinnings. To give a practical feeling for how algorithms map to and behave on real systems, we will supplement algorithmic theory with hands-on exercises on modern HPC systems, such as Cilk Plus or OpenMP on shared memory nodes, CUDA for graphics co-processors (GPUs), and MPI and PGAS models for distributed memory systems.

Self Paced
Self-Paced
Digital Signal Processing 4: Applications (Coursera) Coursera
École Polytechnique Fédérale de Lausanne

Digital Signal Processing 4: Applications (Coursera)

Digital Signal Processing is the branch of engineering that, in the space of just a few decades, has enabled unprecedented levels of interpersonal communication and of on-demand entertainment. By reworking the principles of electronics, telecommunication and computer science into a unifying paradigm, DSP is a the heart of the digital revolution that brought us CDs, DVDs, MP3 players, mobile phones and countless other devices.

Sep 14th 2026
3 Weeks
Algorithms, Part I (Coursera) Coursera
Princeton University

Algorithms, Part I (Coursera)

This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms.

Sep 21st 2026
5-12 Weeks
Julia Scientific Programming (Coursera) Coursera
University of Cape Town

Julia Scientific Programming (Coursera)

This four-module course introduces users to Julia as a first language. Julia is a high-level, high-performance dynamic programming language developed specifically for scientific computing. This language will be particularly useful for applications in physics, chemistry, astronomy, engineering, data science, bioinformatics and many more.

Sep 14th 2026
4 Weeks
An Introduction to Logic for Computer Science (Coursera) Coursera
University of Leeds

An Introduction to Logic for Computer Science (Coursera)

Logic plays a fundamental role in computer science. This course is designed to equip you with a solid understanding of the fundamental principles of logic and their relevance in the field of computer science. In this course, you'll explore proposition logic and discover its practical applications in problem-solving, algorithm design, and the development of intelligent systems. By engaging in hands-on exercises, exploring real-world examples, and participating in discussions, you'll develop strong logical reasoning and critical thinking skills.

Sep 21st 2026
2 Weeks
Machine Learning for Accounting with Python (Coursera) Coursera
University of Illinois at Urbana-Champaign

Machine Learning for Accounting with Python (Coursera)

This course, Machine Learning for Accounting with Python, introduces machine learning algorithms (models) and their applications in accounting problems. It covers classification, regression, clustering, text analysis, time series analysis. It also discusses model evaluation and model optimization. This course provides an entry point for students to be able to apply proper machine learning models on business related datasets with Python to solve various problems.

Sep 21st 2026
5-12 Weeks
Text Mining and Analytics (Coursera) Coursera
University of Illinois at Urbana-Champaign

Text Mining and Analytics (Coursera)

This course will cover the major techniques for mining and analyzing text data to discover interesting patterns, extract useful knowledge, and support decision making, with an emphasis on statistical approaches that can be generally applied to arbitrary text data in any natural language with no or minimum human effort.

Sep 7th 2026
5-12 Weeks