[SciPy-user] Matlab, Scipy and teaching science

Hans Fangohr H.FANGOHR at soton.ac.uk
Thu Oct 20 12:20:16 CDT 2005


Hi all,

> I'm new to this list, so let me introduce myself.  I'm currently
> doing a Masters investigating ways to teach physics students how to
<snip>
> modules.  However, the question I am consistently coming up against
> is "Why not teach the students Matlab?".  It's a very good point and
> one I can think up no clear answer for.  If the students stay in
> Physics or a related field they will be using Matlab (and
> C/C++/Fortran if needed).  Therefore is there any reason not to teach
> Matlab as the introduction to programming?
<snip>

As Prabhu pointed out, I have recently replaced Matlab with Python in a 
computing module I deliver to engineering students. They have very little 
prior knowledge. Let me try to reply to some of your points, and provide 
some further thought, partly based on this experience.

I know Matlab pretty well, and have experience teaching beginners using 
it. While in my eyes Matlab is a very good collection of linear algebra 
libraries and decent visualisation in the same package, the glueing 
'matlab language' that is used to script these components together is 
quite broken (from a teaching point of view). For example,

(i) you can have only one (globally visible) function per file. This is 
confusing for students because I try to introduce the concept of 
modularisation by suggesting to use functions to split up code. They find 
this not useful, because then the code is distributed over several files 
(!) and you can't see all the files at the same time on your screen. Also:

(ii) the name of the function is determined by the label of the function 
inside the file that defines the function. However, other code (located 
outside that file) will know the function under the name of the file (!) 
it is saved in (without the required ".m" extension). You therefore have 
two names which -- if you want to keep things tidy -- should always be the 
same. This is another source for errors and frustration.

(iii) There are more odd things, for example try these statements at theh 
matlab command prompt: "sum 10" or "cos pi" for some entertainment. If you 
are a student, you might expect "10" and "0.0" as replies but you get "97" 
and "0.4560 -0.2410". (I would have hoped to get an error message.) While 
these are very entertaining challenges for the lecturer, this is clearly 
confusing to the student. (Can you work out why this happens?)

It boils down to this: If you know how to program 'correctly' already, how 
to design your programs and data structures well, then you can write 
useful and structured code in Matlab (or in C for that matter). If, 
however, you are trying to learn these abilities, then Python puts fewer 
obstacles in the way than Matlab.

I have published a few of these thoughts here (if citing a paper helps for 
your case): H. Fangohr. A Comparison of C, Matlab and Python as Teaching 
Languages in Engineering. Lecture Notes on Computational Science 3039, 
1210-1217 (2004)

Above, I have outlined practical issues for complete beginners.

If you look slightly ahead, then Python supports the three most common 
programing paradigms: imperative, functional and object oriented whereas 
Matlab is (pratically)  procedural (and it not really object oriented). 
Python allows you to use these concepts but you can mix and match as you 
like and ignore what you don't want to know and use. (This keeps the 
barrier low to start using it, but keeps the door open to do quite 
sophisticated stuff.)

With respect to 'Matlab is THE software in industry': there is no doubt 
that it is widely used in certain parts of science and engineering. (And 
so for good reason: it is an interpreted high-level language that makes 
your life easier than if you used Fortran or C for the same problem.) 
However, there is a certainly a growing trend towards Python. I have 
spoken with a representative from Airbus and was told that a number of new 
projects use Python as the user interface (often with C or C++ underneath 
whereever speed is required). Surprisingly, one of the reasons mentioned 
why they move away from Matlab, is that it was too expensive. They also 
expressed delight that students leaving our university would know (some) 
Python already.

I hope this is some useful information.

Cheers,

Hans



More information about the SciPy-user mailing list