---
title: Algorithms
description: Algorithms are step-by-step procedures used to solve computational problems and process data. Learners will understand sorting, searching, graph traversal, and how to analyze time and space complexity using Big O notation to write efficient code.
category: programming-tech
subcategory: programming-fundamentals
difficulty: beginner, intermediate, advanced
url: /subject/algorithms
---

# Algorithms

Algorithms are step-by-step procedures used to solve computational problems and process data. Learners will understand sorting, searching, graph traversal, and how to analyze time and space complexity using Big O notation to write efficient code.

## Where to start

Start with Khan Academy Algorithms, a free interactive unit developed with Thomas Cormen and Devin Balkcom that covers binary search, asymptotic notation, recursion and sorting. If you only use one resource, make it Introduction to Algorithms (CLRS) by Cormen, Leiserson, Rivest and Stein, the standard textbook with formal proofs of correctness and running time. Design and Analysis of Algorithms (MIT 6.046J) is the natural next step.

## Available Resources

1 Videos • 7 Books • 7 Courses • 6 Websites

## Books

### 1. Introduction to Algorithms (CLRS)

**Author:** Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

Textbook covering sorting, data structures, graph algorithms, dynamic programming, greedy methods, and NP-completeness, with pseudocode and formal proofs of correctness and running time. Readers finish able to analyze asymptotic complexity and justify algorithm choices mathematically.

**Difficulty:** Advanced | **Price:** Paid

**Link:** https://www.amazon.com/s?k=0262033844&tag=edmonddante07-20

**Tags:** algorithms, data-structures, computational-complexity, dynamic-programming, graph-algorithms, textbook

### 2. Competitive Programmer's Handbook

**Author:** Antti Laaksonen

Antti Laaksonen's free handbook. Its chapter on complete search and binary search treats the monotonic-predicate formulation and its off-by-one traps directly; later chapters implement depth-first and breadth-first search, shortest paths and tree traversal in C++.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://cses.fi/book/book.pdf

**Tags:** competitive-programming, binary-search, graph-search, complete-search, cpp

### 3. Algorithms

**Author:** Robert Sedgewick

Sedgewick's 1983 first edition, presenting sorting, searching, string processing, geometric and graph algorithms as compact Pascal programs with informal performance analysis. A survey of the field rather than a proof-heavy treatment; later editions use C, C++ or Java.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/032157351X?tag=edmonddante07-20

**Tags:** algorithms, sorting, searching, graph-algorithms, string-algorithms, pascal

### 4. Grokking Algorithms

**Author:** Aditya Y. Bhargava

An illustrated introduction to core algorithms — binary search, sorting, graphs, greedy methods, dynamic programming — explained with drawings and Python code. Readers come away able to recognize which algorithm fits a problem and reason about big-O cost.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/1617292230?tag=edmonddante07-20

**Tags:** books, technology-computer-science, computer-sciences

### 5. Algorithms Unlocked

**Author:** Thomas H. Cormen

Cormen's non-technical companion to CLRS, explaining searching, sorting, string matching, graph algorithms, and cryptography in prose with minimal mathematics. Readers gain an intuition for how algorithms work and why running time matters, without implementing them.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/0262518805?tag=edmonddante07-20

**Tags:** books, technology-computer-science, algorithms

### 6. The Art of Computer Programming

**Author:** Donald E. Knuth

Knuth's multi-volume treatise on fundamental algorithms, seminumerical algorithms, sorting, and searching, with mathematical analysis and MIX assembly programs. Working through it gives a rigorous grounding in algorithm analysis, though it demands patience and strong mathematics.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/0201038099?tag=edmonddante07-20

**Tags:** books, mathematics-statistics, discrete-math

### 7. Algorithms Illuminated

**Author:** Tim Roughgarden

Roughgarden's Stanford-based series covering asymptotic analysis, divide-and-conquer, randomized selection, and sorting in Part 1, paired with free video lectures. Readers finish able to analyze recurrences and justify why a given algorithm scales.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/0999282905?tag=edmonddante07-20

