
This title features clear and intuitive explanations of the mathematics of probability theory, outstanding problem sets, and a variety of diverse examples and applications.
But if anyone wants to become an expert into ML/DS, learning statistics and probability is fundamental. Books like A First Course in Probability, Introduction to Statistical Learning and Elements of Statistical Learning, to name a few, are very important.
A lot of the mistakes done in practice are based on a lack of understanding in sampling techniques, how statistical metrics can be misleading and so on.
First thing I learned in statistics is the difference between quantitative and qualitative information. If someone knows this before hopping into Kaggle, they know that categorical features can't be used as continuous features.
This probably won't be the case for a question as basic as, "what is regression?" But for any intermediate to advanced interview question involving regression, I would expect companies to jealously guard it.
If you're earnestly interested in building and testing your knowledge, I would recommend you read The Elements of Statistical Learning and Data Analysis Using Regression and Multilevel/Hierarchical Models. Also a good upper undergrad textbook in probability, like A First Course in Probability.
O'Reilly - Scott Murray - Interactive Data Visualization for the Web
Data Visualization with D3.js Cookbook
A First Course in Probability
Rails AntiPatterns - Best Practice Ruby on Rails Refactoring
Bayesian Data Analysis Andrew Gelma
The Pragmatic Programmer
Code Complete
Bishop - Pattern Recognition and Machine Learning
O'Reilly Mining The Social Web
I guess the thing that you should realize though is that this isn't a degree in computer programming, or IT - it's a more or less a mathematics degree. As the saying goes, "Computer Science is no more about computers than astronomy is about telescopes."
If you want to get ready for serious computer science, I'd recommend a few things which are what I think I got out of my undergraduate degree:
1. A solid understanding of algorithms and data-structures. To this end, topcoder.com/tc is invaluable and some serious study will quickly bring you up to speed. CLRS (Introduction to Algorithms) is a great resource, as is train.usaco.org.
2. A basic understanding of theoretical computer science. To that end, I found this a really useful book: http://www.amazon.com/dp/0321455363
3. Basic understanding of networking and operating systems. Not sure the best route here, there must be online courses. Not too many great self-study books in this area, unfortunately. So find some online courses.
4. A decent math background: linear algebra, calculus, combinatorics, and probability. For self study:
Calculus: Stewart's Calculus is great.
Linear Algebra: I've yet to meet a linear algebra text I liked, so not sure here.
Probability: A First Course in Probability is an outstanding textbook.
Other: Concrete Mathematics by Knuth is an incredible book, very VERY hard and took me a long time to get through, but packed with useful and interesting information. I'd recommend it after the rest of these.
5. Read Snow Crash and watch Hackers.Also, keep writing lots of code. Daily practice is the secret to everything.