[Edu-sig] Sage, SciPy or continue with MatLab ???

David MacQuigg macquigg at ece.arizona.edu
Mon Feb 1 18:45:37 CET 2010

kirby urner wrote:
> On Sun, Jan 31, 2010 at 10:05 AM, michel paul <mpaul213 at gmail.com> wrote:
> << SNIP >>
>> Again, one of the things I truly love about Sage is that at its core, it is
>> pure Python.  I was delighted with something one of my FST students said.  I
>> had been using Sage as my blackboard in class, and then I started showing
>> them pure Python.  My student said that he liked having to think things
>> through in pure Python better than using Sage directly, because Sage seemed
>> so overwhelming.  When I had them restricted to just the Python shell, he
>> liked having to reason with just a small set of constructs.  I was glad to
>> hear him say that, as it showed he was really getting the message about what
>> I was saying 'computational thinking' was all about.
>> - Michel
> Thank you for sharing more about Sage, the above remark especially.
> Yes, like Mathematica, Sage may seem overwhelming given how the math
> concepts come flooding in on top of Python.
> If Python is unfamiliar to begin with, then the learning curve may seem
> vertical.
> If you read through parts of the tutorial below (as I've been doing),
> you'll see that the introductory chapters read a lot like a standard
> Python tutorial.
> This book is written (per introduction) for Sage users who have been
> exposed to a computer language before, just maybe not Python....
> http://sage.math.washington.edu/home/tkosan/newbies_book/sage_for_newbies_v1.23.pdf

Nice tutorial.  I'm still having difficulty seeing an advantage of Sage 
over Python/SciPy, however.

I'm putting together a proposal for a freshman-level course in CS.  
Currently we have three courses - one for CS majors (Java), one for 
computer engineers (C), and one for physics and astronomy (C).   Matlab 
is also used in many of our science and engineering classes.  Here it is 
just a tool, not a subject of study in itself.

The course I will propose could serve all departments, and will cover 
the fundamentals common to all.  It could also be an excellent high 
school preparation for college.  The language will almost certainly be 
Python, although we may get as far as introducing a little Java or C.  
(This could perhaps be an option in the last three weeks - Java for CS 
majors, and C for engineers and scientists.)

Graphics will be very important - everything from simple 2D plots to 3D 
animations.  The focus will be on computing fundamentals, however, not 
the details of how these packages work.  They are just tools to 
visualize an equation or process and aid in the understanding of concepts.

Examples contributed by faculty in math, science and engineering will be 
an outstanding feature of this course.  Here is where we need more than 
the standard library in Python.  We need a Fourier transform that "just 
works" and produces beautiful spectra of various waveforms and images.  
We need the functionality of MatLab, without its drawbacks.

I've been leaning toward Python/SciPy/MatPlotLib, but recent discussions 
of Sage have me interested in looking at alternatives.  What are the 
factors we need to consider?

1) Features.  Does the package do everything we might want, now and in 
the future when students use it for later classes and on the job.
2) Simplicity.  Is it easy to set up and use on student computers 
(Windows, Mac or Linux)?  Is it easy to learn?  Is it open-source, so 
students can dig into it as deep as they like?   Is it available 
everywhere without legal complications, e.g. MatLab's license?
3) Universality.  This is more than just popularity (counting users).   
We need a minimum level of community support (discussion groups, 
interest from employers, programs on SourceForge, books from Amazon, 
etc).  Availability of textbooks is a special consideration in this 
category.  Ruby, Prothon, Scala, etc. (one up from Python?) have nothing 
comparable to Litvin/Zelle/Goldwasser.
4) Conformity.  Does it fit in well with existing curricula?  Is there 
an easy transition to Java, C, MatLab, etc.  Can it be used as just a 
tool in a course that has nothing to do with programming?

This last factor is especially difficult for us idealists.  We might 
like to toss out everything in the status quo, and start with a clean 
slate, but that approach will get us nowhere.  We need options all the 
way from a one-hour demo to a whole course centered on the use of these 

Before comparing these packages, let's discuss the factors above.  Have 
I left out anything important?

-- Dave

************************************************************     *
* David MacQuigg, PhD    email: macquigg at ece.arizona.edu   *  *
* Research Associate                phone: USA 520-721-4583   *  *  *
* ECE Department, University of Arizona                       *  *  *
*                                 9320 East Mikelyn Lane       * * *
* http://purl.net/macquigg        Tucson, Arizona 85710          *
************************************************************     *

More information about the Edu-sig mailing list