Most books I've read on the topic follow a similar structure. Introduce Big O notation, introduces concepts in the abstract and show isolated implementations in code.<p>At work I find myself wishing I had some more insight/guidance on the following problems:<p>1. Decision making when requirements aren't clear or may be subject to change. How do I avoid giving myself problems in the future?<p>2. I don't know all the data structures and algorithms off the top of my head. After reasoning about the requirements how do professional developers do research for the implementation?<p>3. How do I make trustworthy measurements? What tools do I use?<p>4. How do I combine multiple structures/algorithms to solve the specific domain problem I'm facing?<p>In short, I'd appreciate recommendations for resources that focus on using DS/Algo knowledge in real work scenarios.
The issues you describe are important but typically out of scope for data structures and algorithms book. They are often considered more architectural issues.<p>In many real-world scenarios, it is not necessary to pick the best data structures and algorithms. It is often good enough to just avoid poor choices.<p>Trustworthy measurements are important since constants and implementations matter. That is done through benchmarking and profiling. This is also often not considered part of many data structures and algorithms books.
"Programming Algorithms in Lisp" [0] seems interesting and provides examples along with DS and/or Algo, but it is written in Common Lisp.<p>[0]: <a href="https://link.springer.com/book/10.1007/978-1-4842-6428-7" rel="nofollow">https://link.springer.com/book/10.1007/978-1-4842-6428-7</a>
One option might be The Algorithm Design Manual by Steven Skiena and the associated website <a href="https://www.algorist.com/" rel="nofollow">https://www.algorist.com/</a>.<p>It is more problem-solution based with applied examples.
I second this. I'm going through a class of DS and frankly it doesn't excite me. It may be that I'm not interested in CS overall but I do believe a real work approach could be much more interesting.<p>For example how about a DS class dedicated for game programming? Is it possible? Is it too biased?