#8 in Algorithms and data structures books
Use arrows to jump to the previous/next product

Reddit mentions of Introduction to Algorithms, Third Edition (International Edition)

Sentiment score: 6
Reddit mentions: 12

We found 12 Reddit mentions of Introduction to Algorithms, Third Edition (International Edition). Here are the top ones.

Introduction to Algorithms, Third Edition (International Edition)
Buying options
View on Amazon.com
or
    Features:
  • Mit Press, A great option for a Book Lover
  • Condition : Good
  • Comes with Proper Binding
Specs:
Height9 Inches
Length8 Inches
Number of items1
Release dateJuly 2009
Weight4.40042674952 Pounds
Width1.75 Inches

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Found 12 comments on Introduction to Algorithms, Third Edition (International Edition):

u/FrzTmto · 43 pointsr/programming

Yes, and No.

No : there are better mathematicians out there than you. Some dedicate their lives to mathematics, and algorithms. You will not beat them. They have written books. Books filled with the optimal algorithms for about almost anything under the sun. You can choose something fast that will require a lot of RAM (for your big server) to another version doing the same work slowly but only using a few bytes (for your SMARTCARD use). Not only they wrote optimal stuff, but it works without bugs if implemented properly. So you know that unless you screw implementing the pseudo-code, you not only get optimal code/solution but also something that covers all cases...

So, Yes. You need not mathematics nor algorithms but a GRASP of how to start from pseudo-code for an algorithm, and end up with your favorite langage implementation of it. You need to be able to somewhat UNDERSTAND how it works, but you MUST avoid trying to build your own algorithms.

This is for example, one of my favorite books :
https://www.amazon.fr/gp/product/0262533057/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

Introduction to Algorithms
T Cormen, C Leiserson, R Rivest and C Stein

(if you are wondering, Yes. The Rivest from RSA)

This books contains algorithms. So for each problem you might encounter, they offer solutions. Each solution starts with the mathematical part of it, if you are interested. Then, you get the pseudo-code that you can implement with steps. And you also get an analysis of the cost you will get out of it using the standard complexity notation O (O(n) or O(n^2) for example).

This is what a software engineer uses. The same way an architect will have books about concrete or metal analysis/how to use them, or machine engineers will have books with clever mechanical devices to do almost anything they can combine/use from.

It's a bit like cryptography. Everyone can design a cipher that he/she will be totally UNABLE to break. Try it. In less than a day, you can design something that YOU are unable to break. What does it mean ? NOTHING.

It means nothing because if you're unable to break your own crypto, it doesn't mean someone else can't break it. In fact, it can probably be quite trivial to break using either statistical analysis or more powerful tools like differential analysis, linear analysis or differential-linear analysis....

That's why if you're clever, you let the cryptographers with decades of specialization in cryptography design those ciphers. And how did they learn their craft ? Not by building ciphers. But the other way : by breaking every possible cipher that has been invented. Then, spending decades inventing ciphers and breaking them, again, again, and again. Until after years expressed in multiples of 10 you get to the point they are able to design ciphers that will resist all known attacks because they learned how they break stuff.

This is the same here. Anyone can design an algorithm, and be absolutely sure it is the best they can design. But it can have loopholes, it might not cover all cases you will throw at the algorithm. It might work, but be of exponential complexity where something better at those, than you, will give you a linear version of it....

You need basic mathematics. Standard operations, and knowing about calculus, exponential or linear difference, recursion, a bit of statistics (will help you profile better your work). BASIC knowledge that doesnt need to go much higher than calculus. Then, you must be good at finding what to use, like this book I tell you about. This book is a goldmine. Because each algorithm is explained so you can implement it in any langage, and because they are without bug and cover all cases.

Some programming jobs WILL require a better level of basic mathematics, because of the FIELD of use : physical simulation, finance, cryptography.

