FEniCS Project Banner

Programming is a splendid tool for teaching abstract mathematicsΒΆ

For the skeptics, we have some additional scientific arguments in favor of the described approach. We quickly experienced that programming numerical algorithms allows the students to solve hard or impossible math problems occurring in real applications. This power to conquer the mathematics is very motivating in itself. Also, the combination of programming and mathematics appear to be difficult and therefore needs to be trained systematically. The reason is that classical mathematical training concerns specific problems (such as multiplying two specific polynomials) while programming must addresses abstract mathematical quantities (like a general polynomial). The students therefore need to understand that a specific mathematical problem belongs to an abstract class of problems, pick a general solution method for that class of problems, implement this method, and then apply the general tool (a Python function) to solve the original, specific problem. This is the power of mathematics in a nutshell and the reason why mathematics has been such a great success in our society. Programming is a natural tool to teach this way of using mathematics, while pen and paper techniques tend to decrease the abstract view on mathematical quantities. Obviously, teaching programming and mathematics separately in the classical way, and then expecting the students to master the combination, fails because few will then master the necessary abstract view of the mathematics on their own.