+1 to Sipser. Excellent book. I'm not sure there's any real competition for CS Theory out there.
chyueli 5 days ago [-]
There are several principles for reference:
1. Exercise quality: Exercises must cover core concepts, have a reasonable difficulty level, and preferably come with answers or explanations.
2. Practice orientation: Deepen theoretical understanding and cultivate application capabilities by solving problems.
3. Classics and reputation: Give priority to books that have been recognized by the academic community or learners for a long time.
imvetri 7 days ago [-]
Solve real life problems from work. It's easy to solve problems, so practice being a problem spotter.
ferguess_k 6 days ago [-]
100% this. Problems from work are always realistic and they give you a push to solve them well. Side projects work too, but to a lesser extent.
I could never get through an Algorithm class (self-taught), but that didn't prevent me from learning and implementing some non-trivial algos for my side projects.
abhijat 7 days ago [-]
It has been a while since I worked through it, but Haskell programming from first principles had some pretty good exercises IIRC.
brudgers 7 days ago [-]
You could do worse than The Art of Computer Programming.
Rendered at 18:52:56 GMT+0000 (Coordinated Universal Time) with Vercel.
Sipser -- Theory of computation
Pinter -- Abstract algebra
Kleppner and Kolenkow -- Mechanics
Klein -- Organic Chemistry as a Second Language
I could never get through an Algorithm class (self-taught), but that didn't prevent me from learning and implementing some non-trivial algos for my side projects.