Re: Algorithm Analysis Course: Should I use Mathematica for projects?

*To*: mathgroup at smc.vnet.net*Subject*: [mg127275] Re: Algorithm Analysis Course: Should I use Mathematica for projects?*From*: Joseph Gwinn <joegwinn at comcast.net>*Date*: Fri, 13 Jul 2012 02:54:02 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: mathgroup-newout@smc.vnet.net*Delivered-to*: mathgroup-newsend@smc.vnet.net*References*: <jtkuhh$2a$1@smc.vnet.net>

In article <jtkuhh$2a$1 at smc.vnet.net>, Brentt <brenttnewman at gmail.com> wrote: > Hi, > > I'm an undergrad math major, and taking a cross disciplinary Algorithm > Analysis course in the fall. I talked to the professor and he said we can > use whichever language we like and Mathematica would be fine if it had a > way to evaluate run-time. > > Two questions: > > I think the required capabilities are those found in the documentation > under "Time Measurement & Optimization". Would this be correct? And would > those functions be adequate for an algorithm analysis course? > > > I know this list would be a little biased but: should I use Mathematica? > > Cons: I absolutely adore Mathematica and never find myself wanting to > program in anything else (I've toyed with Python and other languages, but > Mathematica inspires me to play with programming like other languages have > not), and thought committing to Python for the class might expand my > programming skills. Also I'm guessing the course will focus on procedural > algorithms which might not be a good fit for Mathematica's functional > paradigm. I know Mathematica can be shoehorned in to any paradigm, but > maybe it'd be better to use a more procedural language. > > Pros: I will learn Mathematica with more depth, and there are good reasons > to get really good at one thing as opposed to OK at many things. Plus what > I learn in Mathematica may just as well translate to other languages anyway > so it may not be a big deal which I choose. > > Input anyone? Before I start, let me say that I use Mathematica for almost everything, and have done so since version 1.2. But an Algorithms course is not something I would do in Mathematica. Mathematica is far too complex internally to be suitable for this, as its hidden complexities (and thus performance scaling laws) will obscure performance scaling of the various algorithms being taught. It is hard to simply implement such common algorithms as a hash table in Mathematics, and one will spend much time wrestling with Mathematica, versus the algorithm being taught. And the scaling laws of Mathematica itself will completely obscure the scaling laws of the algorithms being programmed. I would use C (not C++, although one can use a C++ compiler). It's the simplest and cleanest language (more so than Python), and has massive support and documentation, and is a good language to have on one's resume. Joe Gwinn