Some companies that handle so huge volumes of data that they need to write algorithms that are optimised enough using various decimation techniques, like Google : algorithm complexity, data structures.

Some jobs like being a SQL developer are much easier if you have a very good understanding of the math theory of Groups, which SQL is based upon.

But please, please, please : do not try to think you can do better work than specialists of mathematics or algorithms. You can't. They have dedicated their lives to those and they will beat the crap out of you with experience that might be greater than the years you have lived since you're born...

Use good sources for algorithms.
Maths : basic operations + how binary works (and why shifts can divide numbers for example)
Modulo
A proper understanding of how computers handle FLOATING point. I think a very famous paper is dedicated to this : READ IT.
Cartesian coordinates (we display stuff, those are useful)
Pythagorean theorem : is used to calculate distance between two coordinates points.
Be fluent in binary, hexadecimal systems and know how to convert between those by hand.

And that's it. You need basic math skills.
Enough to be able to implement properly algorithms given to you as pseudo code. And some areas specific to our trade : the binary/boolean system, how computers store information...

u/BrightCandle · 6 pointsr/compsci

http://www.amazon.co.uk/Introduction-Algorithms-T-Cormen/dp/0262533057/ref=sr_1_1?ie=UTF8&s=books&qid=1268281259&sr=8-1


Introduction to Algorithms is anything but an introduction. It covers all the basics you've described with the mathematical rigour necessary to understand their performance. It also goes into more advanced things such as heaps and B* trees. If you learn all of the data structures in this book you'll be ahead of 99% of programmers I've ever met.

u/general_00 · 2 pointsr/cscareerquestionsEU

It seems like a general shortcoming of bootcamps, although I have not attended any personally (I have a CS degree), so that's only my impression.

--- 2 ---

I think CS fundamentals can be self-thought. The main issue is the sheer volume of the material and deciding what is important and what's not. For example, Cormen's Introduction to Algorithms is an acclaimed classic, but sometimes it's hard to digest and it contains some stuff that can be skipped. If you decide to learn everything in the book on your own, you run into a risk of wasting precious time that could be put to a better use.

I've seen many "Algorithms and Data Structures" courses and books, but there's also other stuff you should know:

  1. Theoretical principles of how computers work: binary system, boolean logic, Turing machine, finite state machine, etc.

  2. Basics of how hardware is built: logic gates, CPUs, memory, etc.

  3. How operating systems work: processes, threads, daemons, interrupts, etc.

  4. Basics of Networking: TCP/IP, Routing, DNS, Load Balancing, etc.

  5. Good practices of producing software: management methodologies, software lifecycle, testing, build systems, dependency management, continuous delivery, etc.

    It can all be learnt, but some of these topics don't have as many good courses as "Algorithms and Data Structures", so you'll spend time just looking for good sources, and then it's easy to dig too deep into a topic, therefore wasting time. The added value of having a teacher is that you receive a pre-selected choice of books, guidance with the parts you struggle to understand, and you don't waste time on drilling the less useful stuff.

    Now, from a perspective of a CS-graduate with real job experience, it's easy to look back and say "it's simple" and "I could learn it in a couple months", but when I was 19 and had no idea about any of that stuff, it obviously took me a lot of time and effort to wrap my head around all those concepts.

    --- 3 ---

    It's significantly easier to get a job in IT without a degree than in most other fields. There's no formal requirement of a degree, and many companies wish for "A CS degree or equivalent experience".

    Not having experience, I think your best chance is to have a CV with a list of completed hobby projects / freelance work. Github link may not help much, but it will not hurt either.
u/zach2good · 2 pointsr/AskProgramming
u/Tayacan · 2 pointsr/java

Not Java-specific, but this book should give you a solid foundation and will serve as a good reference manual too.

u/butterChickenBiryani · 2 pointsr/cscareerquestions

Its just $46 new in US as well.. doesnt seem all that expensive (by US standards) like people are saying in this thread.

