# Awesome Algorithms Education [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)
An algorithm is a list of rules to follow in order to solve a problem.

Algorithms need to have their steps in the right order. Think about an algorithm for getting dressed in the morning. What if you put on your coat before your jumper? Your jumper would be on top of your coat and that would be silly! When you write an algorithm the order of the instructions is very important.

If you want to contribute, please read the [contribution guidelines](https://github.com/gaerae/awesome-algorithms/blob/master/contributing.md).

Language: **[😎 English](readme-en.md)** • [한국어 (Korean)](readme-ko.md)

## Contents
- [Courses](#courses)
- [Competitive programming](#competitive-programming)
- [Visualizations](#visualizations)
- [Interviews](#interviews)
- [Videos](#videos)
- [Books](#books)
- [Articles](#articles)
- [Competitions](#competitions)
- [Miscellaneous](#miscellaneous)

## Courses
#### Introductory
- [Algorithms](https://www.khanacademy.org/computing/computer-science/algorithms) - Khan Academy.
- [Fundamentals of Algorithms](http://www.geeksforgeeks.org/fundamentals-of-algorithms) - Geeks for Geeks.
- [Algorithm course for smart programming](https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B0%95%EC%A2%8C) - Korean / Inflearn.

#### Intermediate
- [Algorithms and Data Structures](https://www.class-central.com/subject/algorithms-and-data-structures) - Class Central.
- [Algorithms](https://www.edx.org/course/algorithms) - edX(IITBombay).
- [Intro to Algorithms](https://www.udacity.com/course/intro-to-algorithms--cs215) - Udacity.
- [Design and Analysis of Algorithms, 2015](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2015) - MIT OCW.
- [Introduction to Algorithms, 2011](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011) - MIT OCW.
- [Classes and Teaching by Erik Demaine](http://erikdemaine.org/classes) - MIT(Lecture notes).
- [Efficient Algorithms and Intractable Problems, 2001](https://people.eecs.berkeley.edu/~jrs/170/) - UC Berkeley(Lecture notes).
- [Data Structures, 2014](https://people.eecs.berkeley.edu/~jrs/61b/) - UC Berkeley(Lecture notes).
- [Algorithms, Etc., 2015](https://people.eecs.berkeley.edu/~jrs/61b/) - Illinois University(Lecture notes).
- [Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1) - Coursera(Princeton University).
- [Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) - Coursera(Princeton University).

#### Advanced
- [Data Structures and Algorithms](http://online-learning.harvard.edu/course/data-structures-and-algorithms) - Paid Content. / Harvard University.
- [Algorithms Specialization](https://www.coursera.org/specializations/algorithms) - Paid Content. / Coursera(Stanford University).

## Competitive programming
- [HackerRank](https://www.hackerrank.com/domains/algorithms)
- [Codility](https://app.codility.com/programmers)
- [TopCoder](https://www.topcoder.com)
- [CodeWars](http://www.codewars.com)
- [CodeChef](https://www.codechef.com)
- [Codeforces](http://codeforces.com) - English, Romanian, Russian.
- [UVA](https://uva.onlinejudge.org)
- [A2 Online Judge](https://a2oj.com)
- [ACM-ICPC Live Archive](https://icpcarchive.ecs.baylor.edu)
- [CS Academy](https://csacademy.com) - English, Russian, Arabic.
- [CoderByte](https://coderbyte.com/course/learn-data-structures-and-algorithms)
- [HackerEarth](https://www.hackerearth.com)
- [Infoarena](http://www.infoarena.ro) - Romanian.
- [Kattis](https://open.kattis.com)
- [Learneroo Algorithms Tutorials](https://www.learneroo.com/subjects/8)
- [LeetCode](https://leetcode.com/problemset/algorithms) - English, Chinese.
- [Rosalind](http://rosalind.info/problems/locations)
- [ShareCode](https://sharecode.io)
- [Snakify](https://snakify.org)
- [Sphere Online Judge (SPOJ)](http://www.spoj.com)
- [URI](https://www.urionlinejudge.com.br) - English, Spanish, Brazilian Portuguese.
- [PKU JudgeOnline](http://poj.org) - English, Chinese.
- [AIZU ONLINE JUDGE](http://judge.u-aizu.ac.jp/onlinejudge) - English, Japanese.
- [Project Euler](https://projecteuler.net)
- [Project Euler @kr](http://euler.synap.co.kr) - Korean.
- [Baekjoon](https://www.acmicpc.net) - Korean.
- [Algospot](https://algospot.com) - Korean.
- [Dovelet](http://www.dovelet.com) - Korean.
- [JUNGOL](http://www.jungol.co.kr) - Korean.
- [Koistudy](http://koistudy.net) - Korean.
- [CodeUp](http://codeup.kr) - Korean.
- [Codingdojang](http://codingdojang.com) - Korean.
- [Programmers](https://programmers.co.kr/learn/challenges) - Korean.
- [Codeground](https://www.codeground.org) - English, Korean.
- [SW Expert Academy](https://www.swexpertacademy.com) - Korean.

## Visualizations
- [Algorithm Visualizer](http://algo-visualizer.jasonpark.me)
- [A Visual Guide to Graph Traversal Algorithms](https://workshape.github.io/visual-graph-algorithms/)
- [VisuAlgo](https://visualgo.net) - English, Korean, Chinese, Japanese.
- [Algomation](http://www.algomation.com)
- [Algorithms Visualization](http://bost.ocks.org/mike/algorithms/)
- [Data Structure Visualizations](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)
- [Sorting Algorithms Animations](https://www.toptal.com/developers/sorting-algorithms)
- [SORTING](http://sorting.at)
- [String Matching Visualization](http://whocouldthat.be/visualizing-string-matching)
- [Path Finding](https://qiao.github.io/PathFinding.js/visual/)
- [Algorithm Wiki by Will Thimbleby](http://will.thimbleby.net/algorithms)
- [TensorFlow Playground](http://playground.tensorflow.org)
- [Tangle](https://github.com/enjalot/algovis) - JavaScript Programming Language.
- [Vamonos](http://rosulek.github.io/vamonos) - JavaScript Programming Language.
- [The Sound of Sorting](http://panthema.net/2013/sound-of-sorting) - C ++ Programming Language.
- [GeneaQuilts](http://www.aviz.fr/geneaquilts) - Java Programming Language.

## Interviews
- [Interview Cake](https://www.interviewcake.com)
- [Top 10 Algorithms for Coding Interview](https://www.programcreek.com/2012/11/top-10-algorithms-for-coding-interview)
- [Software Engineering technical interviews](https://github.com/kdn251/interviews)
- [Tech Interview Handbook](https://github.com/yangshun/tech-interview-handbook)
- [Interactive Python coding interview challenges](https://github.com/donnemartin/interactive-coding-challenges)

## Videos
- [How algorithms shape our world](https://www.ted.com/talks/kevin_slavin_how_algorithms_shape_our_world) - Kevin Slavin.
- [Algorithms](https://www.youtube.com/playlist?list=PL01A89F4E9E5F3ADE) - Oresoft LWC.
- [Computer Sc - Programming and Data Structure](https://www.youtube.com/playlist?list=PLD9781AC5EBC9FA16) - Nptelhrd.
- [Design and Analysis of Algorithms, 2015](https://www.youtube.com/playlist?list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
- [Introduction to Algorithms, 2011](https://www.youtube.com/playlist?list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
- [Merge Sort vs Quick Sort](https://youtu.be/es2T6KY45cA)
- [15 Sorting Algorithms in 6 Minutes](https://youtu.be/kPRA0W1kECg)
- [AlgoRythmics](https://www.youtube.com/user/AlgoRythmics/videos) - Sapientia University.

## Books
- [Elementary Algorithms](https://github.com/liuxinyu95/AlgoXY)
- [Data Structures and Algorithms](https://people.mpi-inf.mpg.de/~mehlhorn/Toolbox.html)
- [Korea Olympiad in Informatics](http://www.digitalculture.or.kr/koi/StudyBook.do)
- [Thinking critically about and researching algorithms](http://futuredata.stanford.edu/classes/cs345s/handouts/kitchin.pdf)
- [CRACKING the CODING INTERVIEW](http://www.crackingthecodinginterview.com) - [GitHub](https://github.com/careercup/CtCI-6th-Edition), [Quora](https://www.quora.com/profile/Gayle-Laakmann-McDowell).
- [Algorithm Design](https://www.pearsonhighered.com/program/Kleinberg-Algorithm-Design/PGM319216.html)
- [Algorithms](http://algs4.cs.princeton.edu/home/)
- [Introduction to Algorithms](http://mitpress.mit.edu/books/introduction-algorithms)
- [Grokking Algorithms](http://www.manning.com/bhargava)
- [Algorithmic Problem Solving Strategies](http://book.algospot.com) - Korean.

## Articles
- [stoimen's web log](http://www.stoimen.com/category/algorithms)
- [What are the best and efficient ways to learn algorithms for beginners?](https://www.quora.com/What-are-the-best-and-efficient-ways-to-learn-algorithms-for-beginners)
- [What are the best books on algorithms and data structures?](https://www.quora.com/What-are-the-best-books-on-algorithms-and-data-structures)
- [Study data for algorithm](http://d2.naver.com/news/4850628) - Korean.

## Competitions
- [Google Code Jam](https://codingcompetitions.withgoogle.com/codejam) - Google’s largest coding competition, calls on programmers around the world to put their skills to the test by solving multiple rounds of algorithmic puzzles.
- [Google Kick Start](https://codingcompetitions.withgoogle.com/kickstart) - University students looking to develop their coding skills and potentially pursue a Google career.
- [Google Hash Code](https://codingcompetitions.withgoogle.com/hashcode) - Students in Africa, Europe, and the Middle East looking to work as a team on real Google problems.
- [Google Summer of Code](https://summerofcode.withgoogle.com) - A global program focused on introducing students to open source software development. Students work on a 3 month programming project with an open source organization during their break from university.

## Miscellaneous
- [Competitive Programming](https://github.com/lnishan/awesome-competitive-programming#readme)
- [MIT OpenCourseWare](https://www.youtube.com/user/MIT/playlists)
- [OEDb(Open Education Databases): Algorithm](http://oedb.org/open/search-results/?search-term=algorithm)
- [Awesome Data Science](https://github.com/bulutyazilim/awesome-datascience)
- [Awesome Machine Learning](https://github.com/josephmisiti/awesome-machine-learning)
- [Rosetta Code](http://rosettacode.org/wiki/Rosetta_Code) - The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another.
- [Code.org](https://code.org) - Anybody can learn.
- [CheckiO](https://checkio.org) - Online game for Python and JavaScript coders.
- [HUST Online Judge System](https://github.com/freefcw/hustoj-neo) - Online Judge is a web application.
- [Tech stack for Baekjoon online judge](https://goo.gl/qwgBAp) - Korean / How to choose a technology stack for judge?

## License
[![CC0](https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)

To the extent possible under law, [gaerae](https://github.com/gaerae) has waived all copyright and related or neighboring rights to this work.

[algorithmseducation.md Github](https://github.com/gaerae/awesome-algorithms-education
)