**Tags:** books, technology-computer-science, algorithms

## Courses

### 1. Introduction to Algorithms (MIT 6.006)

**Author:** Erik Demaine, Srini Devadas

MIT's undergraduate introduction, with video lectures, problem sets, and exams covering asymptotic analysis, sorting, hashing, binary search trees, graph search, shortest paths, and dynamic programming. Assignments use Python, so you implement each technique rather than only proving it.

**Difficulty:** Intermediate | **Price:** Free

**Link:** https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/

**Tags:** algorithms, data-structures, dynamic-programming, graph-algorithms, computational-complexity

### 2. Topics in Theoretical Computer Science: An Algorithmist's Toolkit (MIT 18.409)

**Author:** Jonathan Kelner

Geometric and spectral techniques used in modern algorithm design, starting with spectral graph theory: graph Laplacians, spectral partitioning, Cheeger's inequality, expanders and random walks. 25 lecture-note files and problem sets equip learners to apply eigenvalue methods to algorithmic problems.

**Difficulty:** Advanced | **Price:** Free

**Link:** https://ocw.mit.edu/courses/18-409-topics-in-theoretical-computer-science-an-algorithmists-toolkit-fall-2009/

**Tags:** spectral-graph-theory, graph-laplacian, cheeger-inequality, expander-graphs, random-walks

### 3. Introduction to Algorithms (MIT 6.006)

**Author:** Erik Demaine, Jason Ku, Justin Solomon

Modeling computational problems and solving them with core algorithms and data structures: sorting, hashing, binary trees, heaps, graph search, shortest paths and dynamic programming. 32 lecture videos, notes, problem sets and exams with solutions teach asymptotic analysis and algorithm design.

**Difficulty:** Intermediate | **Price:** Free

**Link:** https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/

**Tags:** data-structures, asymptotic-analysis, graph-algorithms, dynamic-programming, sorting

### 4. Machine Learning Course - CS 156

Master theoretical machine learning with Yaser Abu-Mostafa's renowned "Learning From Data" course. Explore fundamental concepts and algorithms.

**Difficulty:** Advanced | **Price:** Free

**Link:** https://www.youtube.com/playlist?list=PLD63A284B7615313A

**Tags:** machine-learning, statistical-learning-theory, generalization, caltech

### 5. Design and Analysis of Algorithms (MIT 6.046J)

**Author:** Erik Demaine, Srini Devadas, Nancy Lynch

Intermediate algorithms after 6.006: divide-and-conquer, randomization, dynamic programming, greedy algorithms, network flow, amortization, complexity and cryptography. 39 lecture videos, notes, problem sets and exams with solutions train learners to design efficient algorithms and prove their correctness and running time.

**Difficulty:** Intermediate | **Price:** Free

**Link:** https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/

**Tags:** algorithm-design, dynamic-programming, randomized-algorithms, greedy-algorithms, network-flow, complexity-analysis

### 6. Algorithmic Toolbox

This online course covers basic algorithmic techniques and ideas for computational problems arising frequently in practical applications: sorting and searching, divide and conquer, greedy algorithms, dynamic programming. We will learn a lot of theory: how to sort data and how it helps for searching; how to break a large problem into pieces and solve them recursively; when it makes sense to proceed greedily; how dynamic programming is used in genomic studies. You will practice solving computational problems, designing new algorithms, and implementing solutions efficiently (so that they run in less than a second).

**Difficulty:** Beginner | **Price:** Free

**Link:** https://www.coursera.org/learn/algorithmic-toolbox

**Tags:** algorithms, dynamic-programming, greedy-algorithms, divide-and-conquer, sorting

### 7. Algorithms, Part I

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.

All the features of this course are available for free. People who are interested in digging deeper into the content may wish to obtain the textbook Algorithms, Fourth Edition (upon which the course is based) or visit the website algs4.cs.princeton.edu for a wealth of additional material.

