All Comments
TopTalkedBooks posted at August 19, 2017 Also if your looking into Algorithms, this is probably THE book your looking for

TopTalkedBooks posted at August 19, 2017

I'm a bit confused on your background with CS. You are you are aspiring to become a machine-learning researcher, yet evidently it doesn't seem like you have much of a background in CS which is why you're asking I assume. In any case, I'd recommend reading books on C++ and books on data structures/algorithms separately.

For algorithms/DS I recommend The Algorithm Design Manual . Recommended books for C++ are on

If you want to learn machine learning concepts and algorithms then I recommend some books on artificial intelligence and machine learning. To start with, Artificial Intelligence: A Modern Approach then ISL. And/or potentially some associated MOOC courses, I recommend Learning from Data it's a really good course which teaches you fundamentals in machine learning such as learning theory and asks questions for why you can learn and etc.

In general, with all these books, you could possibly learn C++ by implementing their exercises or specific algorithms. Some examples would be basic CS related things binary search, sorting algorithms, heaps/priority queues and their associated implementations in the standard library. Then specific to Machine Learning you could implement decision trees and as an extension AdaBoost, a perceptron or a more generic neural network, and the list goes on.

TopTalkedBooks posted at August 19, 2017

CTCI assumes that you already know the basics of algorithms and data structures - it's a set of interview problems, not so much an intro to the topic. If you want to get a head start, get a good algorithms-book. Introduction to Algorithms by Cormen et al! is a well known book and also often used in college courses.

I think that there is a fundamental difference between CTCI and Intro to Algorithms books: The first teaches you a bag of tricks to solve interview problems; the latter focuses on fundamental concepts and proofs.

TopTalkedBooks posted at August 19, 2017
I guess the question is what do you mean by advanced topics? What direction do you want to go in? The latter book you mentioned seems to cover a number of topics and is probably a good bet.

If you are interested in the web, both these books were good:

Here are a few books that cover some "advanced?" topics that I'd like to read when I have time (would also like to hear other peoples' recommendations on them):

I'm not sure on your background or the quality of these books, but an understanding of data structures, algorithms, and object oriented programming could be considered important:

Although these and other intermediate to advanced topics tend to be covered better in non-language-specific books such as this shotgun blast to the head. Don't worry, it's just an "introduction":

TopTalkedBooks posted at August 19, 2017
i think more important then learning a specific language is getting a understanding of the algorithmic stuff. try theese two books for example:

i wish i had these books 10 years earlier..

TopTalkedBooks posted at August 19, 2017
The TAOCP[1] is the reference for all the types of algorithms it covers, the Cormen book[2] is a reference for its breadth and the Algorithm Design Manual[3] is quite nice to learn how to design your own.




TopTalkedBooks posted at August 19, 2017

This is not even slightly true, and if that's all you got from your algorithms class, it was woefully deficient. CLRS has 1300 pages, and I speak from experience when I say they're not all (or even mostly) about sorting or recursion.

TopTalkedBooks posted at August 19, 2017

I'd buy a used copy of CLRS: introduction to Agorithms
I didn't quite catch on with that you meant with Algebra I, but this book assumes you know high school math. Thought you were asking about college math. But even if you're not good with high school math this book might be understandable for you. Try to read a bit in it before you purchase it to make sure it is not too difficult. Most algorithms in the book (and in CS courses) do not have too much to do with calculus, so if calculus is your weak spot, don't worry.

TopTalkedBooks posted at August 19, 2017

Comece pela "bíblia" Introduction to Algorithms:

TopTalkedBooks posted at August 20, 2017

This can be formulated as a Linear Programming problem. You want to maximize or minimize a function (representing the "weight" or "goodness" of the solution) subject to certain constraints (your requirements). You'll need to formalize your requirements as values. Something like this:

x1 = 1 if Labels overlap, 0 otherwise
x2 = some measure of "how much" a label overlaps a bubble
x3 = distance from label to bubble //Label should be close to bubble
x4 = distance between ideal and actual label position
x5 = difference between actual and ideal font size

minimize x1 + 10*x2 + x3 + 20*x4 + 5*x5

subject to constraints:
    x1   = 0  // labels can never overlap
    x2   < /* maximum amount a label is allowed to overlap a bubble */
    x5   < 6 // font size does not vary by more than +/- 6 pts.

