Graduate Algorithms at Georgia Tech covers many key algorithms, design techniques and analysis. Each algorithm covered in class is well documented elsewhere, so instead of walking through them, this is a hub of resources I found useful while taking the class.
- Prepare early. Make a habit of working through as many problems as you can.
- A large exposure to many problem types is more useful than completely solving a smaller set of problems.
- If an idea doesn't click with one resource, use a different resource.
- The official text is DPV: Dasgupta, Papadimitriou, Vazirani
- Algorithm Design (Kleinberg, Tardos)
- KT slides and solutions
- CLRS. The classic. Solutions here & here.
This MIT OCW course is an excellent add on resource.
I've created YouTube playlists for most of the GT lectures:
I'll add the rest here if time permits.
Notes and Flash cards:
- Dr. Vigoda's notes can be found on the course website
- Dan Frakes put together an excellent set of course notes
- Ryan Peach and Sam Sussman created a full set of flash card decks
- Ian Parberry's Lecture Notes: Serves as an excellent "cheat sheet" to many ideas covered.
Dynamic programming is a general algorithm design approach used on many problems. Recursive (top down) and tabular (bottom up) are the two types of approaches, but this class exclusively uses the tabular approach. Practicing many DP problems is key.
- Dynamic Programming pattern overview: Berkeley
- Tushar Roy has an excellent DP series
- Lists of the top N DP problems. If you can solve these efficiently, you'll do well in this section. Top 50, top 20, top 10.
- Geeks for Geeks has a great tutorial series and collection of practice problems
- Leetcode Dynamic Programming
- Linear Programming: A Concise Introduction – Ferguson
- Graph pattern overview: Berkeley
- Note: There are quite a few other topics covered (eg: DC, FFT, RSA, bloom filters) so this list isn't yet comprehensive.
Runtime Complexity Cheat Sheet:
I should also point out that this class is a good start to preparing for technical interviews. Solving problems in interview format isn't covered, but Pramp is an excellent way to practice your interview skills. If you'd like to practice, join me here on Pramp.