Brilliant -- that's done it. Thanks Richard :-)
Regarding the old version of Octave, I don't think that was the explanation for the strange file paths, but I don't think those paths were the source of the problem. I queried this with IT support (who were extremely helpful and responsive, bless them!) and my understanding is that each student response is run in a chroot, which is why it looks like it's running in / even though it's not.
Versions of Octave <4.0 don't support the classdef method of class definitions. Now that we've upgraded to >4.0, it is working beautifully -- including the strings in classes with your latest suggestion.
Thanks again for all your help,
-Angus