I’m finishing up Roughgarden’s two-part algorithms course on edx, and it was good, but I didn’t actually ‘design and analyze’ many algorithms, the questions mostly tested whether you understood the textbook.
I’m looking for some problems where I can drill a bit with the core concepts from the course (divide and conquer, graph algorithms, greedy algorithms, dynamic programming, algorithms for NP-hard problems).
Ideally, they would be challenging but accessible to an undergraduate/early-graduate student, and have detailed solutions.
Any suggestions?