Assuming the author's convictions are true, how would one apply a 'rote learning' technique to programming? I believe in repetition, but, personally haven't been able to find a useful way of implementing it to become a top-notch programmer. Why? Well, take calculus. Buy a book, pound problems. Do 1,000 derivatives. Next chapter. 1,000 integrals. Is there a similar "exercise" for programming?
For data structures, write some unit tests and then make them pass.
I personally wouldn't recommend you bother learning the implementation details of algorithms: just learn the names and use-cases. Make some Quizlet flash cards and you're good. If you're having trouble finding some to learn, try Googling "sorting algorithms" or "sorting algorithm for [someDataStructure]". Go from there. I'd recommend a similar approach for design patterns.
If you want to get better at building applications, practice by reimplementing apps you use every day in your favorite language (or just come up with your own). "Building applications" encompasses a wide variety of things not mentioned above that you'll only be exposed to by building stuff, so do that.