Back to the bookshelf

Typographic jacket · original cover not fetched

FROM THE SHARED SHELF · 2006–2026 SAMPLE

Introduction to Algorithms

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

10 readers recommend it across 6 discussions

Topics are model-inferred labels.

Keep it on your reading list

THE WORD OF MOUTH

What made it worth passing on?

Original Hacker News comments, in the readers’ own words.

aabaker99
I find the writing style in CLRS to be quite readble. Sure the book is huge but so maybe pick and choose chapters but each chapter can be read "cover to cover". Perhaps some of the stack details you are looking for are left to exercises in CLRS? Most good "textbooks" will do this. Perhaps you don't want a general textbook on data structures but want a deep dive article on stacks. I admit I haven't explored many other books on this topic but CLRS is very good in my opinion.
sweeneyrod
I don't think there are any. The problem with learning computer science from textbooks is that most textbooks will go a lot further than just the fundamentals on the subjects they cover. So if you try to learn the basics by choosing a textbook for each area and read it cover to cover you'll never finish. Perhaps the answer is to thoroughly read the first few chapters/skim the remainder of Introduction to Algorithms; the Dragon book; Computer Networks/Architecture/etc.: A Systems/Quantitative/etc. Approach; Types and Programming Languages; Security Engineering; AI: A Modern Approach and so on -- that was certainly my experience of undergrad CS. A few exceptions are K&R, The Mythical Man-Month and What Every Computer Scientist Should Know About Floating-Point Arithmetic which are short enough that you can easily read them in their entirety.
probably_wrong
I'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".

Also recommended in this reply

Yadi
I would buy and look into the following books: # HTTP: The Definitive Guide - O'Reilly Media # Algorithms by Sedgewick # Introduction to Algorithms by Cormen. Check out some Machine Learning books: # Pattern Recognition and Machine Learning # Computer Networks (5th Edition) I would look at the following book if you wanted more Q&A and interview questions: # Cracking the Coding Interview: 150 Programming Questions ... Tutorial memberships: # I would buy a Tuts+ account, they have been very slow in releasing new content (too bad), however they have lots of great Web Development stuff. I would read some other non-technical books: # Hackers & Painters: Big Ideas from the Computer Age by Paul Graham # The Hard Thing About Hard Things by Ben Horowitz # The Innovator's Dilemma: The Revolutionary Book That Will Change The Way You Do Business by Clayton M. Christenen, # Thinking, Fast and Slow by Daniel Kahneman # How to Win Friends and Influence People by Dale Carnegie If you wanted to understand some Cloud stuff, look into the Whitepapers from Amazon Web Services: # https://aws.amazon.com/whitepapers/
ambition
It depends on what you want to get out of them. If all you do is build a library, you'll never get anything out of it, since you actually need to study the books for that. :P If you want a reference, then by all means take aston and Hexayurt's excellent suggestions. Especially CLRS. If you don't know much about algorithms right now, then you'll find Cormen et al. very challenging to start with. If you're like me, you want to be able to use algorithms as a tool to solve real problems. To practice that, I have a few suggestions, if I may be so bold. Pick up a copy of the Algorithm Design Manual and Programming Challenges, by Steven Skiena. Programming Challenges will introduce you to the ACM-ICPC repository of programming problems, which is a great low-pressure area to build some top-notch skill in algorithms. You'll want to get into TopCoder as well. For a slightly different taste, pick up Artificial Intelligence: A Modern Approach, by Stuart Russell and Peter Norvig, also known as AIMA or the Green Book. Its discussion of search algorithms is unrivaled. Good luck!