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