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
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Develop makefiles and test programs.
- Decompose a computational problem into small parts. - analyse the computational bottleneck.
- Use strategies to effectively address computational bottlenecks with Python and C code.
Transferable and Generic Skills
Having successfully completed this module you will be able to:
- Apply software engineering techniques for science and engineering.
- Use a computer to perform computational modelling studies.
Subject Specific Practical Skills
Having successfully completed this module you will be able to:
- Connect to the Linux server.
- Check error messages generated by the compiler.
- Learn the steps in the C-program development cycle.
- Write, compile and run C-programs.
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- The C-programming language.
- Remote and local use of Linux computers.
- Shell commands.
- Symbolic methods and code generation.
- Combining C-code with Python.
- Version control and one version control tool.
- Complied versus interpreted language.
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.
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.
Type | Hours |
---|---|
Wider reading or practice | 20 |
Completion of assessment task | 14 |
Revision | 12 |
Follow-up work | 48 |
Practical classes and workshops | 20 |
Preparation for scheduled sessions | 12 |
Lecture | 24 |
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.
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.
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.
Method | Percentage contribution |
---|---|
Set Task | 100% |
Repeat Information
Repeat type: Internal & External