[
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contribution Guidelines\n\nPlease ensure your pull request adheres to the following guidelines:\n\n- No monetization backdoors like a partially free-access content.\n- Search previous suggestions before making a new one, as yours may be a duplicate.\n- Make an individual pull request for each suggestion.\n- Use the following format: `[Item Name](link) - Description`\n- New categories or improvements to the existing categorization are welcome.\n- Check your spelling and grammar.\n- The pull request and commit should have a useful title.\n\nThank you for your suggestions!\n"
  },
  {
    "path": "README.md",
    "content": "# Awesome Algorithms\n\nA curated list of awesome places to learn and/or practice algorithms.\nInspired by [awesome-awesomeness](https://github.com/bayandin/awesome-awesomeness) and all the other awesome Awesome libraries.\n\nIf you want to contribute, please read the [contribution guidelines](https://github.com/tayllan/awesome-algorithms/blob/master/CONTRIBUTING.md).\n\n- [Awesome Algorithms](#awesome-algorithms)\n    - [Beginner-Friendly](#beginner-friendly)\n    - [Programming Contest](#programming-contest)\n    - [Theory & Fundamentals](#theory--fundamentals)\n    - [Production System](#production-system)\n    - [Database](#database)\n    - [Special Topic](#special-topic)\n    - [Cheat Sheet](#cheat-sheet)\n    - [Related Awesome List](#related-awesome-list)\n\n## Beginner-Friendly\n\n### YouTube Playlist\n* [Khan Academy Algorithms](https://www.khanacademy.org/computing/computer-science/algorithms) - Algorithm course ministered by Tomas Cormen and Devin Balkcom.\n* FreeCodeCamp. Algorithms and Data Structures: [5 hours](https://www.youtube.com/watch?v=8hly31xKli0), [49 hours](https://youtu.be/xwI5OBEnsZU?si=W3CduIEmUehJERHk) - Complete beginner friendly Algorithms and Data Structures Tutorial with mindblowing animation.\n\n### Book\n* [Real World Algorithms: A Beginner's Guide](https://mitpress.mit.edu/books/real-world-algorithms) - An introduction to algorithms for readers with no background in advanced mathematics or computer science.\n* [Levitin. Introduction to Algorithms](https://www.amazon.com/Introduction-Design-Analysis-Algorithms-3rd/dp/0132316811) - A very accessible illustration of algorithms in the forms of puzzles. No programming experience is required!\n\n### Interactive Learning & Visualization\n* [VisuAlgo](http://visualgo.net) - Visualising data structures and algorithms through animation.\n* [See Algorithms](https://see-algorithms.com/) – Visualizes algorithms and lets users create and share custom graphs and binary trees.\n\n## Programming Contest\n\n### Website\n* [CP-Algorithms](https://cp-algorithms.com/) - Algorithms and data structures are especially popular in the field of competitive programming.\n\n### Book\n- [Steven Halim. Competitive Programming book](https://cpbook.net/)\n\n### Competition Website\n* [HackerEarth](https://www.hackerearth.com/) - Accessible tutorials for beginners.\n* [Code Chef](https://www.codechef.com/contests) - Accessible problems for beginners.\n* [Codeforces](http://codeforces.com/) - Challenging problems.\n* [TopCoder](https://www.topcoder.com/) - Sponsored by tech companies.\n* [Leet Code](https://leetcode.com/) - Interviews problems.\n* [UVA](https://uva.onlinejudge.org/) - Archives previous ACM-ICPC Regionals and World Finals.\n* [ProjectEuler](https://projecteuler.net/) - Math oriented problems.\n\n### Blog\n* [An awesome list for competitive programming!](https://codeforces.com/blog/entry/23054) - Awesome blog for all the resources and list of books and algorithms.\n* [Algorithms Weekly](https://petr-mitrichev.blogspot.com/) - A good blog by Petr Mitrichev, mainly in Java.\n* [Algorithm Tutorials by Tanuj Khattar](https://tanujkhattar.wordpress.com/) - Excellent blog by Tanuj Khattar. Covers tutorials on some interesting data structures along with example problems to solve.\n\n## Theory & Fundamentals\n\n### Book\n* [Introduction to Algorithms](https://mitpress.mit.edu/9780262046305/introduction-to-algorithms/) - Standard classic for anyone.\n* [The Art of Computer Programming](http://www-cs-faculty.stanford.edu/~uno/taocp.html) - Knuth's classic.\n* [The Algorithm Design Manual](http://www.algorist.com/) - Easy to read and full of real-world examples.\n\n### Online Course\n* [MIT - 6-006](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/video_galleries/lecture-videos/) - Well explained algorithms.\n* [MIT - 6-046j](https://ocw.mit.edu/courses/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video_galleries/video-lectures/) - Similar to the previous one, but with different algorithms.\n* [MIT - 6-00sc](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/index.htm) - An easy and well-explained introduction to algorithms.\n\n### YouTube Playlist\n* [Tim Roughgarden. Algorithms Illuminated](https://www.algorithmsilluminated.org/) - Tim Roughgarden, a pioneer of computer science, offers a companion to his book, with lecture videos and slides.\n\n## Production System\n\n* [Performance Engineering of Software Systems. MIT OCW](https://ocw.mit.edu/courses/6-172-performance-engineering-of-software-systems-fall-2018/) - A hands-on, project-based introduction to building scalable and high-performance software systems. Topics include performance analysis, algorithmic techniques for high performance, instruction-level optimizations, and caching optimizations.\n* [Cloud and Distributed Computing: Algorithms and Systems by Misra & Patel](https://www.wileyindia.com/cloud-and-distributed-computing-algorithms-and-systems.html) - It teaches the internals of cloud computing and how concepts of distributed systems work inside clouds.\n\n## Database\n\n* [PostgreSQL Query Optimization: The Ultimate Guide to Building Efficient Queries](https://www.oreilly.com/library/view/postgresql-query-optimization/9781484268858/) - It introduces different classes of queries and optimization techniques suitable to each, such as the use of indexes and specific join algorithms.\n\n## Special Topic\n\n* [Fabulous Adventures in Data Structures and Algorithms](https://www.manning.com/books/fabulous-adventures-in-data-structures-and-algorithms) - It teaches lesser-known algorithmic approaches like immutable data structures—stacks, queues, deques, and unusual constructions like Hughes lists.\n\n## Cheat Sheet\n\n* [Tech Interview Cheat Sheet](https://github.com/TSiege/Tech-Interview-Cheat-Sheet)\n* [Princeton DS Cheat Sheet](https://algs4.cs.princeton.edu/cheatsheet/)\n* [CLRS in short](https://sinon.org/algorithms//#data-structures)\n* [Rice university DS course in short](https://www.clear.rice.edu/comp160/data1.html)\n* [Algo Deck](https://github.com/teivah/algodeck/) - An open-source collection of +200 algorithmic cards.\n\n## Related Awesome List\n\n- [Theoretical Computer Science](https://github.com/mostafatouny/awesome-theoretical-computer-science/) - The interdisciplinary of Mathematics and Computer Science, distinguished by its emphasis on mathematical technique and rigour.\n- [Math](https://github.com/rossant/awesome-math#readme) - Freely available lecture notes on mathematics.\n\n## License\n\n[![Creative Commons License](http://i.creativecommons.org/l/by/4.0/88x31.png)](http://creativecommons.org/licenses/by/4.0/)\n\nThis work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).\n"
  }
]