I've taken it upon myself to begin a career change. I have a decent background in mathematics, but lack in programming or data science specific skills (such as data munging). I have been looking through data science curricula and already feel overwhelmed by the amount of subjects a proper data science curriculum contains. Just to name a few: natural language processing, machine learning, R, Python, SQL, NoSQL, probability, statistics, numerical methods, algorithms, and the list goes on.

I can't afford to go back to school, but if my goal is to get into data science, what subjects should I focus my attention on?

I fully understand "data science" is a very big field, but certainly there must be several subjects that are important to all, if not the vast majority, of these sub-fields. I suppose this is essentially what my question is asking. I have not yet obtained the amount of exposure to determine what I want to specialize in, so at this point, my concern is obtaining a foundation that wouldn't restrict me from entering any particular sub-field, or in other words, studying the subjects that benefit all sub-fields.

Note: Math isn't as much a concern for me compared to the other subjects.

  • 1
    $\begingroup$ This isn't a "Meta" question right? It's a question for the regular site itself. Although career-oriented questions and open-ended "what's important" questions are usually off-topic on StackExchange, I find it passable for DS. $\endgroup$
    – Sean Owen
    Commented Aug 29, 2015 at 8:52
  • 1
    $\begingroup$ potential duplicate: datascience.stackexchange.com/questions/6576/… $\endgroup$
    – David
    Commented Aug 29, 2015 at 16:43
  • $\begingroup$ I suggest taking a "beginners" course such as Coursera's Machine Learning presented by Andrew Ng. Studying a basic course like that will give you the introduction you need to make your own wishlist on what to pick up in more detail. $\endgroup$ Commented Aug 30, 2015 at 15:07

4 Answers 4


Probably the most useful (and fun) answer is provided by the excellent Swami Chandrasekaran ... in the form of a subway map:

enter image description here

I would add just one comment to that: school (or learning for the sake of learning) doesn't provide the same kind of experience as solving a real problem does. Therefore, to learn, find real problems you can tackle. To stay motivated, make them problems you really care about. Kaggle competitions are a great place to start. Even reproducing a winning solution (perhaps with some variations, or on a new dataset) will be a huge learning experience.

  • $\begingroup$ I agree, but the problem I have to even begin doing Kaggle competitions is that I don't feel I have the necessary tools/knowledge. I definitely am tired of the standard study/quiz/test/hw methodology though. $\endgroup$ Commented Aug 30, 2015 at 17:57

"Data Science" is not very well defined term and people mean different things by it. For somebody it might mean working with huge data sets on distributed systems, to somebody it is basically data analysis, to somebody it is writing predictive models using sparse matrices (that's me). Therefore, you should approach what interests you. You don't have to know everything.

Generally, Data Science is combination of two fields: Computer Science and Statistics. Fundamental understanding of both is crucial.


I, like you, took it upon myself to change career paths into the growing field of data science. As a bit of background, I was working in a neuroscience research lab studying the effects of allelic variation on protein transport in rodent models of alzheimer's disease and post-traumatic stress disorder. I was a competent R, bash, and Matlab hacker and knew a bit of C and Java. I had a change of heart when I started applying for neuroscience PhD programs.

Over the next year, i took a few grad-level stats courses and got some of my programming skill back in order. Last year, I started an MS program for CS with the intent of 1) getting an job as a data scientist in industry 2) learning how to think algorithmically / mathematically about data 3) really sharpen my fundamental CS skills 4) have some fun in the process.

I won't list specific courses that helped, but the major winning topics for me were:

  • Algorithms

    • both fundamental algos
      • complexity analysis, sorting and searching, graph algorithms, dynamic programming, randomized algos, etc. Tim Roughgarden has a great course for this.
    • data mining/massive dataset/stream algorithms
      • locality sensitive hashing, sketch algorithms, kd/ball trees, reservoir sampling, sliding window methods, etc.
  • Databases/Data streams:

    • noSQL, SQL, hadoop, etc. Working with them forces you to start appreciating that most of the data you will work with absolutely doesn't fit in memory and requires unique methods to not only extract information from it, but just to work with it and examine it. Learn how to use one by building a web scraper or data harvester to populate a database (or however else you want...)
  • Machine learning

    • Learning the fundamental methods in the field, e.g., tree-based methods, optimization, neural networks, svms, regression, markov chains, graphical methods, ensemble methods, overfitting, regularization, clustering, k-means, knn, etc. As mentioned, Andrew Ng's coursera class is probably the best open-source solution for this one.
    • EDIT: The Coursera course is good iff you supplement it with stuff from the real version (lectures, notes). I think the coursera class is a bit light and a nice overview of topics in ML, but doesn't go nearly deep enough into the mechanics of those topics. Tom Mitchell's book is also a good resource.
  • data visualization

    • nothing terribly fancy is totally necessary, but knowing how to visualize multidimensional data is quite useful. Learn a good plotting package and perhaps experiment with other tech, like D3.js or mapping visualizations. If you get really good at this, you'll probably have a great job forever.
  • "Real-world" experience

    • I learned about as much in three months at a big web company doing data science than i did in the previous 1.5~ years of grad school and self-study. This can be approximated by doing Kaggle competitions or the like, but honestly, data in the wild is considerably harder to work with than most of what is on Kaggle (note that the microsoft malware detection project or some of the computer-vision projects are much more useful for learning to work with messy data that is also rather "big").

