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?


It depends on whether you're going to write production code or even pseudo-code that will be implemented by others. If so, yes you need computer science skills. If you're going to merely analyze data, you can technically get away without it, but some companies (e.g., Facebook) expect all technical employees to know computer science.

Computer science is useful even to pure analysts because it will help you implement algorithms not covered by your libraries.

I make use of recursion and dynamic programming, for example, but I wrote production code. That's my deliverable, after analysis and prototyping.

| improve this answer | |
  • $\begingroup$ I updated my question a bit. I'm actually a successful software engineer and I write code all day. It's just that I use high level languages like Python and Java. Is that not sufficient? $\endgroup$ – Ryan Zotti Sep 28 '16 at 0:48
  • $\begingroup$ It should be. Companies just want to know if you know computer science well, expressed in any language. $\endgroup$ – Emre Sep 28 '16 at 0:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.