I think the ideal would be something like an autograder, rather than a solution. There used to be a Coursera class from Princeton that relied on Sedgewick and Wayne algorithms book, and the class was very, very good.
Then we must hope people don't publish solutions on github!
> I think the ideal would be something like an autograder, rather than a solution
Me too! But I don't know how to write a useful auto-grader for free-form English text and pseudocode, and neither does anyone else.
Even a pedagogically useful auto-grader for actual _code_ — one that doesn't just check a bunch of test cases, but diagnoses the code to identify design errors and offers specific feedback for improvement — would be utterly revolutionary.
IIRC the Coursera class autograder used actual code, and offered _some_ design improvement suggestions - about code correctness, edge cases, speed. Of course, it couldn't point out other design flaws.
I think that the Java used in that class was a good approach. By limiting the packages you could use, they prevented leveraging builtin facilities (e.g. Java collections) and forced people to write their own data structures.
Then we must hope people don't publish solutions on github!