PX39015 Scientific Computing
Introductory description
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.
Module aims
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.
Outline syllabus
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 lowlevel 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, multidimensional
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
and stability.  Minimisation techniques and the use of the weak form of equations will be used to introduce
finiteelement and variational approaches.  Data structures, and in particular lists and tree algorithms. Use of these in physics problems, in
particular, nbody codes.
Learning outcomes
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
View reading list on Talis Aspire
Subject specific skills
Skills in computermodelling, reasoning, thinking. Knowledge of mathematics and physics.
Transferable skills
Analytical, communication, computing and general IT, problemsolving, selfstudy
Study time
Type  Required 

Lectures  10 sessions of 1 hour (7%) 
Other activity  30 hours (20%) 
Private study  110 hours (73%) 
Total  150 hours 
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
Costs
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
Weighting  Study time  

Assessed computing assignments  100%  
Submission of computer codes 
Feedback on assessment
Written feedback on assessments, group feedback
Courses
This module is Option list A for:

UMAAG100 Undergraduate Mathematics (BSc)
 Year 3 of G100 Mathematics
 Year 3 of G100 Mathematics
 Year 3 of G100 Mathematics
 Year 3 of UMAAG103 Undergraduate Mathematics (MMath)
 Year 4 of UMAAG101 Undergraduate Mathematics with Intercalated Year

UPXAF300 Undergraduate Physics (BSc)
 Year 3 of F300 Physics
 Year 3 of F300 Physics
 Year 3 of F300 Physics

UPXAF303 Undergraduate Physics (MPhys)
 Year 3 of F300 Physics
 Year 3 of F303 Physics (MPhys)
 Year 4 of UPXAF301 Undergraduate Physics (with Intercalated Year)

UPXAF3F5 Undergraduate Physics with Astrophysics (BSc)
 Year 3 of F3F5 Physics with Astrophysics
 Year 3 of F3F5 Physics with Astrophysics
 Year 3 of UPXAF3FA Undergraduate Physics with Astrophysics (MPhys)
This module is Option list B for:

UMAAG105 Undergraduate Master of Mathematics (with Intercalated Year)
 Year 4 of G105 Mathematics (MMath) with Intercalated Year
 Year 5 of G105 Mathematics (MMath) with Intercalated Year

UMAAG103 Undergraduate Mathematics (MMath)
 Year 3 of G103 Mathematics (MMath)
 Year 3 of G103 Mathematics (MMath)
 Year 4 of G103 Mathematics (MMath)
 Year 4 of G103 Mathematics (MMath)

UMAAG106 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 UPXAFG33 Undergraduate Mathematics and Physics (BSc MMathPhys)

UPXAGF13 Undergraduate Mathematics and Physics (BSc)
 Year 3 of GF13 Mathematics and Physics
 Year 3 of GF13 Mathematics and Physics

UPXAFG31 Undergraduate Mathematics and Physics (MMathPhys)
 Year 3 of FG31 Mathematics and Physics (MMathPhys)
 Year 3 of FG31 Mathematics and Physics (MMathPhys)
 Year 4 of UPXAGF14 Undergraduate Mathematics and Physics (with Intercalated Year)
 Year 3 of UPXAF303 Undergraduate Physics (MPhys)