This course does not offer a certificate upon completion.

**Difficulty:** Beginner | **Language:** English | **Duration:** 6 weeks of study, 6–10 hours per week. | **Price:** Free

**Link:** https://www.coursera.org/learn/algorithms-part1

**Tags:** courses, technology-computer-science, algorithms

## Websites

### 1. Princeton Algorithms 4

Companion site to Sedgewick and Wayne's Algorithms, fourth edition, with free Java implementations, exercises, lecture slides, and test data for sorting, searching, graphs, and strings. Readers can study working code alongside the textbook's analysis.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://algs4.cs.princeton.edu/home/

**Tags:** data-structures, sorting, searching, graph-algorithms, java

### 2. USACO Guide

Free, community-maintained curriculum for the USA Computing Olympiad, organized from Bronze to Platinum with explanations, code in C++, Java, and Python, and curated practice problems. Learners build skill in greedy algorithms, binary search, dynamic programming, graph algorithms, and data structures for contest problem solving.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://usaco.guide/

**Tags:** competitive-programming, algorithms, dynamic-programming, graph-algorithms, usaco

### 3. Khan Academy Algorithms

Free interactive unit developed with Dartmouth professors Thomas Cormen and Devin Balkcom, covering binary search, asymptotic notation, recursion, sorting, and graph representation through visualizations and JavaScript exercises that check understanding at each step.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://www.khanacademy.org/computing/computer-science/algorithms

**Tags:** algorithms, binary-search, recursion, sorting, asymptotic-notation, graphs

### 4. Visualgo

Interactive visualizations of data structures and algorithms built by Steven Halim at the National University of Singapore, animating sorting, trees, graphs, and shortest paths step by step so learners can trace how each algorithm changes state.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://visualgo.net/en

**Tags:** algorithm-visualization, data-structures, sorting, graph-algorithms, interactive

### 5. algorithmica.org

Algorithmica.org is an educational resource for learning algorithms, offering tutorials and explanations on core topics such as data structures, graph algorithms, sorting, and complexity analysis. It also provides practical code examples and exercises to build intuition.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://algorithmica.org

**Tags:** websites, mathematics-statistics, discrete-math

### 6. cp-algorithms.com

Open-source translation of the Russian e-maxx algorithm compendium, with articles on number theory, combinatorics, graph algorithms, string processing, and geometry. Each entry pairs a derivation with tested C++ code you can adapt for contest problems.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://cp-algorithms.com

**Tags:** websites, technology-computer-science, computer-sciences

## Videos

### 1. Algorithms Course by Abdul Bari

Opening lecture of Abdul Bari's algorithms series, distinguishing an algorithm from a program, listing the properties every algorithm must satisfy, and outlining the time and space criteria used to compare competing solutions to the same problem.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://www.youtube.com/watch?v=0IAPZzGSbME

**Tags:** algorithms, algorithm-analysis, time-complexity, lecture-series, introductory

## Podcasts

### 1. Algorithms + Data Structures = Programs

**Author:** Conor Hoekstra, Bryce Adelstein Lelbach & Ben Deane

The Algorithms + Data Structures = Programs Podcast (aka ADSP: The Podcast) is a programming podcast hosted by two NVIDIA software engineers that focuses on the C++ and Rust programming languages. Topics discussed include algorithms, data structures, programming languages, latest news in tech and more. The podcast was initially inspired by Magic Read Along. Feel free to follow us on Twitter at @adspthepodcast.

**Difficulty:** Beginner | **Language:** en-us | **Price:** Free

**Link:** https://adspthepodcast.com/

**Tags:** algorithms, data-structures, cpp, rust, programming-languages

---

*This content is part of Dantes.io - Your Treasure Map to Knowledge*

*Curated by humans at Dantes.io. Personal study use welcome; republishing this curation requires permission (team@dantes.io).*

View this page online: https://dantes.io/subject/algorithms