Octave is very easy to learn if you have previous programming experience.
You won't _write_ programs a lot. There will be cookie-cutter code, and you will fill in some blanks. A line here a line there.
Trust me, Octave wasn’t a deal-breaker if you tried. And a lot of formulae were the code.
But I've never seen actual production anything in Matlab. Did Matlab provide something at the time others did not? If so, how did they transfer MatLab to running production models? Or did they create a model with basic outcomes - and then code a representation of it in C++, etc?
It was around the time I was in university that Python really matured for numerical computing, but professors (as opposed to grad students) were likely to be already familiar with Matlab, so there wasn't much reason for them to learn Python. Andrew Ng was already a mid-career researcher when he made his course, which was probably based on older materials (I also learned basic neural networks in my numerical computing class in 2008), so it made sense for him to continue to use Matlab, especially because Octave exists as an open-source reimplementation of the basic functionality.
These days, you wouldn't use anything else but Python for ML, at least until you really productionize the implementation at a large scale, at which case you might rewrite in C++ or Rust (I don't know if they even bother rewriting these days when most of the computation happens in GPUs or TPUs). And it's my understanding, although I'm not really too familiar these days, that Matlab has mostly pivoted into providing a toolbox of all sorts of esoteric numerical methods for engineering-related tasks like finite element analysis, as well as hardware simulation (using Simulink).
I've done my degree a bit before you (in Electrical Engineering, also learned all I could about NN and other AI methods back then) and most people would use MATLAB for whatever scientific algorithms/calculation they needed to do. We had free student licences at the university so that we could use it for lab work and for our theses. I remember it had all kinds of numerical optimization algorithms/packages, control theory algorithms, etc.
Really?
If you have programming experience, you don't really need to learn Octave.
Some formulae were the code.
In case of others, the whole program was written, with one or two missing lines that you had to implement.
I spent zero time learning Octave, because there was nothing to learn.
If you're playing around interactively, it's a bit easier to write (in Matlab)
m = [1 0 0 ; 0 0 -1 ; 0 1 0]
than (in Python) m = np.array([[1, 0, 0], [0, 0, -1], [0, 1, 0]])
Also a bit longer example: m = rand(3,4)
a = [0.1 0.2 0.3]
m \ a'
versus m = np.random.rand(3,4)
a = np.array([0.1, 0.2, 0.3])
np.linalg.lstsq(m, a.T)
wtf?
google...
fine!
a = np.array([[0.1, 0.2, 0.3]])
np.linalg.lstsq(m, a.T)
But if you're developing software, you can't really easily and reliably deploy Matlab or Octave to run in the cloud in your production systems, whereas Python you can.I wish someone would make "MATLAB with all its toolboxes, but with python syntax, in a colab-like IDE".
Learning Octave made me wish all languages supported matrices, vectors, and the necessary operations.
And reading code tends to be a quicker way to learn roughly how something works than writing it from scratch.
Not really. They had lots of comments that explained what the code did. You didn't need to read most of the code.
My point is that compared to real university courses, the HW in this course would be labeled as "trivial". Writing those few lines of code was no more instructive than an in class paper test. It's more comparable to answering simple questions than building anything.
I don't think I had to debug even once in that course. It was that easy.
But in the real world
1) Python is the lingua franca for ML. You WILL need to learn python. All other resources are in python. Matlab you'll likely never use again, so it's kind of a waste.
2) Probably more people have existing python knowledge than Matlab knowledge. And if you already know python, and you know python is the lingua franca, it's annoying having to learn Matlab knowing that in the real world you'd be better off with python.
2. Optimization algorithms, of which gradient descent is a subset, are deployed in production in many languages, very often not Python.
3. There is almost nothing to learn. For the programming assignments in the course, Octave is used as a succinct DSL for matrix math. The assignments were to simply write the math in a computer and watch what happens when you run the computations.
4. You wouldn't learn Python by completing the programming assignments because you're just calling numerical routines, not dealing with anything else. Writing the code in Python simply adds more opportunity for error with no pedagogical benefit.
Compare to matlab, where matrices are first-class, syntactic sugar is consistent and rather lovely. But then the rest of the language is detestable.
import numpy