# Computational Methods & Programming

## Module Title - Computational Methods & ProgrammingNumber of credits – 20

### Module description

In the autumn term, a selection of numerical methods for differential equations will be reviewed, together with some of the existing analysis. The material is divided into two main parts, each concerned, respectively, with the numerical solution of ordinary differential equations (ODE) and partial differential equations (PDE).

Part I introduces numerical methods for first-order ODE and is limited to one-step methods, with emphasis on Runge-Kutta methods. It includes a derivation of standard error analysis (stability, order, accuracy, consistency) for both implicit and explicit methods. It also considers the solution of linear systems and questions related to stability of dynamical systems. Examples are drawn from Hamiltonian mechanics. Some examples of nonlinear ODE are also considered.

Part II is devoted to the finite element method (FEM) for the discretization of PDE. The presentation starts with a review of function spaces with emphasis on Sobolev spaces and polynomial approximation in these spaces. It then includes the variational formulation of boundary value problems, definition and construction of finite element spaces. Standard error analysis is also included: a priori and a posteriori error estimation together with theoretical questions regarding accuracy, stability, reliability and adaptivity.

Throughout the autumn and spring terms, fundamental concepts necessary in order to think like a programmer will be presented. This course has been developed for students with no previous programming experience as well as for those already familiar with main ideas in programming. The computer language (C++) is introduced from first principles. The students are supposed to learn general techniques for solving programming problems and to understand important concepts of programming such as algorithms and code debugging.

The programming techniques introduced in the course will be implemented for numerical solution of several basic scientific and engineering problems. This course will run in both the autumn semester and the spring semester.

### By the end of the module you will be able to:

• demonstrate knowledge of standard numerical methods for ordinary and partial differential equations;
• apply a range of numerical methods to standard differential equations and derive the relevant error analysis;
• have an understanding of the programming issues associated with numerical schemes; understand the basic principles  of scientific and engineering programming;
• understand key attributes of the following elements of programming languages: variables; data types; data arrays; assignment statements; iteration statements;
• develop and implement numerically stable and accurate algorithms for the basic tasks of computational science and engineering;
• develop stable algorithms for matrix algebra, numerical solution of ordinary differential equations and for finding roots of non-linear equations.

### Teaching and assessment:

• Assessment:  50% based on a 1.5 hr written examination and continuous assessment. 50% based on course work for computer programming
• Semesters 1 and 2.