Well, I just finished my last exercise for this course so I thought I'd come back and update my comments.

This was a really good course, with a good mix of materials covering a range of ML concepts, algorithms and real-world topics. Each week's material consists of a set of video lectures presenting a pretty thorough exploration of that week's topics at an introductory level, plus a set of "review questions" i.e. online quiz on the week's topics. These are graded immediately, and you can take the quiz as many times as you like, although obviously the point is to try and get the questions right first time if you can.

There is also a practical programming exercise each week (except in the final week), which typically involves implementing various parts of the algorithms or techniques covered by the week's videos. You are normally provided with a set of Octave scripts and data to support this exercise, so you only have to complete specific parts of the process. The instructions for each exercise usually guide you towards a traditional iterative (loop-based) implementation, but in many cases it is easier and more efficient to use vector-based arithmetic in Octave, and one of the teaching assistants (Tom Mosher) provided a set of tutorials to help with this approach for the first few weeks. The programming exercises are fairly challenging, because you need to have a reasonable understanding of what you are trying to achieve, but you can often complete the implementation in just a few lines of code, especially if you use the vector-based approach.

You have to complete several steps in the processing for each programming assignment, and each step can be submitted for grading in turn via the Octave command-line interface. You can re-submit as many times as you like, up to the course deadline. Each week's exercise has a due date (usually two weeks ahead), and there is a "hard deadline" about 2 weeks after the final week of the course. If you submit your exercises after the relevant due date (but before the hard deadline), your submission score will be penalized 20%. This grading policy is more generous than some Coursera courses, where you can only re-submit work a couple of times (if at all) and you lose 50% or more if you submit your work late.

There is also a set of tutorials for Octave, which are to be completed as part of the first week or two, and these obviously provide a foundation for subsequent weeks.

The maths content is fairly straightforward, even for a liberal arts graduate like me, and there is a quick introductory session on linear algebra to help you get to grips with the use of vectors/matrices in Octave. The main problem I found was simply reading the various algorithms, as the notation involves a lot of superscripts/subscripts to keep track of the various elements being processed. It's often much easier to read the Octave code that uses vectors/matrices instead. But conceptually it's all pretty straightforward and very well explained, so

you should be able to understand what's going on at each stage.

Most of the algorithms were for supervised learning, but we also looked at clustering for unsupervised learning. There was plenty of good advice on how to organise your machine learning "pipeline", how to decide the size of your training/cross-validation/test data-sets and validate/evaluate your results etc, and other useful techniques e.g. ceiling analysis to help decide where to invest effort in improving your machine learning process. Various application areas were looked at e.g. recommender systems, OCR, image processing etc, which helped to relate the maths to real-world practice.

I had very little knowledge of ML before I started the course, so I learned a lot, at least in general terms. I would probably have to work hard to implement a given algorithm from scratch, but I have a much better understanding of how to select a suitable algorithm from an ML library (such as

Apache Spark's MLlib or

Python's scikit-learn) for a given application, and about the many other issues to consider when designing an ML pipeline.

I would highly recommend this course to anybody who's curious about the world of Machine Learning and its applications in the age of Big Data.