PX390-15 Scientific Computing
This module should help you develop C programming skills. The module will consist of some lectures and a series of programming exercises designed to illustrate important aspects of program design. The module will also cover some important numerical techniques used in data processing in physics. Aspects relating to the reliability, accuracy and efficiency of these techniques will be discussed, as well as other issues such as making software user friendly, and data transfer between platforms. The module will be assessed on the basis of the exercises completed during the module and some project work.
To develop proficiency in the solution of physics problems and to understand the fundamentals of numerical computation using the C programming language, which underpins modern software.
This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ.
- The C Syntax and the development cycle. The underlying representation of data in hardware
will be discussed, and the methods by which the C language reveals this low-level description
through the use of pointers.
- Tools for debugging and verifying C programs will be introduced, and coding standards and
effective programming techniques introduced to reinforce the concepts of modularity and clarity
in code writing.
- Numerical representation of mathematical objects, and, in particular, multi-dimensional
functions, will be introduced. Numerical integration will be used to illustrate concepts of
numerical accuracy and the relationship of numerical methods to function properties.
- Algorithms for solving chaotic and stochastic differential equations will be explored, and
robustness and reproducibility will be quantified.
- The finite difference method will be explained, along with concepts of numerical convergence
- Minimisation techniques and the use of the weak form of equations will be used to introduce
finite-element and variational approaches.
- Data structures, and in particular lists and tree algorithms. Use of these in physics problems, in
particular, n-body codes.
By the end of the module, students should be able to:
- Program in the C language, and be familiar with the development cycle and debugging tools.
- Explain how computer hardware implements numerical operations and the implications for numerical software
- Select appropriate algorithms to solve physics problems, including those that involve partial differential equations
- Test their code and determine the size of numerical errors.
Indicative reading list
Steve Oualliane, ‘Practical C Programming’, O’Reilly Media, 1997
William H Press, Saul Teukolsky, William Vetterling and Brian Flannery, ‘Numerical Recipes in C’,
Cambridge University Press, 2007
Subject specific skills
Skills in computer-modelling, reasoning, thinking. Knowledge of mathematics and physics.
Analytical, communication, computing and general IT, problem-solving, self-study
|Lectures||10 sessions of 1 hour (7%)|
|Other activity||30 hours (20%)|
|Private study||110 hours (73%)|
Private study description
Working through lecture notes, formulating problems, writing and testing code, discussing with others taking the module, preparing and submitting coursework
Other activity description
15 x 2 hours Workshops
No further costs have been identified for this module.
You do not need to pass all assessment components to pass the module.
Assessment group A1
|Assessed computing assignments||100%|
Submission of computer codes
Feedback on assessment
Written feedback on assessments, group feedback
This module is Option list A for:
- Year 3 of UMAA-G100 Undergraduate Mathematics (BSc)
- Year 4 of UMAA-G101 Undergraduate Mathematics with Intercalated Year
- Year 3 of UPXA-F300 Undergraduate Physics (BSc)
- Year 4 of UPXA-F301 Undergraduate Physics (with Intercalated Year)
This module is Option list B for:
UMAA-G105 Undergraduate Master of Mathematics (with Intercalated Year)
- Year 3 of G105 Mathematics (MMath) with Intercalated Year
- Year 5 of G105 Mathematics (MMath) with Intercalated Year
UMAA-G103 Undergraduate Mathematics (MMath)
- Year 3 of G103 Mathematics (MMath)
- Year 4 of G103 Mathematics (MMath)
UMAA-G106 Undergraduate Mathematics (MMath) with Study in Europe
- Year 3 of G106 Mathematics (MMath) with Study in Europe
- Year 4 of G106 Mathematics (MMath) with Study in Europe
- Year 3 of UPXA-FG33 Undergraduate Mathematics and Physics (BSc MMathPhys)
- Year 3 of UPXA-GF13 Undergraduate Mathematics and Physics (BSc)
- Year 3 of UPXA-FG31 Undergraduate Mathematics and Physics (MMathPhys)
- Year 4 of UPXA-GF14 Undergraduate Mathematics and Physics (with Intercalated Year)
- Year 3 of UPXA-F304 Undergraduate Physics (BSc MPhys)
- Year 3 of UPXA-F303 Undergraduate Physics (MPhys)