Notice that i didn't mention anything like "learn R it's the best" or "learn python it's way betterz than R". I use Python, C, MySQL, MongoDB, and R for most of my work and current research (though I really prefer the python ecosystem these days). I'm sure that this will change in the future.

This falls a bit outside of your question, but perhaps the most critical thing about being an industry data scientist is the ability to work in a mostly unsupervised manner and communicate results/methodology clearly to a team of non-experts. Having a background in scientific research helps with this, as the questions you are trying to answer are difficult, often unstructured, and are often at the precipice of the knowledge ledge for your domain. My friends, acquaintances, and past coworkers working as data scientists in industry were nearly all ex-academic-path folks with MS or PhDs and at least a few publications under their belts. I absolutely do not believe this is a strict requirement and if i were in a hiring position, I'd never elect to filter out someone just because they didn't have an advanced degree, but the industry job postings do seem to be trending towards requiring an MS/PhD or equivalent experience.

Bear in mind, all of this comes from just some dude from nowhere who hasn't been directly in the field all that long but whose transition seems to be going well.

  • $\begingroup$ Thanks for this, I found it really helpful. In regards to Andrew Ng's course, do you really feel it's helpful? Have you taken it yourself? I'm almost done with the course, but still don't feel it's as good as if I were to have gone through a more rigorous textbook. It's very superficial, and it's done in Matlab, which is rarely used in DS. $\endgroup$ Commented Sep 10, 2015 at 4:33
  • $\begingroup$ @tofu_bacon I would say yes, if and only if you supplement with his real course notes which are better. Tom Mitchell's book was the book my school's ML class used and i found Ng's notes rather helpful to supplement. I'll edit my answer to mention this. If you are following along in the ML coursera course, I'd just do everything in Python/R as well. $\endgroup$ Commented Sep 10, 2015 at 6:41
  • $\begingroup$ I just wanted to double check that the link you provided was correct, because those notes you linked don't exactly correspond with the coursera course $\endgroup$ Commented Sep 10, 2015 at 19:31
  • $\begingroup$ @tofu_bacon i apologize if my edit isn't clear - those notes are from the "real" stanford class, not the coursera class. There shouldn't be a 1:1 correspondence - they provide a great deal more depth. I can make that more clear in my answer if need be. $\endgroup$ Commented Sep 10, 2015 at 20:52

I am always inclined to the "do while you learn" principle, when learning new skills. I am writing this completely based on my experience, which helped me solve Kaggle problems and do what I am doing now.

So, this is roughly how you do it, and the courses which you need to take:

  1. Introduction to Machine Learning - And the best course for studying this is Andrew Ng's coursera course. You don't need to complete the HW's etc. It is self-paced and archived. So, just watch the courses, and do the assignments for a hands-on knowledge. I even tried doing the same assignments in both Octave and Python. Completing this course would also help you solve Kaggle problems.
  2. Exploratory Analysis - Doing preliminary cleaning and exploratory analysis is very important in every data science problem. So, learning those methods would help in learning visualizations, exploratory techniques etc. This Coursera course is a nice one.
  3. Databases - Data is not always available in neat tsv's or csv's like in online courses. One needs to learn to handle data stored in databases. They might be SQL based, or NoSQL, they might be row-based or columnar. So, this is a nice course for learning about databases getting a know of how to deal with them.
  4. Algorithms - Knowledge of basic data structures and algorithms would be enough to solve most Kaggle and real-world data problems (along with all the mentioned above, though). So, get yourself a nice Intro. to algos book.

So, all those mentioned above are essential for understanding and tackling a data science problem. All the others are just improvements above these concepts, including NLP, Deep Learning, etc.

So, have these foundations nice and good, so that you can build upon these and get familiar and test the waters of much deeper concepts like neural nets, NLP, etc.

Finally, it is always useful to get a knack of Big Data and distributed algorithms and concepts. This coursera course is a perfect start for learning the concepts of parallel computing and handling huge data.

  • $\begingroup$ Unfortunately, it's not enough to convince someone to hire you if you need to be trained. The knowledge need to be understood before the first day of work. $\endgroup$
    – SmallChess
    Commented Sep 4, 2015 at 6:00
  • $\begingroup$ @StudentT I don't understand why it's not an enough background for getting hired. The question mentions What courses / subjects are most important to the field of Data Science? And these are exactly those courses which I have done, and now I am leading a data science team too. Of course, you have to complete the projects done in the courses too. $\endgroup$
    – Dawny33
    Commented Sep 4, 2015 at 7:19
  • $\begingroup$ You're lucky or you're just too good : - ). Normally, a data scientist is expected to be like a phd and be real master in everything. That's because the field is very competitive, only the best out of the best should stay. Someone who just come out from uni is expected to work on like data entry or like software engineer. $\endgroup$
    – SmallChess
    Commented Sep 4, 2015 at 7:28
  • $\begingroup$ @StudentT I definitely don't think this discussion would fit the answer. But, as per industry requirements and the OP's question, I guess what I mentioned above would give a solid foundation of data science. $\endgroup$
    – Dawny33
    Commented Sep 4, 2015 at 7:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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