Skip to main content Skip to navigation

MA3K7 Problem Solving with Python

Lecturer: Siri Chongchitnan and Mark Cummings

Term(s): Term 2

Status for Mathematics students: Mathematics BSc (G100) List A, MMath (G103) List B

Note: There is a cap of 80 students due to the way this module is taught. 3rd year Maths students (G100) have priority. There is already no room for 4th year MMath students or students outside of the Maths department (including joint degree students) so we are sorry that they will not be able to register for this module. 3rd year MMath students may also need to deregister.

Commitment: 30 lectures

Assessment: 100% Coursework (50% from 5 problem sets, 50% from project)

Formal registration prerequisites: None

Assumed knowledge:

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