Awesome Algorithms
A curated list of awesome places to learn and/or practice algorithms.
Inspired by awesome-awesomeness
and all the other awesome Awesome libraries.
If you want to contribute, please read the contribution
guidelines.
Websites
Websites you should use to learn classic algorithms
- A
Visual Guide to Graph Traversal Algorithms - Interactive
visualizations for learning how graph traversal algorithms work.
- W3School
- Data Structures tutorial.
- CodeChef -
Learning DSA by practice on Codechef
- Algorithm
Visualizer - Dozens of animated algorithms (with code), and you can
also create your own.
- Algorithms
Visualization - A dense article on Algorithms Visualization.
- Big-O Cheat Sheet - Big-O
complexities of common algorithms used in Computer Science.
- Code-Drills -
Practice problems recommender (includes Codeforces, Codechef, and
Spoj).
- CP-Algorithms - Algorithms
and data structures are especially popular in the field of competitive
programming.
- Data
Structure Visualizations - Visualize the behavior of Data Structures
and play with its operations.
- Geeks
for Geeks - Lots and lots of well-explained and implemented
algorithms.
- Path
Finding - A visual representation of how algorithms such as A*,
IDA*, Breadth-First-Search, Best-First-Search, and others describe a
path between two points A and B.
- Programiz - Easy to
follow tutorials on data structures and algorithms along with suitable
examples.
- Rosetta Code
- A programming chrestomathy site that aims to present implementations
of many algorithms and data structures in different programming
languages.
- Sorting Algorithms
- Nice and simple animations of sorting algorithms. With short codes and
discussions.
- Stoimen’s web log - Some
algorithms nicely explained.
- The Sound of
Sorting - The Sound of Sorting - “Audibilization” and Visualization
of Sorting Algorithms
- VisuAlgo - Visualising data
structures and algorithms through animation.
- Wikipedia
- Algorithms - Of course!!
- Wikipedia -
Data Structures - and why not ?!!
- Learnersbucket - Tutorials
on data structures and algorithms in Javascript.
- redblobgames -
interactive visual explanations of math and algorithms, using motivating
examples from computer games.
Youtube Playlists
High Quality Courses and tutorials on youtube
Online Courses
Free and High-Quality Courses Online
- Algorithms:
Divide and Conquer, Sorting and Searching, and Randomized Algorithms
- The primary topics are: asymptotic (“Big-oh”) notation, sorting and
searching, divide and conquer, and randomized algorithms.
- Algorithms:
Graph Search, Shortest Paths, and Data Structures - The primary
topics are: data structures, graph primitives, and their
applications.
- Algorithms:
Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming -
The primary topics are: greedy algorithms and dynamic programming.
- Algorithms:
Shortest Paths Revisited, NP-Complete Problems and What To Do About
Them - The primary topics are: shortest paths, NP-completeness and
what it means for the algorithm designer, and strategies for coping with
computationally intractable problems.
- Algorithms,
Part I - This course covers the essential information that every
serious programmer needs to know about algorithms and data structures.
Part I covers elementary data structures, sorting, and searching
algorithms.
- Algorithms, Part
II - Part II focuses on graph- and string-processing
algorithms.
- Khan
Academy Algorithms - Algorithm course ministered by Tomas Cormen and
Devin Balkcom.
- MIT
- 6-006 - Well explained algorithms.
- MIT
- 6-046j - Similar to the previous one, but with different
algorithms.
- MIT
- 6-00sc - An easy and well-explained introduction to
algorithms.
- MIT
18-409 - Topics in Theoretical Computer Science: An Algorithmist’s
Toolkit - It covers a collection of geometric techniques that apply
broadly in modern algorithm design.
- Udacity
Intro to Algorithms - Python-based Algorithms course.
- Algorithms
in Motion - Beginner’s algorithms course with fun illustrations,
based on the book Grokking Algorithms
YogiBearian
YouTube Channel - Lots of well-explained videos on various computer
science subjects. Account terminated due to violations of
Youtube Policies.
Books
The most highly regarded books to learn algorithms
Algorithms and Data
structures
Algorithm Analysis
Randomized Algorithms
Cheat Sheets
Github Libraries
Implementations of the most classic algorithms in a wide variety
of programming languages
Online Judges
Online Judges to practice what you learned above
- A2 Online Judge - Online Judge and
problem archive.
- ACM-ICPC Live
Archive - Hundreds of problems from previous ACM-ICPC Regionals and
World Finals.
- AIZU ONLINE JUDGE -
A Japanese online judge from the University of Aizu, offering a wide
range of algorithmic challenges.
- Algo Muse -
Research-based algorithmic problems.
- AtCoder - Japanese programming
contest website.
- Baekjoon Online Judge -
Korean Online Judge. 10000+ problems. Supports 60+ languages.
- Beecrowd - The Largest
Competitive Programming and Online Code Judgement Platform in Latin
America.
- CS Academy - Holds online
contests and IOI practice contests
- CodeChef - More problems and
monthly online contests.
- Codeforces - The only
programming contests Web 2.0 platform
- Codefights - Practice
programming and tackle your next tech interview
- CodeMarshal - Real-world
contests online!
- CodeWars - A website that
houses support to solve algorithms in many languages in varying
difficulty.
- CoderByte - A decent website
with algorithm challenges from beginner to advanced levels. Supports
most of the popular languages like C++, python, javascript, ruby.
- Firecode - Firecode.io uses
machine learning algorithms along with curated real-world interview
questions, solutions & a vibrant social community of learners to get
you ready for your next coding interview.
- Coding Blocks -
Website that has problems based on Maths, Data Structures, Various
Algorithm and also conducts Coding Competition.
- HackerEarth - Practice
algorithmic problems & challenges and participate in hiring
challenges.
- HackerRank - Featured
algorithm and functional programming online judges
- HiHoCoder - Chinese and English
problem-solving practice and recruitment challenge site.
- Infoarena - Romanian Online
Judge. 1500+ algorithmic problems
- Interviewbit - Learn,
practice, and prepare for interviews.
- Kattis- Online judge and
problem archive
- LavidaOnlineJudge - Korean
Online Judge(Half English). 1300+ problems.
- Learneroo Algorithms
Tutorials - Learn and practice algorithms by solving challenges
online.
- LeetCode - Learn algorithms and
prepare for interviews.
- Paiza - A Japanese platform offering
coding challenges and career preparation.
- PKU JudgeOnline - Chinese Online
Judge.
- ProjectEuler - Mathematical
problems that can be solved using algorithms (or just a pencil,
depending on how much you already know).
- Rosalind - A
platform for learning bioinformatics and programming through
problem-solving.
- ShareCode.io - Online Judge and
contest host with a lot of algorithmic problems in the archive to
practice.
- Snakify - An introductory Python
course with 100+ algorithmic problems and a step-by-step debugger (from
Russia).
- SPOJ - More problems.
- TopCoder - Lots of problems
and real-world/money-worthy problems in Graphic Design, Data Science,
and Development.
- Toph - Bangladeshi Online Judge.
Holds online contests regularly.
- URI -
Brazilian Online Judge. Not so many problems, but it’s growing and it
has online contests.
- UVA - Hundreds of
problems (from previous ACM-ICPC Regionals, World Finals, and
others).
- Codility -
Compete to land coding jobs at top companies
Blogs
Awesome list of blogs, mainly for competitive programming but you
can refer to these when learning a new topic/algorithm
Some tools that can help you in the learning of
algorithms
- Math -
Freely available lecture notes on mathematics.
- Theoretical
Computer Science - The interdisciplinary of Mathematics and Computer
Science, Distinguished by its emphasis on mathematical technique and
rigour.
License
And for the sake of copyleft, here’s our license:

This work is licensed under a Creative Commons
Attribution 4.0 International License.
algorithms.md
Github