You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+35-3Lines changed: 35 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -147,7 +147,7 @@ If you're interested in expanding your knowledge of algorithms, I've included a
147
147
148
148
## Books
149
149
Some helpful books to formally introduce algorithims:
150
-
*[Introduction to Algorithms (CLRS)](https://web.njit.edu/~wl256/download/cs610/Introduction-to-algorithm-3rdEdition.pdf) by Cormen, Leiserson, Rivest, Stein - Standard text for introductory algorithms courses; proof-based, very rigorous, comprehensive explanations.
150
+
*[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.
151
151
*[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.
152
152
*[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.
153
153
*[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.
@@ -156,14 +156,46 @@ Some helpful books to formally introduce algorithims:
156
156
*[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.
157
157
*[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.
158
158
159
+
## Courses
160
+
More courses avilable [here](https://github.com/prakhar1989/awesome-courses#algorithms)
161
+
*[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.
162
+
*[Algorithms](https://www.coursera.org/specializations/algorithms) on Coursera, taught by Roughgarden (Stanford) - More conceptual course, prioritizes mathematical analysis over implementation details.
163
+
*[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.
164
+
*[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.
165
+
*[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.
166
+
*[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.
167
+
*[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.
168
+
*[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.
169
+
*[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.
170
+
*[Introduction to Programming Contests](http://web.stanford.edu/class/cs97si/) taugth by Park (Stanford) - Good list of competitve programming algorithms and strategies for problem solving. Excellent resource for practice problems.
171
+
159
172
## Websites
160
173
Websites that offer detailed explanations and complexity analyses for some of the above algorithims:
161
-
162
-
## Courses
174
+
*[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.
175
+
*[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.
176
+
*[IOI Syllabus](https://people.ksp.sk/~misof/ioi-syllabus/) - Detailed list of topics covered by the IOI
177
+
*[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.
178
+
*[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.
179
+
*[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.
163
180
164
181
165
182
## Online Judges
166
183
Competitive programming websites and online judges which offer a plethora of interesting algorithmic problems for all skill levels:
184
+
*[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.
185
+
*[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.
186
+
*[Google Code Jam](https://code.google.com/codejam/) - Annual competition sponsored by Google, very fun problems (in my personal opinion).
187
+
*[USACO]
188
+
*[HackerRank]
189
+
*[CodeChef](
190
+
*[LeetCode](https://leetcode.com) - Offers light, fast interview-style problems rather than heavy algorithmic challenges. Excellent resource for preparing for software engineering interviews.
191
+
*[HackerEarth](https://www.hackerearth.com) - Similar to LeetCode, not as competitive, offers fun 1v1 challenges.
192
+
*[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.
193
+
*[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.
194
+
*[UVa Online Judge](https://uva.onlinejudge.org) - Very large database of contest problems including ACM-ICPC, geared towards more advanced programmers.
0 commit comments