I made up the coefficients and the constraints, you can use them to tune the result based on which features are most important to you. Coefficients increase the value of a requirement (in this case, f4 is weighted most so it 'most important'. The constraints are hard limits that cannot be violated.

Since this is a well-known problem, you can now solve it using a number of methods. The Simplex algorithm is popular. There is a whole chapter in Cormen et. al about these problems.

TopTalkedBooks posted at August 20, 2017

You can check the explanation of a variation of this problem in CLRS (section 15.1, page 360). The problem is called the Rod Cutting problem.

Your approach is correct, and you can formalize it as a recurrence relation.

f(n) = min(f(n - i) + price(i)).    1 <= i <= n - 1

where f(n) is the minimum price to buy a rod of length n. using memoization, this can be calculated in O(n^2).

TopTalkedBooks posted at August 20, 2017

Dynamic problems also requires "optimal substructure".

According to Wikipedia:

Dynamic programming is a method of solving complex problems by breaking them down into simpler steps. It is applicable to problems that exhibit the properties of overlapping subproblems which are only slightly smaller and optimal substructure.

Backtracking is a general algorithm for finding all (or some) solutions to some computational problem, that incrementally builds candidates to the solutions, and abandons each partial candidate c ("backtracks") as soon as it determines that c cannot possibly be completed to a valid solution.

For a detailed discussion of "optimal substructure", please read the CLRS book.

Common problems for backtracking I can think of are:

  1. Eight queen puzzle
  2. Map coloring
  3. Sodoku ?

DP problems:

  1. This website at MIT has a good collection of DP problems with nice animated explanations.
  2. A chapter from a book from a professor at Berkeley.
TopTalkedBooks posted at August 20, 2017
This is just my opinion and I'm sure it differs from others...

Roughgarden's class is advance and expects mathematical maturity. You may find his course quite fast and rough if you are a beginner.

Sedgwick's class is much easier. He is a bit boring and tries to use "real life" examples (in some instances) from the physical sciences to make the material relatable. This in my opinion detracts from the material. Also, he doesn't always fully explain where he got some of the big ohs here and there.

My advice? Follow MIT's OCW course (it uses CLRS). Supplement it with Algorithms Unlocked, the Khan Academy link in OP and CLRS. If you use those 4 resources and put in the work you'll understand the material.

All 4 sources have Thomas C's DNA touch to it (he is the C in CLRS). So you'll find it consistent when you read from one source to the other. After reading/hearing the same thing about 4 different times in 4 different ways it'll begin to click.

Order of easiness is probably Khan Academy > Algorithms Unlocked > MIT Algorithms Course > CLRS.

Algorithms Unlocked is like "pre-CLRS" and Khan Academy's version is the TL;DR version of Algorithms Unlocked.

Hope this helps.

Below are the links,

TopTalkedBooks posted at August 20, 2017
As a follow up to this resource I recommend,

Algorithms unlocked:


Both include the same author as the one in this article (Thomas Cormen).

TopTalkedBooks posted at October 11, 2017
I can't recommend courses, because I don't have direct experience of any, but given what you say, my suggestion would be to take a bit of a pause from pragmatic problems, and dedicate some time to learn the foundations of computer science, in particular about algorithms and data structures. I'd recommend a couple of books: "The Algorithm Design Manual" by Steven Skiena if you want something not too theoretical, or "Introduction to Algorithms" by Cormen, Leiserson, Rivest, if you want a bit more breadth and theory:

As a second suggestion, I'd recommend to learn a language somewhat different from JavaScript-like (or C-like) languages, something that challenges your mind to think a little differently and understand and create higher order abstractions. There are many choices, but to avoid confusion and being my favourite, I'll point to one: read the "Structure and Interpretation of Computer Programs" by Abelson and Sussman. It teaches Scheme in a gentle and inspiring way but at the same time it teaches how to become a better programmer:

I can't recommend it enough. If you read it, do the exercises, don't limit to read through them.

Maybe it's even better if you start with this, and THEN read the books on algorithms and data structures.

Enjoy your journey!

TopTalkedBooks posted at November 26, 2017

Hi , welcome to SO , it's not the purpose of this site but to answer your question this is a good book :

TopTalkedBooks posted at December 06, 2017

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.

TopTalkedBooks posted at December 06, 2017

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.

TopTalkedBooks posted at December 06, 2017

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:

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.

TopTalkedBooks posted at February 16, 2018

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 .

TopTalkedBooks posted at February 16, 2018

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

TopTalkedBooks posted at February 16, 2018

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.

TopTalkedBooks posted at March 18, 2018

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!

TopTalkedBooks posted at March 18, 2018

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.

TopTalkedBooks posted at March 18, 2018

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:

Top Books
We collected top books from hacker news, stack overflow, Reddit, which are recommended by amazing people.