Inspired by Analytical April, I’ve been wondering what other science-y languages might be interesting. Mathematica, Maple and Matlab are all proprietary, but Octave is open-source and mostly Matlab compatible. I haven’t used it for a few years (I have a Matlab license), but it still seems to be under active development.
I could probably port some exercises across from R/Python, given time, but I highly doubt I have the skills to create a test runner, etc from scratch.
Oh, Ocatve! Fond (cough) memories of using that for an ML class! It has been a … while since I’ve used it, but could possibly help with things. I in no way have the skills for a test runner tho. There is a docker image, should you want to start experimenting there.
Another thought that has on occasion been bandied about (but would be a lot of work that we probably can’t manage right now): a cross-track (here I mean Julia, R, Python, Java Script, Ruby, Go - others if we can fit them) “track” that has ML/AI -is problems, and encourages solving them in more than one language.
We’ve chatted in the past about adding the scientific python stack to Python - but there is a lot of worry it would distract from the core language learning.
Yeah, I’m not sure Octave would be my go-to for a ML class. I used Matlab mainly for things (like structural engineering classes) that heavily use the Symbolic Math Toolbox. Not very Exercism-ish!
Python, to my prejudiced eye, includes Numpy at its core, so I’d love to see that in there. At the other extreme, Tensorflow/Pytorch would move the bankruptcy of Exercism from a medium-term risk to a near-term certainty. I had to pay Google a chunk of cash for use of their Colab Pro+ tier when I was training some CNNs last year (the software laughed at the mere 6GB of RAM on my graphics card at home).
If you ever run a course on getting Numpy and Sympy to play nicely together, I’d pay you for that. Both brilliant packages, but in wildly different ways.
One engineer, Simona Socrate, has expressed amazement that any structures were successful before the designers had Matlab. She’d be lost without it, and she’s senior faculty at MIT.
I am not opposed to both numpy and pandas – or even scipy and sympy. But then we’d want specific exercises that get at using them to best advantage. I once saw a student (in V2 Exercism) solve Matrix by importing numpy, and it felt like they were … missing the point.
I don’t think that means we close off introducing things like an Octave track, or exercises around processing data with numpy/pandas, or more ‘mathy’ or analytic problems. But I do think for programming language tracks, any of those scenarios need to be in service of fluency in the main (however we define that) programming language. Once we step into teaching fluency in specific libraries or techniques or domains - that’s when I think we would want to do what Matthijs suggests: introduce a track or platform (one interesting one that has been around a bit: Rosalind.) devoted to those topics/techniques.