Mathematica Workshop

This workshop aims to show useful parts of the Mathematica programming language and how to use the language in your research projects. We expect attendees will have at least a basic working knowledge of the syntax. We will start with a quick overview of the basics and work our way towards practical examples and uses of Mathematica in scientific research.

Introduction

Mathematica is a programming language that is developed by Wolfram that aims to give a complete set of tools for computational physics and mathematics. The most common way to use the language is through a notebook interface, which is approachable to many who do not have a background in programming. The notebook interface contains all of the necessary components to write and execute both small and large codes.

The biggest advantage to using Mathematica over any other language is it’s support for completely symbolic calculations. It will allow the user to perform almost all of the mathematical manipulations that that are familiar to a physicist/mathematician. These symbolic calculations avoid the numerical approximation that is inherent in any numerical language (C, python…).

The visualization functionality is also powerful. It excels in both diagnostic tasks and is capable of making publication-quality figures.

In addition to symbolics and visualization, Mathematica also provides all of the normal numerical functions of standard programming languages. However, in this respect it is not as efficient as many other language options.

The reason that Mathematica is as prevalent as it is in scientific computing is the combination of these 3 components in an easy-to-use interface. It is a very good starting point when entering the realm of scientific programming.

Reasons to use Mathematica

  • Complete toolset for scientific computing
  • Combines symbolics, visualization and numerics in a single language
  • Easy to get started
  • Interpreted language (no need to compile)

Reasons NOT to use Mathematica

  • Proprietary (Expensive)
  • Poor support for textual interfaces
  • Can be computationally inefficient
  • Syntax can be messy