My Data Science Master's
February 1, 2016
I dropped out of a top computer science program to teach myself data science using online resources like Udacity, edX, and Coursera. The decision was not difficult. I could learn the content I wanted to faster, more efficiently, and for a fraction of the cost. I already had a university degree and, perhaps more importantly, I already had the university experience. Paying $30K+ to go back to school seemed irresponsible.
Here are my curriculum choices and the rationale behind them. Using thousands of course ratings and reviews from Class Central, I selected the best computer science, data science, and machine learning courses from world-class institutions like Harvard, Stanford, MIT, Berkeley, Google, and Facebook. You can read my detailed reviews for most courses here (courses with reviews link to a blog post) or on Medium.
Note that the curriculum covers both Python and R, which are the two most popular programming languages for data science.
Note: if you’re looking for an online data science curriculum to follow, the link below contains my most up-to-date recommendations. I started creating this project midway through my personal data science master’s.
I want a solid computer science foundation before I start learning data science. My engineering background gives me a head start on the math and stats. Completing these three courses means I will have a standard first-year computer science curriculum, plus the full mathematical and statistical core, under my belt.
The following courses from my undergrad chemical engineering program are also core computer science courses:
Data Science Core
Listed below are the individual courses contained within the Nanodegree. The estimated timeline for graduation is 378 hours.
Three courses from the Udacity Data Analyst Nanodegree
Why the Udacity Data Analyst Nanodegree?
First and foremost, it received stellar reviews. Second, I wanted a consistent learning experience for my introduction to the field. The Data Analyst Nanodegree offered a combination of breadth, depth, and cohesiveness that a combination of content from various providers would be hard pressed to provide. I am also a fan of their “less passive listening (no long lectures) and more active doing” approach to education.
What is a Udacity Nanodegree?
Learning from data
- ✔ Machine Learning (Stanford University/Coursera)
- Creative Applications of Deep Learning with TensorFlow (Kadenze) (IN PROGRESS)
- Distributed Machine Learning with Apache Spark (University of California, Berkeley/edX)
Stanford University, TensorFlow (Google’s open source library for machine learning), and The University of California, Berkeley
- ✔ Software Testing (Udacity)
- Software Debugging (Udacity)
- ✔ How to Use Git & GitHub: Version Control for Code (Udacity)
- Mastering Software Development in R Specialization (Johns Hopkins University/Coursera) (IN PROGRESS)
Listed below are the individual courses contained within Johns Hopkins University’s “Mastering Software Development in R Specialization” on Coursera:
Johns Hopkins University’s "Mastering Software Development in R Specialization" on Coursera
Why software engineering?
The role of software engineering in data science is covered in great detail here by Alec Smith (a data science recruiter) and here by Roger Peng (Johns Hopkins University professor and “Mastering Software Development in R Specialization” creator). A quote from the former:
A lot of data science work is software engineering. Not always in the sense of designing robust systems, but simply writing software. A lot of tasks you can automate and if you want to run experiments, you have to write code, and if you can do it fast, it makes a huge difference.
And from the Mastering Software Development in R Specialization page:
As the field of data science evolves, it has become clear that software development skills are essential for producing useful data science results and products. You will learn modern software development practices to build tools that are highly reusable, modular, and suitable for use in a team-based environment or a community of developers.
Back End Development
Storing and manipulating data
- ✔ Intro to Backend (Udacity)
- ✔ Developing Scalable Apps in Python (Google/Udacity)
- ✔ Configuring Linux Web Servers (Udacity)
- ✔ Linux Command Line Basics (Udacity)
- ✔ Introduction to Databases (Stanford University)
Why back end development?
This Quora page and this Udacity article suggest that back end development and data science can be a useful combination. These Udacity courses, which are the back end courses in their Full Stack Web Developer Nanodegree, along with Stanford’s top-ranked databases course, add an aspect of data engineering to the curriculum.
Filling in the gaps. Suggestions welcome!
- ✔ Intro to Hadoop and MapReduce (Cloudera/Udacity)
- ✔ Using Python to Access Web Data (University of Michigan/Coursera)
- ✔ Building a Data Science Team (Johns Hopkins University/Coursera)
This section is fluid. Additional resources will be added as I progress through the curriculum.
If you have any recommendations for the curriculum, the above subject material in general, or would like to chat about your own educational goals, please don’t hesitate to contact me.