https://techiedelight.quora.com/500-Data-Structures-and-Algo...
In fact it seems as the author on Medium "forgot" to mention his sources.
All this focus on algorithms for the sake of interview-preparation gives the false impression that the field is a closed body of work. In reality it is an active and lively field of research with many (even most) basic questions not yet understood.
Someone could go through these 500 questions and for (almost) all of them formulate variants/extensions that would be open research questions. So instead of memorizing them, ask for each: Is this the best possible solution? Can I prove it? What if I restrict what the algorithm can do? What if I give the algorithm extra powers? What if the data comes online? What if the input is noisy? What if I want to optimize space usage instead of time? Is there a trade-off between the two? Etc. etc.
And related to the parent question: does the problem model a real practical problem? Why not? Can the model be changed to be more realistic?
All that being said, at a first look, the list seems like a quite nice collection of techniques.
This is almost never what you encounter in practice. In practice, you tend to get handed someone's creaking code and asked to build upon it.
I work on what are considered hard CS problems and I rarely find the difficult part is knowing some data structure or algorithm, but in finding a way of translating real world problems into something that makes sense in code.
It can be really useful if you're writing a compiler or something like that. There's a lot of problems in molecular biology, which need some complicated algorithms.
Some of those algorithms are already implemented by library functions. Others are really not relevant. However:
1. I needed some non trivial algorithm maybe once or twice in the last 5 years. Knowing you can do that in o(n) or o( log n) is handy. Knowing the solution is better :-)
2. Binary search is important. I saw a program looping through potentially 4000+ API calls to look for an element when a binary search could have nailed it down in a few hits (the server didn't have a search API for what the program had to do.)
There is no online IDE you must use, and no time limit. However, you're asked to paste or upload the output within a few minutes of downloading the randomly generated input dataset, so your solutions must be efficient. Rosalind encourages Python and provides relevant tutorials, but you can use any language you like. Rust, Lua, Javascript, Smalltalk, LISP, Nim, INTERCAL, Bash or Scala - it's up to you.
The solution is technically right, but it's making a copy of the list too. The intuition is wrong.
(Our best approach so far was to test people with the gilded rose kata and see how they manage the problem without reimplementing it from scratch)
All right class, remember to read the textbook cover-to-cover over the weekend, as your first quiz may, or may not, cover the entire course.
But don't be nervous, it's only worth 95% of your grade.