https://www.amazon.com/Introduction-Algorithms-International-Thomas-Cormen/dp/0262533057/

u/PinPinIre · 1 pointr/learnprogramming

It largely depends on which Computer Science degree you are going to do. There can be some that focus heavily on software and very little on hardware and some that get a nice balance between the two. If the degree is going to focus on hardware I would recommend reading up on the underlying logic of a computer and then reading this book (Inside the machine). ITM isn't a very technical book(I would label it as the computer science equivalent of popular science) but it gives a nice clear overview of the what happens in a processor.

When it comes to programming, I would recommend starting with Java and Eclipse. Java gets quite a bit of hate but for a newcomer, I think Java would be easier to grasp than the likes of C/C++. C/C++ are nice languages but a newcomer may find their error messages a little bit obscure and may get confused with the nitty-gritty nuances of the languages.

Though the one thing you should realise is that programming is a skill that isn't confined to one language. If you understand the basic concepts of recursion, arrays, classes, generics/templates, inheritance, etc. you can apply this knowledge to almost any language. Ideally i would recomend two books on programming (Algorithmics) and (Introduction to Algorithms). Algorithmics is another books I would label as the cs equivalent to popular science but the early chapters give a nice overview of exactly what algorithms actually are. Introduction to Algorithms is a more technical book that I would recommend to someone once they know how to program and want a deeper understanding of algorithms.

The rest is personal preference, personally I prefer to use a Unix machine with Sublime Text 2 and the command line. Some will try to convince you to use Vim or Emacs but you should just find whichever you are most comfortable with.

u/smalltownoutlaw · 1 pointr/AskProgramming

If there is one that is specifically used in your upcoming university course, probably pick that it will give you a head start on the stuff you will be covering.

Algorithms wise CRLS is probably the best book to have.

u/hernil · 1 pointr/ProgrammerHumor

After about a 100 hours of cramming in as many days, I'm willing to bet my left testicle that it's Introduction to Algorithms!

u/hextree · 1 pointr/compsci

> Absolutely not, this is a figure only if you are chosing "[...] the worst possible hash function" which is disingenous at best, you are just picking an unrealistic case to prove a literal strawman.

As I keep reiterating, in worst case analysis it suffices for a single bad case to prove a bad lower bound. I am allowed to pick an unrealistic case because that's literally what you do in worst case. This is what you will find in any CS textbook. And also why Google would fail a candidate for not knowing this. You can call it unrealistic and impractical, but mathematics and CS theory is a rigorous field with strict definitions.

> May aswell throw away all the encryption algorithms, because the adversary is God and he knows the key.

Again, you are confusing two different types of adversary. The adversary I'm using is not the same type of adversary trying to break a cryptographic message. It's just a Turing machine which can try any input, and always happens to know the right one to use. If you are going to keep confusing it with cryptographic adversaries then we are better off not using the term 'adversary'.

> it's realistic to assume it doesn't have access to the internal randomness of the machine operating the hash table

If it doesn't have access, then it is not an adversary. An adversary is omniscient.

> I think you might be thinking that it's impossible to use a cryptographic hash function for a hash table.

It is. I think you misunderstand the point of hash tables. The point is that their address space is much much smaller than your range of data values. If you use something much larger, then you haven't sped up anything at all.

> Oh, I know! They used universal hash functions

Reread how Universal hashing works to refresh your understanding: https://en.wikipedia.org/wiki/Universal_hashing The wiki page very clearly explains that universal hashing doesn't give O(1) worst case, it just provides a low number of collisions in expectation.

Sorry, but I don't know how else to help you, you have gotten so many technical CS definitions incorrect that I don't know where to start. If you want to learn research-level CS then I'd suggest https://www.amazon.co.uk/Introduction-Algorithms-MIT-Press-Cormen/dp/0262533057 and https://theory.cs.princeton.edu/complexity/ . I referred to both of those often up to PhD level. Good luck.