A curated list of courses, online judges, visualizations, books and competitions for learning and practicing algorithms.
Every entry is free to read or use unless marked as paid, and Korean-language resources are tagged so that both English and Korean learners can find what fits them. For implementations and contest-specific material, see Awesome Competitive Programming and Awesome Algorithms.
If you want to contribute, please read the contribution guidelines.
English | ํ๊ตญ์ด
- Courses
- Competitive programming
- Visualizations
- Interviews
- Videos
- Books
- Articles
- Competitions
- Miscellaneous
- Algorithms - Khan Academy / Free unit co-written with Thomas Cormen; articles and JavaScript challenges on sorting, recursion and graphs.
- DSA Tutorial - Geeks for Geeks / Free roadmap of articles and practice problems from arrays and sorting to graphs, DP and segment trees.
- Algorithm course for smart programming - Korean / Inflearn / Free 55-lecture course by Prof. Oheum Kwon on recursion, sorting, trees, hashing, graphs and DP.
- Algorithms and Data Structures - Class Central / Searchable catalog of hundreds of free and paid online courses on the subject, with reviews.
- Algorithms - edX(IITBombay) / Six-week course on sorting, order statistics, string, geometric and graph algorithms; free to audit.
- Intro to Algorithms - Udacity / Free self-paced course by Michael Littman that teaches graph algorithms and growth rates through social-network analysis.
- Introduction to Algorithms, 2020 - MIT OCW / Undergraduate 6.006 by Demaine, Ku and Solomon; lecture videos, notes, problem sets and exams with solutions.
- Design and Analysis of Algorithms, 2015 - MIT OCW / Undergraduate 6.046J on divide and conquer, DP, randomization and complexity; videos, notes and exams.
- Introduction to Algorithms, 2011 - MIT OCW / Earlier run of 6.006 by Demaine and Devadas; lecture and recitation videos, notes, Python assignments and exams.
- Classes and Teaching by Erik Demaine - MIT(Lecture notes) / Index of Erik Demaine's courses such as 6.006, 6.046 and 6.851, with lecture videos and notes.
- Efficient Algorithms and Intractable Problems, 2001 - UC Berkeley(Lecture notes) / CS 170 by Demmel and Shewchuk; notes and homework on graphs, DP, network flow and NP-completeness.
- Data Structures, 2014 - UC Berkeley(Lecture notes) / CS 61B by Jonathan Shewchuk; Java-based notes, videos, labs and projects on core data structures.
- Algorithms, Part I - Coursera(Princeton University) / Sedgewick and Wayne's free Java course on sorting, searching and elementary data structures.
- Algorithms, Part II - Coursera(Princeton University) / Sedgewick and Wayne's free Java course on graph and string algorithms, compression and intractability.
- USACO Guide - Free structured curriculum for competitive programming, from Bronze to Platinum.
- Data Structures and Algorithms - Paid Content. / Harvard University / Extension School course by Michael Mitzenmacher on graph, approximation and randomized algorithms.
- Algorithms Specialization - Paid Content. / Coursera(Stanford University) / Tim Roughgarden's four-course series on divide and conquer, graphs, greedy, DP and NP-completeness.
- HackerRank - Algorithm practice track with problems grouped by topic, from warmup to dynamic programming.
- Codility - Free lessons with practice tasks on time complexity, prefix sums, sorting and more.
- Topcoder - Long-running Single Round Matches (SRMs) with a problem archive and editorials.
- Codewars - Community-made kata for practicing in over 55 programming languages.
- CodeChef - Practice problems and regular rated contests.
- Codeforces - English, Russian / Rated rounds about once a week plus Educational rounds, a large problem archive and community blogs.
- AtCoder - English, Japanese / Weekly Beginner Contests plus Regular, Grand and Heuristic contests, run by AtCoder Inc. in Japan.
- UVa Online Judge - Classic problem archive with the uHunt progress tracker and the ICPC Live Archive.
- ICPC Problem Archive - Kattis / Problems from recent ICPC World Finals, grouped by difficulty and judged on Kattis.
- CS Academy - English, Russian, Arabic / Timed rounds with dynamic scoring plus built-in tools such as a graph editor and geometry tool.
- CSES Problem Set - Problem collection grouped by topic, from introductory problems to advanced techniques.
- Coderbyte - Coding challenges with video solutions; now primarily a candidate assessment platform.
- HackerEarth - Practice section for basic programming, data structures, algorithms and math, alongside hiring assessments.
- Infoarena - Romanian / Community judge with main, educational, monthly and ACM archives, contests and ratings.
- Kattis - Problem archive with thousands of problems and difficulty scores.
- Learneroo Algorithms Tutorials - Tutorials that teach algorithms and data structures by solving challenges.
- LeetCode - English, Chinese / Interview-style problem bank tagged by topic and difficulty, with weekly and biweekly contests.
- Rosalind - Bioinformatics and programming problems, starting with a Python Village for beginners.
- Snakify - Python 3 course for beginners with over 100 exercises.
- Sphere Online Judge (SPOJ) - Large archive of classical problems with support for many programming languages.
- beecrowd - English, Spanish, Brazilian Portuguese / Large problem archive with contests, formerly URI Online Judge.
- PKU JudgeOnline - English, Chinese / Peking University judge with a large archive drawn from regional contests, plus monthly contests.
- Aizu Online Judge - English, Japanese / Free judge run by the University of Aizu with over 2,000 problems from ICPC, JOI, PCK and introductory courses.
- Project Euler - Mathematical problems that need both insight and programming to solve.
- Advent of Code - Annual December puzzle calendar with a new problem each day.
- Project Euler @kr - Korean / Translation of the Project Euler problems.
- Baekjoon - Korean / The most widely used Korean online judge.
- solved.ac - Korean / Difficulty tiers and problem recommendations for Baekjoon.
- Algospot - Korean / Online judge and community run by the author of Algorithmic Problem Solving Strategies.
- JUNGOL - Korean / Online judge for Korea Olympiad in Informatics preparation.
- Koistudy - Korean / Online judge with problem sets sorted by algorithm and tier, plus contests.
- CodeUp - Korean / Online judge aimed at programming beginners.
- Codingdojang - Korean / Problem-solving practice site for sharpening coding skills.
- Programmers - Korean / Coding test practice problems for job preparation.
- Codeground - English, Korean / Samsung-run platform with practice problems, user-created OpenRound contests and the SCPC collegiate contest.
- SW Expert Academy - Korean / Samsung's learning platform with problems and courses for software skills.
- Algorithm Visualizer - Interactive platform that visualizes algorithms from code.
- A Visual Guide to Graph Traversal Algorithms - Interactive DFS and BFS explanations by Workshape.io.
- VisuAlgo - English, Chinese, Indonesian / Animated visualizations of 24 data structure and algorithm modules with quizzes, by Steven Halim of NUS.
- Algorithms Visualization - Mike Bostock's essay on visualizing sampling, shuffling, sorting and maze generation.
- Data Structure Visualizations - Interactive animations by David Galles, University of San Francisco.
- Sorting Algorithms Animations - Side-by-side animations comparing sorting algorithms, hosted by Toptal.
- Path Finding - Interactive grid demo of A*, Dijkstra, BFS, Jump Point Search and other pathfinding algorithms.
- Introduction to the A* Algorithm - Red Blob Games / Interactive tutorial by Amit Patel that builds A* up from breadth-first search, Dijkstra and greedy best-first.
- Python Tutor - Step-by-step visual execution of Python, JavaScript, C, C++ and Java code.
- Algorithm Wiki by Will Thimbleby - Interactive wiki whose visualisations run from real JavaScript implementations.
- TensorFlow Playground - Browser demo for tinkering with a small neural network.
- Algovis - Curated list by enjalot of algorithm-visualization projects and tools such as Tailspin, Vamonos and Tangle.
- Vamonos - JavaScript Programming Language / Oregon State library for browser visualizations of array and graph algorithms with breakpoints and step-back.
- The Sound of Sorting - C ++ Programming Language / Timo Bingmann's demo that draws and plays a tone for each comparison across dozens of sorting algorithms.
- Interview Cake - Practice programming interview questions with worked solutions.
- InterviewBit - Practice coding interview questions organised by topic.
- NeetCode - Curated problem roadmap with video explanations.
- Software Engineering technical interviews - Study guide covering data structures, algorithms, runtime analysis, video lectures and interview books.
- Tech Interview Handbook - Free curated interview preparation materials, including the Blind 75 and Grind 75 question lists.
- Coding Interview University - Multi-month computer science study plan for becoming a software engineer.
- Interactive Python coding interview challenges - Over 120 algorithm and data structure challenges in Jupyter notebooks, with solutions and Anki flashcards.
- How algorithms shape our world - Kevin Slavin / 2011 TED talk on how trading, espionage and recommendation algorithms shape everyday life.
- Algorithms - Abdul Bari / 84 beginner lectures from complexity analysis through divide and conquer, greedy and dynamic programming.
- Algorithms - Oresoft LWC / About 100 short beginner videos by Omkar Deshpande on asymptotic notation, sorting, searching and GATE problems.
- Computer Sc - Programming and Data Structure - Nptelhrd / 32 IIT Kharagpur lectures by P.P. Chakraborty on C programming, recursion, linked lists, trees and graphs.
- Introduction to Algorithms, 2020 - MIT 6.006 / 32 undergraduate lectures and problem sessions by Demaine, Ku and Solomon on sorting, trees, graphs and DP.
- Design and Analysis of Algorithms, 2015 - MIT 6.046J / 34 advanced lectures and recitations by Demaine, Devadas and Lynch on randomization, flows and NP-completeness.
- Introduction to Algorithms, 2011 - MIT 6.006 / 47 lectures and recitations by Devadas and Demaine on sorting, hashing, graph search, shortest paths and DP.
- Merge Sort vs Quick Sort - Animated comparison by udiprod.
- 15 Sorting Algorithms in 6 Minutes - Timo Bingmann / Six-minute video that visualizes and sonifies 15 sorting algorithms, from quicksort and merge sort to bogo sort.
- AlgoRythmics - Sapientia University / 14 videos in which folk dancers act out sorting and searching algorithms such as bubble, quick and merge sort.
- Elementary Algorithms - Free book of functional algorithms and data structures with 120 exercises, in English and Chinese.
- Data Structures and Algorithms - The Basic Toolbox by Mehlhorn and Sanders, with chapter PDFs available for download.
- Algorithms by Jeff Erickson - Free textbook and lecture notes from the University of Illinois.
- Competitive Programmer's Handbook - Free / Antti Laaksonen / About 300 pages introducing competitive programming, from sorting and DP to graphs, number theory and geometry.
- Open Data Structures - Free / Pat Morin's open textbook on lists, hash tables, search trees, heaps and graphs in Java, C++ and pseudocode editions.
- Hello Algo - Free / English, Chinese, Japanese and more / Beginner tutorial by krahets with animated illustrations and runnable code in 14 languages.
- Cracking the Coding Interview - Gayle Laakmann McDowell's interview preparation book with 189 questions; solutions on GitHub, author on Quora.
- Algorithm Design - Textbook by Jon Kleinberg and รva Tardos, published by Pearson.
- Algorithms - Fourth edition by Robert Sedgewick and Kevin Wayne, with the book site's code and exercises.
- Introduction to Algorithms - Fourth edition of the CLRS textbook by Cormen, Leiserson, Rivest and Stein.
- Grokking Algorithms - Illustrated, beginner-friendly guide by Aditya Bhargava, published by Manning.
- Algorithmic Problem Solving Strategies - Korean / Textbook by Jongman Koo that teaches algorithm design through contest problems.
- Algorithms for Competitive Programming - English translation of the e-maxx algorithm articles.
- Big-O Cheat Sheet - Time and space complexities of common data structure operations and sorting algorithms, by Eric Rowell.
- stoimen's web log - Blog series on classic algorithms and data structures.
- What are the best and efficient ways to learn algorithms for beginners? - Quora / Community answers recommending fundamentals first, textbook study and steady practice on online judges.
- What are the best books on algorithms and data structures? - Quora / Community answers that mostly point to CLRS, with Sedgewick, Skiena and Manber as alternatives.
- NEXTERS algorithm study notes - Korean / Study notes from the NEXTERS club, published on NAVER D2.
- ICPC - The International Collegiate Programming Contest, the oldest and largest team programming competition for university students.
- IOI - The International Olympiad in Informatics, the annual algorithmic competition for secondary school students.
- Meta Hacker Cup - Meta's annual open programming competition.
- AtCoder Contests - Weekly rated contests for beginners to experts.
- Codeforces Contests - Frequent rated rounds, the most active contest platform.
- Google Coding Competitions Archive - Official archive of problems and solutions from Code Jam, Kick Start and Hash Code, which ended in 2023.
- Google Summer of Code - Annual program that pairs students with open source organizations for a paid summer coding project.
- KOI - Korean / Korea Olympiad in Informatics / Annual contest for elementary to high school students with an online first round and a second round for its medalists.
- UCPC - Korean / Union of Collegiate Programming Contest clubs / Annual three-person team contest with an online qualifier and an on-site final.
- The Algorithms - Open-source implementations of algorithms in every major language.
- MIT OpenCourseWare - YouTube playlists of full MIT course lectures.
- Awesome Data Science - Curated list of data science learning resources.
- Awesome Machine Learning - Curated list of machine learning frameworks, libraries and software by language.
- Rosetta Code - Solutions to the same tasks in as many programming languages as possible, for comparing how languages differ.
- Code.org - Nonprofit with a free K-12 computer science curriculum and the Hour of Code campaign.
- CheckiO - Online game for Python and JavaScript coders.
- HUST Online Judge System - PHP (Laravel) rewrite of the HUST judge that sends submissions to separate judge servers over RabbitMQ.
- Tech stack for Baekjoon online judge - Korean / Startlink's write-up of how the Baekjoon judge was built and which technologies it runs on.