Looking for online learning materials for this unit?
Online course materials for MATH69111

Scientific Computing

Unit code: MATH69111
Credit Rating: 15
Unit level: Level 6
Teaching period(s): Semester 1
Offered by School of Mathematics
Available as a free choice unit?: N



Additional Requirements

Students are not permitted to take, for credit, MATH49111 in an undergraduate programme and then MATH69111 in a postgraduate programme at the University of Manchester, as the courses are identical.


To develop the knowledge required to solve mathematical and scientific problems by writing computer programs in C++.


This course covers the techniques required to develop C++ programs that solve mathematical and scientific problems.

As well as covering the rudiments of C++ (which will be taught with no assumed prior knowledge) the course will also outline the basic techniques used in scientific programming, such as discretisation of equations, numerical error and code validation.

The material is examined primarily through two programming projects, chosen from a list of mathematical topics, which investigate particular algorithms or techniques in more depth. The projects will be assessed by a written report and a demonstration/oral description of the code.

Much of this course is taught in practical computer labs, which limits the number of places available.

Learning outcomes

On successful completion of this module, students will be able to formulate and write C++ programs to solve mathematical problems. They will understand how to:

  •  choose appropriate algorithms for the problem,
  •  develop a suitable program architecture and implement it in C++,
  •  debug the code and validate its results in the context of the mathematical problem.

Assessment Further Information

  •     Weekly courseworks: 10%
  •     Project 1: 40%
  •     Project 2: 50%


    Introduction to C++ programming language:
 - statements, expressions, control flow, functions, types
 - standard C++ library: streams and file i/o, strings, containers, algorithms
  - use of external libraries

 Code structure and object-oriented programming:
 - methods, member data, constructors, destructors, access specifiers
 - inheritance, virtual methods and run-time polymorphism.
 - operator overloading

 Fundamental concepts and techniques:
 - numerical error
 - discretisation
 - writing efficient code (algorithm complexity, optimisation, parallelism)
 - communication and visualisation of numerical results
 - common algorithms (covered in coursework, and in lectures as time permits) such as numerical linear algebra, root finding, quadrature, sorting, BVPs, PDEs

 Debugging and validation:
 - error handling
 - testing and test-driven development
 - debugging
 - validation of numerical results

Recommended reading

  •  S.B. Lippman, J. Lajoie, B. Moo. C++ Primer (Fourth edition). Addison Wesley, 2005. (Available as an e-book from the university library)
  •  W.H. Press, S.A. Teukolsky, W.T. Vetterling, B.P. Flannery. Numerical Recipes: The Art of Scientific Computing (Third edition). Cambridge University Press, 2007.
  •  B. Stroustrup. The C++ Programming Language (Third edition). Addison-Wesley, 1997
  •  S. Meyers. Effective C++: 55 specific ways to improve your programs and designs (Third edition). Addison-Wesley, 2005.
  •  D. Yang. C++ and object-oriented numeric computing for scientists and engineers. Springer, 2000.

Feedback methods

Feedback tutorials will provide an opportunity for students' work to be discussed and provide feedback on their understanding.  Coursework or in-class tests (where applicable) also provide an opportunity for students to receive feedback.  Students can also get feedback on their understanding directly from the lecturer, for example during the lecturer's office hour.

Study hours

  • Lectures - 11 hours
  • Practical classes & workshops - 33 hours
  • Independent study hours - 106 hours

Teaching staff

Christopher Johnson - Unit coordinator

▲ Up to the top