Skip to main navigationSkip to main content
The University of Southampton

FEEG6002 Advanced Computational Methods I

Module Overview

The module is focussed around advanced computational methods incorporating C and compiled languages, computational modelling and software engineering techniques for science and engineering. It builds on lower level courses such as FEEG1001 and FEEG2001 and assumes that the students are familiar already with one programming language (typically Python). Through the lectures and directed reading you will be able to gain understanding of the principles and methods of advanced computational and software engineering techniques along with C programming skills and how these are applied to problem solving. The laboratory sessions will cover both C programming and numerical modelling and will give you the opportunity to apply and enhance this understanding. Support in the lab sessions will help you to prepare for programming assignments, which will provide you with feedback on your ability to apply your knowledge and skills to a variety of problems. Students should be aware that this module requires pre requisite skills in programming, ideally in python

Aims and Objectives

Module Aims

- Provide students with a sound understanding of computational methods and how this can be applied to engineering problems - Provide insight and practical skills in C programming - Provide insight into advanced data structures, algorithms and software design techniques

Learning Outcomes

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • Complied versus interpreted language.
  • The C-programming language.
  • Combining C-code with Python.
  • Version control and one version control tool.
  • Remote and local use of Linux computers.
  • Shell commands.
  • Symbolic methods and code generation.
Subject Specific Intellectual and Research Skills

Having successfully completed this module you will be able to:

  • Decompose a computational problem into small parts. - analyse the computational bottleneck.
  • Use strategies to effectively address computational bottlenecks with Python and C code.
  • Develop makefiles and test programs.
Transferable and Generic Skills

Having successfully completed this module you will be able to:

  • Use a computer to perform computational modelling studies.
  • Apply software engineering techniques for science and engineering.
Subject Specific Practical Skills

Having successfully completed this module you will be able to:

  • Learn the steps in the C-program development cycle.
  • Write, compile and run C-programs.
  • Check error messages generated by the compiler.
  • Connect to the Linux server.


Programming: - Introduction to operating systems, shells. - Introduction compiled and interpreted languages, with examples C, Python, Matlab. C-Programming: - Data types and number representation - Data output. - Loops and conditionals. - Special operators. - Integer division and casting. - Functions. - Arrays. - Pointers and memory allocation. - Examples. Software engineering for computational science and engineering: - Efficient program design and implementation: linking high level (Python) code with C code, - Cython, ctypes, - Tests and Test Driven Development, - Makefiles. - Version control (git). - Linux terminal and shell scripting. - Remote working with SSH. Computational Methods: - Applied Computational Methods – examples. - Symbolic methods and auto generation of code.

Learning and Teaching

Teaching and learning methods

Teaching methods include - Lectures and computer programme lab sessions. Learning activities include - Individual programming practice to enhance breadth of understanding. - Problem solving in supervised lab sessions and through assignments. - Informal help session.

Wider reading or practice20
Preparation for scheduled sessions12
Practical classes and workshops20
Completion of assessment task14
Follow-up work48
Total study time150

Resources & Reading list

Course Notes. 

S Oliveira & D. Stewart. Writing Scientific Software – A Guide to Good Style. 

Hans Fangohr: “Python for Computational Science and Engineering“.

AB Downey, J Elkner, C Meyers. How to Think Like a Computer Scientist. 

Brian W. Kernighan (Author), Dennis Ritchie (Author). The C Programming Language (2nd Edition)(Paperback). 


Assessment Strategy

Feedback: Feedback throughout lab sessions.


MethodPercentage contribution
Examination 100%


MethodPercentage contribution
Examination 100%


MethodPercentage contribution
Examination 100%

Repeat Information

Repeat type: Internal & External

Share this module Share this on Facebook Share this on Twitter Share this on Weibo

We use cookies to ensure that we give you the best experience on our website. If you continue without changing your settings, we will assume that you are happy to receive cookies on the University of Southampton website.