I'm pretty good at using MATLAB for a lot of different things, and less familiar with Mathematica, but I just got accepted to a graduate school in mathematics where (from what I can tell so far) some people use one while some use the other. My plan is to teach myself how to effectively use Mathematica (again.. used it in undergrad 15 years ago). In my experience every piece of software has strengths and weaknesses, so I would like to develop the ability to use either software tool based on the nature of the problem I'm facing and the specifics strengths of each piece of software.

Any advice on what resources to explore?

  • $\begingroup$ If you're already a fairly competent programmer, when learning new languages I like to implement algorithms I'm already familiar with in that language. Since I'm already familiar with the algorithm I don't have to focus on the details there, but instead on the language. Might be worth doing this from within Mathematica for some topics. $\endgroup$ – ktm May 11 '18 at 18:43
  • $\begingroup$ I'm learning from a zero programming level so may not be relevant but I found a quick flick through An Elementary Introduction to the Wolfram Language pretty helpful or just generally using the inbuilt help system - hover over a function, click the "i" and it shows examples, how they're used and related function. Good springboard imo $\endgroup$ – Awkward Panda May 11 '18 at 18:53

so I would like to develop the ability to use either software tool based on the nature of the problem I'm facing

For me, the best way to learn any new programming language B, given you already know A, is to try to solve the same problem you know how to do in A, but using B.

This is much better way to learn B than starting from basic syntax and just looking at random examples in B. Because now you are trying to implement a solution to a problem you already know how to do, but in A, so you have some framework on what to expect and what to do. And also you will have more motivation to learn B this way.

Suppose you know how to make a plot of sin function in B. Then try to do the same using A. Or you know how to implement simple feeback control system in A, now try to do the same in B, and so on. Other things come along as you are trying to do this.

Because of this, resources that show how to solve the same problem using the two languages side by side, are better initially to use and learn from.

One such resource is rosettacode. It has thousands of problems solved in many languages, including Matlab and Mathematica.

Another is How to solve basic engineering and mathematics problems using Mathematica, Matlab and Maple but this compares how to solve basic engineering problems commonly used in Matlab with Mathematica and Maple.

And you can always also look at the excellent collection of resources in where-can-i-find-examples-of-good-mathematica-programming-practice as you are working though examples.

| improve this answer | |
  • 2
    $\begingroup$ Yeah but generally speaking, that could also be sub-optimal. Like if you know C and try to learn MMA, you'll use For etc. $\endgroup$ – anderstood May 11 '18 at 19:15
  • $\begingroup$ @anderstood I did not say to use the same syntax or approach. But to learn how to implement solving the same problem using the new language. The main point, is to learn how to use the new language, but in framework of a known and familiar problem for the user. in Rosettacode, each problem is implemented using best practices of the language being used. $\endgroup$ – Nasser May 11 '18 at 19:19
  • $\begingroup$ OK, I see :) But can you prove that's the best way? (just kidding) $\endgroup$ – anderstood May 11 '18 at 19:21

Not the answer you're looking for? Browse other questions tagged or ask your own question.