I've started interviewing for data science roles and I've noticed that a lot of companies ask traditional computer science questions. I have no formal CS education. In fact, I was a business major in college which is pretty much the opposite. I don't know anything about traditional CS algorithms like binary search, bubble sort, or dynamic programming.
I have a very strong background in machine learning / data science but pretty much everything I know is through years of Googling, doing interesting ML side projects, Kaggle, and generally learning things the hard way. I know that a data scientist needs to be able to code. Ironically I'm a professional software engineer and I code all day. I just don't have a theoretical background. Do I need to read something like Introduction to Algorithms and brush up on CS undergrad work before I start applying to data science jobs in earnest?
Please note: I know that there are a lot of other questions on here about what to study to become a good data scientist, but this question is subtly different. I personally disagree that knowledge of traditional CS algorithms is relevant for most day-to-day data science work and that knowing these things makes you a better data scientist.
Most machine learning algorithms (gradient boosting, random forests, linear models, SVMs, neural nets, etc) are available in easy-to-use libraries like caret (R); scikit-learn, and TensorFlow (Python); or H2O, and MLlib (Scala/Java). There are also easy-to-use tools, like Spark, to make these algorithms scale. I feel that understanding how the learning algorithms (like gradient descent) work is relevant, but I don't agree that recursion or dynamic programming is relevant. Am I wrong? Should I be more open minded?