# Top Machine Learning MOOCs and Online Lectures: A Comprehensive Survey

This post reviews Machine Learning MOOCs and online lectures for both the novice and expert audience.

**By Pulkit Khandelwal, VIT University**.

Everyone who gets going in Machine Learning (and Deep Learning) gets overwhelmed by the plethora of MOOCs available. Here, I try to give a comprehensive survey of such courses available freely on the internet. You can take this post as an complementary to this and this previous posts. I will try to highlight some important pointers such as the difficulty of the courses, the correct order in which these should to be completed, the right audience for these courses. You will get a feel of how these courses give you a stack of skills in your arsenal and how you can use them to develop practical machine learning systems.

Another important aspect is the language and packages one use to implement the self contained assignments. Do you want to use MATLAB or code in Python, do you want to use Theano or Torch or may be Caffe? Oh, wait! May be Tensorflow? How do you choose which packages to dive into?

It can also be the case that you have watched around five lectures and realise you can't keep up with the course because you are having a difficult time understanding what a pseudo inverse is? That's where you have to get the basics right before watching these Machine Learning videos!

Finally after watching through the lectures and skimming through the relevant papers you might want to set up your workstation to see the algorithms working for yourself!

So, here are some of the best courses which I have come across during my learning journey:

- Machine Learning - Andrew Ng, Stanford University
- Machine Learning for Undergraduates - Nando de Freitas, University of British Columbia
- Machine Learning - Tom Mitchell, CMU
- Learning from Data - Abu Mostafa, EdX and Caltech
- Courses on Udacity
- Deep Learning - Nando de Freitas, University of Oxford

**Machine Learning - Andrew Ng, Stanford University**

This course is the starting point. Almost every machine learning engineer or researcher has completed this course and as a matter of fact this MOOC has the most largest enrolment worldwide since its first offering. Ng’s course provides us with a good intuition based learning. He bypasses complicated mathematical derivations and formulas but at the same time make them simple enough for you to grasp the concept. He gives a prime focus on how to use the algorithms in real world scenarios i.e he gives a LOT of practical advice throughout the course so that one can apply the material with care. One thing I liked the most about Ng is that he points out the mistakes which engineers make in industries and how you can avoid that in the first place. There is a good tutorial on Linear Algebra and Octave/MATLAB within the course for newbies. The assignments cover the theory good enough and the implementation is pretty much straightforward.

That said, Ng’s course skips a lot of high level machine learning problems and algorithms. If you want to do some serious research then this course alone won’t suffice. Also, this course does not give much importance to Bayesian and probabilistic approach to Machine Learning as it is out of scope and somewhat advanced as per the goals of this course. The assignments are based on MATLAB/Octave which is good for research and initial understanding of the concepts but one might want to use Python or C for building Machine Learning Systems.

Do not skip this course if you are new to the field and math is not that strong yet.

**Machine Learning for Undergraduates - Nando de Freitas, University of British Columbia**

I found this course on Youtube by another excellent Machine Learning researcher Nando de Freitas. Remember I told that Ng has skipped over some concepts, don’t worry this course comes to the rescue! Nando has done a great job by putting up these lectures. Treat them as a complementary to Ng’s course. Nando also gives all the prerequisites required like probability, maximum and log likelihood to get hold of some of the advanced concepts. You will get a solid background in Machine Learning after you watch all of the videos. He has given importance to mathematics something which Ng has skipped. He also uses vectorization throughout the course. By the way, skipping mathematical details completely can be very dangerous.

**Machine Learning - Tom Mitchell, Carnegie Mellon University**

Tom Mitchell’s course is the favourite amongst every Machine Learning researcher. There are multiple offerings of this course. You can do any one of them. The material and assignments are succinct. The concepts are lucidly explained and to the point. The prerequisites such as linear algebra, probability theory has been covered in the initial lectures. He then covers the basic tools of Machine Learning which is then followed by a some lectures on probabilistic graphical models. Next part of the course deals with AI, neural networks, active learning and reinforcement learning. There are two bonus guest lectures by Dr. Burr Settles and Prof. Ziv Bar-Joseph. So, you see Math, ML, AI, Neural Networks Deep Learning; everything possible has been covered in this high level course. I would recommend doing this course after you finish Ng’s course in case you don’t want to browse through other courses. Go through all the lectures, recitations, reading material, assignments, projects and even his book!

**Learning from Data - Yaser-Abu Mostafa, EdX and CalTech**

It has been reviewed as one of the most challenging courses on Machine Learning. Abu divides his lectures into two categories namely: theory and practical applications. Conceptual understanding is his golden rule. A very smooth flow with clear explanation makes it yet another excellent course. The assignments are probably one of the best you will find on the internet. A very well respected professor. Here you can find a detailed review of the course.

Udacity has various courses for free on machine learning like Intro to Machine Learning, Supervised Learning, Unsupervised Learning, Deep Learning and tons of data science courses. Each of these courses has something different to offer. They focus on projects and give you all the necessary tools to do so thereby making you industry ready. Open source is their mantra. Explore for yourself once you have a good grasp of Machine Learning from the above mentioned courses. To land up with a job one should definitely get their hands on these MOOCs as they cover a variety applications of Machine Learning!

**Deep Learning - Nando de Freitas, University of Oxford**

An advanced course by Nando gives you an overview of Deep Learning techniques and all the essential concepts. He gives examples from applications such as Speech Recognition, Computer Vision, Natural Language Processing. You cannot completely understand the lectures without going through all the references mentioned. But, if you want to see the level of difficulty of advanced machine learning and neural networks’ problems and what to do next this is a good starting point. Don’t get afraid if you cannot grasp the content. It is tough and of PhD level. By the way, there are guest lectures from Alex Graves and Karol Kregor working at Google DeepMind.

A word of advice: I would recommend going through Linear Algebra and Probability Theory before delving into the above courses. MIT OCW and Khan Academy provides great content. Try to get the intuition right. If you fail to understand some part of the content then better pause the video and rewatch that segment. Lastly, you have to become a better ML programmer and you should be able to vectorize your code as much as possible. You might start with many for loops but once you get better, code vectorization should be the case! Don’t get overwhelmed by all this stuff. Learn at your own pace!

I would recommend the following flow:

**Prerequisites -> Ng -> Tom Mitchell -> Udacity**

You can look at some advice online here, here, here and here!

**Bio: Pulkit Khandelwal** is an incoming Computer Science Master’s student at McGill University. His interests lie in Computer Vision and Machine Learning.

**Related**: