Skip to main content Skip to navigation


Lecturer: Michael Schenker

Term(s): Term 1

Status for Mathematics students: List A

Commitment: 30 lectures

Assessment: 85% 3 hour examination, 15% coursework

Formal registration prerequisites: None

Assumed knowledge:

Useful background: 

Synergies: This module will go well with:

Leads to: The following modules have this module listed as assumed knowledge or useful background:

Aims: We will examine the process of mathematical problem solving, with the use of Python as an exploratory tool. Problem-solving skills will be developed through a system of rubrics, which allow each problem to be approached systematically in distinct phases. Python will used not just as a tool to perform elaborate calculations, but also for visualisation and simulation, hence allowing each problem to be explored more freely, deeply and efficiently than the pen-and-paper approach. .

You will work both individually and in groups on mathematical problems that are challenging, unfamiliar and often open-ended. The problem-solving, critical-thinking and programming skills learnt in this course are highly desirable and transferrable, whether you go on to further study or into the job market.

Content: Mathematicians are used to solving problems, but few have really thought about what the problem-solving process really involves. The great mathematician George Pòlya was one of the pioneers who regarded problem solving as a subject worthy of studying on its own. He subsequently developed what he called heuristics (i.e. a recipe) for problem solving, and this was further refined by mathematicians over the past decades.
In this module, we will not only explore these problem-solving strategies in detail, but we will also learn how even a basic knowledge of Python can be used to greatly enhance these strategies and make problem solving an enjoyable and mathematically enriching experience.

Indicative syllabus:

- The phases of problem-solving according to Pólya, Mason and others
- Using Python to enhance the problem-solving phases
- Writing a problem-solving rubric
- Making conjectures and dealing with being stuck
- Justifying and convincing
- Asking question and extending a given mathematical problem


  • Use an explicit scheme to organise your approach to solving mathematical problems.
  • Use Python for calculations and visualisation of problems, aiding and enriching your solution.
  • Critically evaluate your own problem-solving practice


  • Mason, Burton and Stacey, Thinking Mathematically, 2nd ed., Pearson (2010)
  • Linge and Langtangen, Programming for Computations - Python, 2nd ed ., Springer (2019)
  • Pólya, How To Solve It, 2nd ed., (1990)
  • Grieser, Exploring Mathematics: Problem-Solving and Proof, Springer (2018)
  • Chongchitnan, Exploring University Mathematics with Python, Springer (2023)

Additional Resources