Skip to content

Commit 694d3b3

Browse files
authored
Update README.md
1 parent 7573bd9 commit 694d3b3

File tree

1 file changed

+0
-56
lines changed

1 file changed

+0
-56
lines changed

README.md

-56
Original file line numberDiff line numberDiff line change
@@ -148,62 +148,6 @@ Competitive programming style problems from [previous competitions](https://code
148148
## [USACO](https://github.com/jpa99/Algorithms/tree/master/USACO)
149149
Algorithmic problems from past USA Computing Olympiad contests, check out the full [problem database](http://www.usaco.org/index.php?page=contests). The USACO folder contains the full inventory of problems I've implemented with it's own table of contents [here](https://github.com/jpa99/Algorithms/tree/master/USACO).
150150

151-
# Additional Resources
152-
If you're interested in expanding your knowledge of algorithms, I've included a list of resources that you can take a look at.
153-
154-
## Books
155-
Some helpful books to formally introduce algorithims:
156-
* [Introduction to Algorithms (CLRS)](https://web.njit.edu/~wl256/download/cs610/Introduction-to-algorithm-3rdEdition.pdf) by Cormen, Leiserson, Rivest, and Stein - Standard text for introductory algorithms courses; proof-based, very rigorous, comprehensive explanations.
157-
* [The Art of Computer Programming](https://www.amazon.com/Computer-Programming-Volumes-1-4A-Boxed/dp/0321751043) by Knuth - Extremely high level, incredibly detailed text; should be used primarily as a reference.
158-
* [Algorithms Unlocked](https://book-store.github.io/cse/thirdyear/[Thomas_H._Cormen]_Algorithms_unlocked(BookZZ.org).pdf) by Cormen - More accessible, beginner-friendly text; read this if you find CLRS too daunting.
159-
* [Algorithm Design](http://184.168.171.185/BOOKS/DVD%201/Algorithm%20Design%20-%20Jon%20Kleinberg,%20Eva%20Tardos.pdf) by Kleinberg and Tardos - Great introductory book, probably better suited for beginners than CLRS; great explanations of graph theoretic algorithms and analyses.
160-
* [Algorithms](http://algs4.cs.princeton.edu/home/) by Sedgewick - Excellent book, very comparable to Algorithm Design by Kleinberg and Tardos in terms of accessibility; offers very good implementations of key algorithms in Java.
161-
* [The Algorithm Design Manual](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.471.4772&rep=rep1&type=pdf) by Skiena - Perhaps a different flavor of algorithms books, Skiena introduces algorithms and problem types but doesn't delve into as much rigor as some of the above texts.
162-
* [Introduction to Algorithms: A Creative Approach](https://github.com/haseebr/competitive-programming/blob/master/Materials/Introduction%20to%20Algorithms%20by%20Udi%20Manber.pdf) by Manber - Very light, not as proof-heavy as industry standard texts like CLRS but still very informative; provides excellent algorithmic intuition.
163-
* [Algorithms](http://www.cse.iitd.ernet.in/~naveen/courses/CSL630/all.pdf) by Dasgupta, Papadimitriou, Vazirani - Good, very readable, beginner-friendly algorithms textbook; used for decades at Berkeley and UCSD.
164-
165-
## Courses
166-
More courses avilable [here](https://github.com/prakhar1989/awesome-courses#algorithms)
167-
* [Algorithms](https://www.coursera.org/learn/algorithms-part1) on Coursera, taught by Wayne and Sedgewick (Princeton) - This online course goes hand in hand with Sedgewick's algorithms textbook, very good practical resource if you're using that book or you're familiar with Java.
168-
* [Algorithms](https://www.coursera.org/specializations/algorithms) on Coursera, taught by Roughgarden (Stanford) - More conceptual course, prioritizes mathematical analysis over implementation details.
169-
* [Introduction to Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/) on MIT OCW, taught by Leiserson and Demaine (MIT) - This is a good counterpart to Cormen's text since it's taught by the L in CLRS; very rigorous, detailed course.
170-
* [Design and Analysis of Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2015/index.htm) on MIT OCW, taught by Demaine, Devadas, and Lynch (MIT) - Intermediate algorithms course; goes in-depth on a handful of topics/probelms, should only be taken after introductory courses.
171-
* [Data Structures in Java](https://www.coursera.org/specializations/java-object-oriented) on Coursera, taught by Porter, Alvarado, and Minnes (UCSD) - Good explanation of Java data structures including comparisons and performance analyses.
172-
* [Advanced Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-854j-advanced-algorithms-fall-2008/) on MIT OCW, taught by Goemans (MIT) - Graduate level course, focuses largely on advanced data structures, graph theoretic algorithms, computational geometry, and number theoretic algorithms. Useful as a reference for exploring specific topics in-depth.
173-
* [Randomized Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-856j-randomized-algorithms-fall-2002/index.htm) on MIT OCW, taught by Karger (MIT) - Graduate level course, explores randomized algorithms which aren't often covered comprehensively in many introductory algorithms texts/courses. Requires solid background in linear algebra, probabilty theory, and statistics.
174-
* [Advanced Data Structures](http://courses.csail.mit.edu/6.851/spring12/lectures/) on MIT OCW, taught by Demaine (MIT) - Graduate level course, explores very advanced data structures and operations on them.
175-
* [Advanced Algorithms](http://people.seas.harvard.edu/~minilek/cs224/fall14/hmwk.html) taught by Nelson (Harvard) - Very challenging problem sets; lectures assume broad knowledge about algorithms.
176-
* [Introduction to Programming Contests](http://web.stanford.edu/class/cs97si/) taught by Park (Stanford) - Good list of competitve programming algorithms and strategies for problem solving. Excellent resource for practice problems.
177-
178-
## Websites
179-
Websites that offer detailed explanations and complexity analyses for some of the above algorithims:
180-
* [Topcoder Algorithms Tutorials](https://www.topcoder.com/community/data-science/data-science-tutorials/) - Phenomenal resource taught by competitive programming legends. Lots of challenging algorithms deconstructed and numerous applications demonstrated with Topcoder problems.
181-
* [GeeksforGeeks](http://www.geeksforgeeks.org) - Almost every well known algorithm is explained on this site with implementations, however some explanations are occasionally cursory/lacking in detail/unclear.
182-
* [IOI Syllabus](https://people.ksp.sk/~misof/ioi-syllabus/) - Detailed list of topics covered by the IOI.
183-
* [E-maxx](http://e-maxx-eng.appspot.com) - Translated from [Russian](http://e-maxx.ru/algo/) to English, very good list of useful algorithms and impelmentations along with explanations; widely used within the competitive programming community.
184-
* [Algorithms Discussion](http://codeforces.com/blog/entry/13529) - Codeforces blog post containing diverse array of algorithms (including less common techniques) and links to explanations/implementations.
185-
* [500 Data Structures and Algorithms](https://techiedelight.quora.com/500-Data-Structures-and-Algorithms-practice-problems-and-their-solutions) - Collection of software engineering interview questions and solutions.
186-
* [Beehyve](https://www.beehyve.io) - Crowdsourced collection of algorithms and data structures and other topics in computer science as well as community discussions
187-
* [VisuAlgo](https://visualgo.net/en) - Great animations to help visiualize tricky algorithms and data structures
188-
189-
190-
## Online Judges
191-
Competitive programming websites and online judges which offer a plethora of interesting algorithmic problems for all skill levels:
192-
* [Topcoder](https://www.topcoder.com/my-dashboard) - Elite programming competitions; monetary prizes attract significant talent, makning this platform one of the most competitive. Very broad range of problems from beginner-friendly to extremely challenging. Challenge period avilable to win extra points by reading others' code and calling them out for incorrect solutions.
193-
* [Codeforces](http://codeforces.com/contests) - On par with Topcoder, Codeforces offers longer, albeit similar problems, with similar styles. Only disadvantage is that competition times are often inconvenient if you live in the US.
194-
* [Google Code Jam](https://code.google.com/codejam/) - Annual competition sponsored by Google, very fun problems (in my personal opinion).
195-
* [USACO](http://www.usaco.org) - USACO Training Gateway is an excellent segway into the world of competitive programming, offers great explanations and a good progression of problems to introduce algorithmic concepts.
196-
* [HackerRank](https://www.hackerrank.com) - Platform of choice for most technical recruiters, HackerRank offers both short (1-3 hours) and long (2-7 days) competitions with consistent editorials, wrapped in a great UI.
197-
* [CodeChef](https://www.codechef.com) - Indian based platform, offering contests of varying lengths as well.
198-
* [LeetCode](https://leetcode.com) - Offers light, fast interview-style problems rather than heavy algorithmic challenges. Excellent resource for preparing for software engineering interviews.
199-
* [HackerEarth](https://www.hackerearth.com) - Similar to LeetCode, not as competitive, offers fun 1v1 challenges.
200-
* [Project Euler](https://projecteuler.net) - Mathematical and number theoretic problems that require both mathematical insight and programming skill to solve; around 600 problems currently available.
201-
* [Sphere Online Judge (SPOJ)](http://www.spoj.com) - Perhaps the best known online judge; very fast, accurate checkers and a diverse array of problems; diverse probelms for all levels; used by many competitive programmers to hone their skills.
202-
* [UVa Online Judge](https://uva.onlinejudge.org) - Very large database of contest problems including ACM-ICPC, geared towards more advanced programmers.
203-
* [Timus Online Judge](http://acm.timus.ru/?locale=en) - Russian online judge offering unique types of problems.
204-
* [Peking University Online Judge (POJ)](http://poj.org) - Used by Peking University ICPC team, good resource.
205-
* [Kattis](https://open.kattis.com) - Good, reliable online judge used by ACM-ICPC.
206-
207151

208152
Developed By
209153
------------

0 commit comments

Comments
 (0)