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

Learning Outcomes

Knowledge and Understanding

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

  • Remote and local use of Linux computers.
  • Combining C-code with Python.
  • Shell commands.
  • The C-programming language.
  • Version control and one version control tool.
  • Complied versus interpreted language.
  • 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.

Subject Specific Practical Skills

Having successfully completed this module you will be able to:

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

Learning Outcomes

Having successfully completed this module you will be able to:

  • C1/M1 As part of the individual assignment, the student must use a computer to perform computational modelling studies and demonstrate comprehensive understanding of software engineering techniques for science and engineering. C2/M2 As part of the individual assignment students must use data files and decompose a computational problem into small parts-analyse the computational bottleneck using first principles of numerical methods and programming language. C3/M3 As part of the individual assignment, the student must demonstrate understanding of C-programming language, combining C-code and Python, use numerical and analytical techniques to address complex engineering problems. C4/M4 As part of the individual assignment, write compile and run C-programmes to find solutions for advanced software engineering problems using relevant technical literature. C5/M5 As part of the individual assignment students must discuss modern computational software techniques and apply C-programme language with code of practice to solve complex engineering problems. C6/M6 As part of the individual assignment students must use strategies to effectively address computational bottlenecks with C-programming codes, decompose a computational problem into small parts. - analyse the computational bottleneck for complex problems. C12/M12 As part of the laboratory assignment students must write, compile and run C-programmes for computational modelling problems. C15/M15 As part of the individual assignment students must apply knowledge of software engineering tools and computer programme languages to solve advanced engineering problems with commercial context. C16/M16 As part of the individual assignment the student must demonstrate knowledge and understanding of software engineering techniques for science and engineering.

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.

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.
Study time
Type Hours
Practical classes and workshops 20
Revision 12
Wider reading or practice 20
Follow-up work 48
Completion of assessment task 14
Lecture 24
Preparation for scheduled sessions 12
Total study time 150

Resources & Reading list

General Resources

Course Notes.

Internet Resources

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

Assessment

Assessment strategy

Feedback: Feedback throughout lab sessions.

Summative

This is how we’ll formally assess what you have learned in this module.

Breakdown
Method Percentage contribution
Final Assessment 100%

Referral

This is how we’ll assess you if you don’t meet the criteria to pass this module.

Breakdown
Method Percentage contribution
Set Task 100%

Repeat

An internal repeat is where you take all of your modules again, including any you passed. An external repeat is where you only re-take the modules you failed.

Breakdown
Method Percentage contribution
Set Task 100%

Repeat Information

Repeat type: Internal & External


发表评论

电子邮件地址不会被公开。 必填项已用*标注