Being able to do rudimentary computer programming is essential for a mathematician. Executing numerical methods, for example, is tedious, if not impossible by hand. Fortunately, currently available programming tools, such as Matlab, Octave, Scilab, Mathematica and Maple, simplify the work and allow the mathematician to focus on solving the problem at hand and not on computer programming nuances.

This page provides links to some resources that can help learn how to use Matlab, which will also allow someone to easily use Octave and Scilab. Octave and Scilab are free and use nearly the same syntax as Matlab. Octave, in fact, uses the same syntax, but might have trouble executing more advanced Matlab programs that use specialized functions.

To create computer programs, someone must understand algorithms, but understanding algorithms requires understanding of

• Logic
• Recursion
• Program Flow Control
• Decoupling / Encapsulation
• Abstraction / Generalization

Logic is something with which every mathematician should be familiar, but for programming it comes down to appropriate application of and response to Yes/No questions. In other words, algorithm actions are driven by doing one thing when something is true and another when it is false. That something may be repeating a process again with slightly different values, i.e. performing recursive loops, calculations, logic, etc.

One could say an algorithm involves setting up a scenario, doing the n=1 step, and proceeding to n+1 over and over until the answer to “Are we done?” is “Yes.”

Before discussing program flow control, there is a sixth important bullet, especially for Matlab, which is “Vectors / Matrices”. Everything in Matlab is a matrix – even scalars are 1 x 1 matrices – so it provides wonderful tools for creating, manipulating and accessing matrices and all the information they contain. The matrix model extends to n-dimensional matrices, such as 3D tensors, which are wonderful for doing things like numerical solutions to partial differential equations.