On Wed Oct 19 10:25:12, Peter Bowyer wrote:

> As you may remember from previous posts, I am researching ways to

> improve the teaching of programming to physics students.

[...]

> My idea was to teach the basics using Python and scientific

> 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

> this as the introduction to programming?

The question is: would you use Matlab in an introductory programming

course for students in other disciplines? I think it's worth separating

general programming skills from computational techniques.

> My arguments at present are that Matlab is a proprietary tool so the

> cost to students in obtaining copies will be not inconsiderable

> (considering it will only be used for a short course), and that

> Matlab is a specialised tool, so those not interested in going on

> into a physics related field will not find it of any use (unlike Python).

I think these are both strong arguments against it, though you might

find some resistance to the second. After all, these students are being

educated as physicists in the assumption that at least some of them will

stay in the profession.

> The arguments for Matlab are stronger:

> 1) It's a standard tool, widely used

> 2) It is easier to install and maintain (discounting the Enthought

> edition for a moment, Python is CRAP compared with other langauges -

> where is the Package manager to make life easier?)

Are you talking about distributions of the actual language runtime and

standard library, or installing packages, or something else?

> 3) The editor has a good interface (v7 and above) which IDLE lacks

> (no data inspector 'right there')

> 4) Integrated help for all the scientific functions

It sounds like you need some kind of IDE, with possibly specialized

support for scientific or mathematical computing. I'm afraid I'd can't

suggest one for Python, although I'd be interested in hearing just

which features you think it would require.

> Are there any reasons you can think of that Python makes a better

> choice than Matlab? I myself would far rather use Python (I have

> ideas about how VPython can help the students understand Python) but

> need a more robust reason than a handwaving argument about

> "3D...easier for students to visualise...".

I keep coming back to the licensing issue. The most motivated students

will want to experiment in their own time. If they have to spend that

time in a computer lab then that might impact their motivation.

> Toby Donaldson made a good point in his post on 17/10/05:

[...]

> >It's not so good for talking about "programming as exploiting your

> >computer", i.e. when it comes time to implement an algorithm

> >*efficiently*.

You can still learn about efficiency in Python. The result just might not

be as fast as you would like. :-)

> The people doing my course know absolutely nothing about programming,

> but at the same time being physics, every member of staff mentions

> efficiency in the same sentence as programming :-) With that said,

> now the grounds are switched from teaching C/Python to Matlab/Python

> it doesn't appear to be such a valid argument.

I don't believe that I was all that great at physics or mathematics at

university, but I found that I enjoyed experimenting with different

programming languages.

As a physics student, I was initially taught Pascal, then Fortran, and

finally 8086 assembler and the language used in Maple, but none of these

have been particularly useful. Later on, I needed to use Matlab and found

my way to RLaB, which I'm happy to see has recently been brought back to

life as a different project:

http://rlabplus.sourceforge.net/In the end, I went from RLaB to Python precisely because Python is a more

general purpose and extensible language. For anything that required

intensive computation, I used C with the help of the Numerical Recipes book

and processed the results with Python. In an ideal world, I'd have used

an ODE solver from Python.

To conclude, I'd say that Python gives you lots of opportunities to

experiment with non-scientific libraries and tools (such as GUIs and web

interfaces) while still supporting some scientific computing. Matlab may

cover the scientific domain more extensively, but it might be tricky to

integrate with other tools (assuming that you have the time and inclination

to explore that avenue).

I still think that RLaB is worth checking out. Although it didn't have

the integrated environment that you presumably get with Matlab, I seem to

remember that it was fairly nice to use, and it provided some reasonable

basic visualization (plotting) facilities.

David

_______________________________________________

Edu-sig mailing list

[hidden email]
http://mail.python.org/mailman/listinfo/edu-sig