Introduction to Algorithms, 3rd Edition (MIT Press)

Author: Thomas H. Cormen
4.3
All Stack Overflow 54
This Year Reddit 59
This Month Reddit 8

About This Book

Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.

The first edition became a widely used text in universities worldwide as well as the standard reference for professionals.

The second edition featured new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming.

The third edition has been revised and updated throughout. It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, substantial additions to the chapter on recurrence (now called "Divide-and-Conquer"), and an appendix on matrices. It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks. Many new exercises and problems have been added for this edition. As of the third edition, this textbook is published exclusively by the MIT Press.

Comments

by rjcarr   2018-03-19

Doesn't the course offer a book? The professor might suck, but what about the textbook?

Otherwise, I think these two are the most commonly recommended algorithm books:

https://toptalkedbooks.com/amzn/032157351X

https://toptalkedbooks.com/amzn/0262033844

by PennyPriddy   2018-03-19

As someone in tech, I would say that the big things the coding camps don't cover is algorithms and data structures. A lot of the bigger company's tech interviews expect some degree of knowledge in those topics, so it'd be worth it to brush up on those on your own. There's a lot you can learn online, but this book is also incredibly good. I'm not sure if applies to machine learning, but the other book I wouldn't have wanted to be without when I was interviewing was "Cracking the Coding interview" and going from there to interviews on career cup.

The reason LaCita got downvoted is that it's not "guaranteed" you'll be making 100k+ in 1-2 years (I got very lucky and am making it after 3 years and a traditional four year education). There are still a lot of good and rewarding jobs in tech (and I'm glad you found a field in it you love), but there's sometimes an attitude that it's a high paying job anyone can get and anyone can do and you're guaranteed the kind of pay that is usually found at top companies and that's not always true.

Also, 100k+ is only great if you're not living in a high tech area that raised rents accordingly. I've had too much depressing fun playing "how much is my rent" since moving to Silicon Valley. No one ever guesses high enough.

by ideasbro   2018-03-19

I’m currently taking CSE 310 with Richa, and this is the book we use: Intro to Algorithms . I recommend really practicing asymptotic analysis (i.e. big-O, big-theta, big-omega) for algorithms, as well as reviewing and understanding your basic sorting algorithms. These topics are covered in the first few weeks, and they hit fast. Other than that, we’ve just been learning about data structures (e.g. binary trees, red-black trees, hash tables, etc.) and their pseudocode functions which are in the book. Don’t focus so much on the specifics of the code, but rather how they work conceptually. Good luck!

by kevstev   2018-02-16

Algorithms and Data Structures

Compiler Design how does code get from print("Hello World!") to machine instructions.

Hardware design

You can probably find all of these books as pdfs if you look hard enough...

Those are the big ones in my eyes. Understanding how the internet works is pretty fundamental these days- look to the Stevens book(s) on TCP/IP for that.

Database systems would be another very fundamental area these days.

by ConnorMcLaud   2018-02-16

Man, this is book about algorithms with less than 750 pages. It is relatively thin.

For comparision Introduction to Algorithms, 3rd Edition (MIT Press) 3rd Edition I consider best of all time have over 1300 pages.

Time which is needed to study it is much more important than number of pages. Couple of weeks vs couple of months is crucial when you prepare to job interview. Skiena achieved this by skipping most of the math and focusing on real world examples

by OmegaNaughtEquals1   2018-02-16

The first thing you will need is a very thorough understanding of how templates work. For that, there is only one book: C++ Templates that covers up to C++17 (just ratified last month). Next, you may want to take a look at how the Standard Template Library (STL) is implemented to become familiar with the types of interfaces and idioms that are used in C++. For that, there is The C++ Standard Library from Nicolai Josuttis that covers up to C++11 and the older Effective STL from Scott Meyers that only covers C++98.

With a good understanding of templates and the STL, you will be ready to implement your own algorithms and data structures. There are a multitude of "Data Structures in C++" type books, but I've not read too many of them. I used an earlier version of the Weiss book when I was in college. It has a fairly decent balance of theory and implementation. Of course, data structures are incomplete without their algorithmic usages. For that, there is The Big Book which is always good to have around. I also like Sedgewick .

by Phenom10x   2017-12-06

So more about data structures and algorithms ey? Well the main book pretty much every college uses is this one:

Introduction to Algorithms Third Edition by Cormen, Leiseron, Rivest, Stein

This book is basically an encyclopedia of algorithms and data structures.

Desktop applications are just programs. You can make python into an executable using: http://www.py2exe.org/index.cgi/Tutorial

If you mean how operating systems work there are books out there that explain that. But I don't think that's what you mean't haha.

Hope this helps.

by ToadstoolBeTrippin   2017-12-06

The one book that every programmer should read is Code Complete . It goes over all stages of development in a high level overview that applies to any project.

I would then move onto Algorithms by Sedgewick and Wayne. I tried reading Introduction to Algorithms because it was strongly suggested to me, but it goes into higher level math really quick. I haven't taken calculus since high school and never took any higher level math classes in college, so I got lost after about page 30.

After that, I would just look for a book dedicated to design patterns in the main language you work with. There are some overlapping patterns between languages, but it's best to be practical about what you learn.

by _INTER_   2017-12-06

If you want to get a head start at the college, I'd rather get more fundamental programming knowledge. Get a book about algorithms and datastructures (e.g. this or this , first few Google results pointed me to a PDF).

Well of course practical knowledge is also never bad.

by anonymous   2017-11-27
Hi , welcome to SO , it's not the purpose of this site but to answer your question this is a good book : https://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844