4 ms·
Skiena's Algorithm Design Manual: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202 https://www.amazon.com/Algorithm-Design-Manual-Ste
by andyljones 7y ago
Skiena's Algorithm Design Manual:
https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202 https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...
Far more readable than the usual text (Cormen), the first half is a guide on how to select and design algorithms for the problems you encounter, and the second half is a whistle-stop tour of hundreds of well-known algorithms. The tour helped me a lot with X->Y esque issues where I was building bad solutions because I didn't know anything better could exist.
Incidentally, there's a lot more to CS theory than algorithms and data structures, but if you're asking on HN for a generic CS theory book, I reckon it's most likely an algorithms and data structures book that you're after.
- probably_wrong 7y agoI'm going to disagree slightly with your choice (which was also my choice at first). While A.D.M. has all the topics you would be interested in, I think the book assumes that you have already groked the fundamentals behind, say, why a linked list is different from an array. For an absolute beginner, I would suggest the type of book that forces you to go through every step of deleting an item from a list, which is something Skiena's book (luckily) doesn't do. The book is great for learning new ways to think about problems, but IMHO a beginner should learn the basic ways first. "Introduction to Algorithms" by CLRS seems to be the default choice, and it seems to me to be a step in the right direction (based on the TOC). I would also like to second your point that CS is more than algorithms and data structures. I feel Dijkstra would not approve of thinking about CS as "that thing you do after learning a programming language".
- andyljones 7y agoThis is really helpful, thanks. It's been... a few years since I read Skiena, and I came to it from a maths background. I'll add the disclaimer in future that Cormen's easier to start with.
- p_l 7y agoI found "Introduction to Algorithms" to be _waaay_ too dry to deal with in beginning, though I'd welcome something else to get through the detail. Personally I'd use Cormen as "dictionary" to get into detail of stuff I first read in A.D.M.