Learning Outcomes:
Understand functional programming in Mathematica.
Understand procedural programming in Mathematica.
Understand recursion and dynamic programming in Mathematica.
Understand how to perform numerical computations in Mathematica.
Understand how to manipulate symbolic expressions in Mathematica.
Understand graphics and visualisation in Mathematica.