The University of Southampton
Courses

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.

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.
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.
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.

Syllabus

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.

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

Resources & Reading list

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

Course Notes. 

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

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

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

Assessment

Assessment Strategy

Feedback: Feedback throughout lab sessions.

Summative

MethodPercentage contribution
Exam 100%

Referral

MethodPercentage contribution
Exam 100%

Repeat Information

Repeat type: Internal & External

Linked modules

Pre-requisite: Programming, ideally in Python.

Share this module Facebook Google+ Twitter 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.

×