Skip to content


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 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


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 - Japanese Online Judge.
  • Algo Muse - Research-based algorithmic problems.
  • AtCoder - Japanese programming contest website.
  • Baekjoon Online Judge - Korean Online Judge. 10000+ problems. Supports 60+ languages.
  • 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 - 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.
  • 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.
  • - 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


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.


And for the sake of copyleft, here's our license:

Creative Commons License

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