With the advent of ever more sophisticated and powerful computer environments, the techniques needed to develop and produce the software to run on these systems are themselves becoming increasingly complex. This course is unique in that it combines software engineering with high performance computing, giving you the tools and techniques that employers are looking for and an advantage in the job market.

This specialist option of the MSc Computational and Software Techniques in Engineering offers a unique insight into the development of computer applications across a wide spectrum of modern computing environments, from multi-core CPUs to specialist GPUs to cloud computing, all of which are relevant to the IT industry today.

Overview

  • Start dateSeptember
  • DurationOne year full-time, two-three years part-time
  • DeliveryTaught modules 40%, group project 20%, individual research project 40%
  • QualificationMSc
  • Study typeFull-time / Part-time
  • CampusCranfield campus

Who is it for?

If you intend to pursue a career in software development, whether it is in the data centre, on the desktop or in the rapidly expanding mobile application space, you need to have a strong basis in software engineering. This course is unique in that it combines software engineering with high performance computing, giving you the tools and techniques that employers are looking for and an advantage in the job market.

Why this course?

ÂãÁÄÖ±²¥ has many years of specialist knowledge and experience in high performance computing. We are able to offer a unique insight into the development of computer applications across a wide spectrum of modern computing environments, from multi-core CPUs to specialist GPUs to cloud computing, all of which are relevant to the IT industry today.

We introduce students to parallel software development on the desktop, the super-computer and in the cloud. Each platform has its own challenges and this course ensure that students become familiar with the best approach to writing software for each one.

ÂãÁÄÖ±²¥ is very well located for visiting part-time students from all over the world, and offers a range of library and support facilities to support your studies. This enables students to complete their qualification whilst balancing work/life commitments. Part-time students have a flexible commencement date.

This MSc programme benefits from a wide range of cultural backgrounds which significantly enhances the learning experience for both staff and students.

Informed by industry

The course is directed by an Industrial Advisory Panel that meets twice a year. The committee acts in an advisory role, assessing the content of the course and its relevance to present industrial needs. A number of members also attend the annual student thesis presentations which take place at the end of July, a month or so before the end of the course.

The Industry Advisory Panel includes:

  • Black & Veatch Ltd,
  • Stone Rock Advisors,
  • Rolls-Royce,
  • Airbus,
  • Factset,
  • Cambridge Consultants,
  • Industrial Vision,
  • STFC,
  • Excelian,
  • SOLV3 Engineering Ltd,
  • Red Bull Technology,
  • L3 Harris,
  • Autonomous Devices,
  • Immense,
  • The Manufacturing Technology Centre.

Course details

You will complete a number of compulsory modules that are common across options, followed by specialist modules from your selected MSc option. In addition to the taught component, you will complete a group project and an individual research project. The course is delivered via a combination of structured lectures, tutorial sessions and computer-based workshops. The core modules provide the basis of this course and act as a starting point for specialist modules to then be introduced, providing you with both theoretical and hands-on experience of software engineering and software development in high performance and computing environments.

Course delivery

Taught modules 40%, group project 20%, individual research project 40%

Group project

The process of software production is rarely an activity undertaken by an individual developer. In today’s software industry, many different specialists are required to contribute to the creation of software. To ensure a high level of quality in the final product, different roles and responsibilities must be brought together into a single team and therefore clear lines of communication between team members are crucial if the project is to be a success.

An important part of this MSc course is the group project, in which we define a realistic problem and ask each group to propose and implement a solution. It is generally a six-week project taking place between February and March. Members of each group must decide how to organise themselves, assigning roles to each person.

The group project is an opportunity for you to experience first-hand how a software development team is organised and how the different roles contribute to the final product. This is a chance for you to develop an insight into the organisation of development teams in industry, and allows you to understand what is expected from you once you enter employment.

Part-time students are encouraged to participate in a group project as it provides a wealth of learning opportunities. However, an option of an individual dissertation is available if agreed with the Course Director.

Previous group projects have included:

  • Scientific workflows,
  • Security considerations for distributed computing applications,
  • Automated recovery mechanisms for design optimisation.

Individual project

The individual research project allows you to delve deeper into an area of specific interest. All projects are based on real research, whether it is an area of interest for members of the department, or as part of an active research project funded by industry. In some cases our industrial partners sponsor specific research projects related to real-world problems or areas of development that are of direct interest to them. In recent years, students have proposed their own ideas for their research project. You will generally begin to consider the research project after completing three-four modules - it then runs concurrently with the rest of your work.

For part-time students it is common that their research thesis is undertaken in collaboration with their place of work.

Previous individual research projects have included:

  • Using Twitter to predict financial market sentiment,
  • Visualisation of source code and defects,
  • Android-based monitoring of hybrid car engines,
  • Development of mutation analysis tool for PHP software,
  • Time-dependent augmented reality visualisation on a mobile device,
  • Analysis of concurrency in CUDA-based applications,
  • Development of domain-specific language for CUDA development,
  • Automated data flow checking tool development.

Modules

Keeping our courses up-to-date and current requires constant innovation and change. The modules we offer reflect the needs of business and industry and the research interests of our staff and, as a result, may change or be withdrawn due to research developments, legislation changes or for a variety of other reasons. Changes may also be designed to improve the student learning experience or to respond to feedback from students, external examiners, accreditation bodies and industrial advisory panels.

To give you a taster, we have listed the compulsory and elective (where applicable) modules which are currently affiliated with this course. All modules are indicative only, and may be subject to change for your year of entry.


Course modules

Compulsory modules
All the modules in the following list need to be taken as part of this course.

Computational Methods

Module Leader
  • Dr Irene Moulitsas
Aim
    The module aims to provide an understanding of a variety of computational methods for integration, solution of differential equations and solution of linear systems of equations.
Syllabus

    The module explores numerical integration methods; the numerical solution of differential equations using finite difference approximations including formulation, accuracy and stability; matrices and types of linear systems, direct elimination methods, conditioning and stability of solutions, iterative methods for the solution of linear systems. Several of the studied numerical methods are implemented from scratch during the lab sessions, and the theoretical properties are then empirically studied and understood.

Intended learning outcomes

On successful completion of this module you should be able to:

  • Formulate and assess numerical integration methods,
  • Use appropriate techniques to formulate numerical solutions to differential equations,
  • Evaluate properties of numerical methods, and choose the appropriate method to implement towards the solution of a given differential equation,
  • Evaluate properties of systems of linear equations, and choose the appropriate method to implement towards the solution of a given system of linear equations,
  • Assess the behaviour of the numerical methods and the computed numerical solutions.

C++ Programming

Module Leader
  • Dr Irene Moulitsas
Aim
    Object oriented programming (OOP) is the standard programming methodology used in nearly all fields of major software construction today, including engineering and science and C++ is one of the most heavily employed languages. This module aims to answer the question ‘what is OOP’ and to provide the student with the understanding and skills necessary to write well designed and robust OO programs in C++. Students will learn how to write C++ code that solves problems in the field of computational engineering, particularly focusing on techniques for constructing and solving linear systems and differential equations. Hands-on programming sessions and assignment series of exercises form an essential part of the course. The library support provided for writing C++ programs using a functional programming approach will also be covered.   

    An introduction to the Python language is also provided.
Syllabus
    • The OOP methodology and method, Classes, abstraction and encapsulation,
    • Destructors and memory management, Function and operator overloading, Inheritance and aggregation, Polymorphism and virtual functions, Stream input and output,
    • Templates, Exception handling, The C++ Standard Library and STL.

    Functional programming in C++.

Intended learning outcomes

On successful completion of this module you should be able to:

  • Apply the principles of the object oriented programming methodology - abstraction, encapsulation, inheritance and aggregation - when writing C++ programs,
  • Design and create robust C++ programs of simple to moderate complexity given a suitable specification,
  • Construct C++ programs to solve a range of numerical problems in computational engineering using both OO and functional based approaches, based on the Standard Template Library and other third-party class libraries,
  • Design development environments and associated software engineering tools to assist in the construction of robust C++ programs,
  • Evaluate existing C++ programs and assess their adherence to good OOP principles and practice.

Requirements Analysis and System Design

Aim

    This course aims to provide a more in-depth look at the software life-cycle phases, requirements engineering and design of applications.


Syllabus
    • Software Development Life Cycles
    • Requirements Analysis (user requirements, systems requirement specification, functional & non-functional requirement, software requirements specification, modelling and prototyping, structured analysis, formal specification)
    • System modelling: UML diagrams, behavioural models, structural models, introduction to model checking and formal specifications
    • Design & Implementation: design fundamentals, design architecture, architectural styles, design patterns, data design, objected oriented design, distributed systems design, component based design, data flow oriented design, data oriented design, real time design
Intended learning outcomes On successful completion of this module you should be able to:
1. Distinguish between the different software development lifecycle models and evaluate which would be the most relevant in a particular situation;
2. Demonstrate conceptual knowledge of requirements planning with respect to the software engineering process;
3. Prepare the relevant requirement documents for each stage of the software project, having performed the required analysis;
4. Propose and implement requirements models for a specified problem;
5. Differentiate the range of software development design techniques in common use and construct the most suitable software designs according to specific functional and non-functional requirements.

Software Testing and Quality Assurance

Aim

    This course aims to address issues concerned with related to the quality of software, validation and verification, and software standards.



Syllabus
    • Verification & Validation (verification and validation planning, software testing techniques & strategies, preparing test cases and test environments, unit testing and mocks/fakes/stubs, integration testing, validation testing, system testing, regression testing, customer acceptance testing, advanced debugging, automated static analysis, test documentation, Test Driven Development)
    • Test Management.
    • Software Quality (Introduction to Software Quality, Quality Management (Assurance, Planning and Control), Product quality and process quality, Quality Metrics and Standards, Process Improvement, Reliability).
    • Evolution & Software Maintenance (version & change control, maintainability & maintenance, re-engineering, refactoring, reverse engineering).
    • Software Engineering Standards (ISO, IEEE).
Intended learning outcomes

On successful completion of this module you should be able to:

Design and implement software testing strategies, including documentation of testing requirements and outcomes at each stage of the software design and implementation process; 

Appraise the importance of software testing within the context of the software development lifecycle; 

Evaluate the relationship between software testing and software quality; 

Assess the chief factors influencing the evolution of software, including the need for version control, documentation and planned maintenance tasks;  

Identify the key standards relevant to software quality and assess their impact on each phase of the development lifecycle.

High Performance Technical Computing

Aim
    The aim of this module is to teach you the modern computational skills on a key HPC cluster platform. Many interesting scientific problems require analysis or solution of large data sets. For such problems, harnessing distributed computing and storage resources is clearly of great value. Furthermore, the natural parallelism inherent in many analysis procedures makes it feasible to use distributed resources efficiently. 
Syllabus

    • The focus of this module is on parallel algorithms and domain decomposition techniques which are suitable for simulation on High Performance Distributed Computing systems. Emphasis is on algorithms for execution on loosely coupled distributed systems, like grid-systems.
    • Data-intensive computing algorithms like distributed data mining and data warehousing.
    • Parallel numerical algorithms to solve model applications will be discussed and studied through implementation in the hands-on part of the course.
    • Load-balancing methods and domain decomposition techniques will be introduced.


Intended learning outcomes

On successful completion of this module you should be able to:

Appraise the need to carry out scientific computing on the HPC platforms and demonstrate relevant critical awareness. 

Formulate elements of parallel program design. 

Relate with the challenges and limitations of the parallelisation process including scalability (Amdahl and Gustafson laws) and load-balancing.  

Create a program to solve a practical problem in scientific computing on the HPC platforms by applying knowledge of intensive computational parallel/distributed techniques. 

Assess the performance and efficiency of a parallel program and propose appropriate code improvements and employ techniques to validate and verify the results of parallel programs.

Small-Scale Parallel Programming

Aim

    The advent of multi-core processors in the commodity desktop computer market has shifted the emphasis from traditional single threaded computing models to more advanced methods in order to take advantage of the additional processing power that is now available. This has implications for both the traditional high performance computing sector and the workstation market. This course aims to explore the different parallel processing techniques now available on small scale computer systems, such as multi-core desktop computers and GPU devices.


Syllabus
    Introduction to Parallel and Multi-Threaded Programming, Safety and Liveness: Synchronisation Techniques, OpenMP – concepts, structures and usage.Using CUDA to solve general purpose problems on the GPU, Software Tools (debugging and optimisation).
Intended learning outcomes On successful completion of this module a student should be able to:
1. Apply a systematic application of the techniques employed in multi-threaded processing, and identification of the most common difficulties associated with parallel programming,
2. Demonstrate an understanding of race conditions and blocking, and application of synchronisation techniques as a method of tackling these difficulties.
3. Demonstrate an ability to implement solutions using CPU and GPU technologies.
4. Use and critically evaluate automated tools for the design of source code and debugging of multi-threaded programs.

Visualisation

Aim

    Computer graphics is a key element in the effective presentation and manipulation of data in engineering software.  The aim of this module is to provide an in depth practical understanding of the mathematical and software principles behind 2D and 3D visualisation using the widely used OpenGL (desktop) and WebGL (web based) graphic libraries. Representative GUI based 2D and 3D OpenGL/WebGL applications using both Javascript/HTML5 and the Qt development environment are employed. The module will also cover some of the more advanced rendering techniques including lighting, texturing and other image mapping methods used to enhance visual interpretation of data. An introduction to the implementation and use of Virtual Reality in engineering completes the module. Hands-on exercises and an assignment supplement the learning process.

Syllabus
    • Mathematical principles behind 2D and 3D visualisation, The graphic and coordinate pipelines, Matrix transformations, Modelling, viewing and projection, OpenGL and WebGL libraries, GLSL shader programming.for the graphic pipeline and GPU
    • Development of interactive CG applications using OpenGL, WebGL, GLSL and Qt
    • Advanced rendering techniques, lighting, texturing and image mapping
    • Introduction to virtual reality.
Intended learning outcomes

On successful completion of this module you should be able to:

  • Apply the principles underlying the graphic and coordinate pipelines to display and manipulate 2D and 3D models.
  • Use the mathematical basis behind 2D/3D modelling and viewing to solve visualisation problems in OpenGL and WebGL.
  • Understand, implement and use GLSL shader programs for implementing the graphic pipeline.
  • Create interactive visualisation applications using OpenGL/ WebGL, GLSL and Qt.
  • Evaluate the use of VR and other advanced technologies for engineering visualisation.

Applications in Practical High-End Computing

Module Leader
  • Dr Antonios Antoniadis
Aim

    This module aims to provide you with skills in the areas of: the software quality and project management; technical/engineering applications, and cluster or cloud computing so that you can undertake a group project.

Syllabus
    • Project Management (risk analysis, estimation models, project planning and scope definition, communication and team working).

    • Software Metrics & Quality Assurance (definition, collection, quality metrics, productivity metrics, the review process, software reliability, using software quality metrics).

    • Algorithmic stability and performance.

    • Specification and performance of computing environments (clusters/cloud, etc).

    • Validation and tuning of applications on medium-scale distributed architectures.

Intended learning outcomes

On successful completion of this module you should be able to:

1. Demonstrate a systematic understanding of the key management tasks involved in implementing a software project in terms of technical requirements, planning and estimation.
2. Identify and implement the key techniques used in maintaining a software project, such as identification of critical project metrics, comprehensive quality management and risk assessment.
3. Show proficiency in the use of a number of automated tools used to assist the software engineering process, such as project design, documentation and code analysis.
4. Work as part of a team using coordination, negotiation and interfacing skills.


Cloud Computing

Aim
    The aim of this module is to provide you with the necessary knowledge and understanding of virtualisation technologies, cloud anatomies and cloud applications to the provision of on-demand computational resources, as well as a wider understanding of how those resources are consumed through Cloud Computing services. 
Syllabus
    Cloud Computing Introduction 

    Virtualisation 

    Cloud Anatomy 

    Cloud Security and Economics 

    Applied Clouds (AWS, Google Cloud and MS Azure) 

    Distributed Systems 

    Data Stream Processing 

    Applications of Cloud Computing 
Intended learning outcomes

On successful completion of this module you should be able to:

1. Demonstrate understanding and knowledge of key virtualisation technologies, cloud anatomies and their applications to Cloud Computing infrastructure;
2. Identify the characteristics of the Cloud Computing platform and understand the fundamentals of distributed systems and how these Cloud characteristics differ from existing distributed computing environments;
3. Critically assess the characteristics of Cloud Computing technologies, and understand the fundamentals of some key computer science applications (e.g., Machine Learning, Big Data) and how these Cloud characteristics affect the implementation of Cloud based applications;
4. Identify the non-technical challenges that affect the implementation and use of Cloud enabled software;
5. Compare and contrast the suitability of different Cloud Computing approaches to different types of computational problem;
6. Develop and implement Cloud enabled software to solve a specified computational problem.

Teaching team

ÂãÁÄÖ±²¥ is a leader in applies mathematics and computing applications. You will be taught by Cranfield's leading academic staff. Our teaching team works closely with business and has academic and industrial experience. Knowledge gained working with our clients is continually fed back into the teaching programme, to ensure that you benefit from the very latest knowledge and techniques affecting industry. The course also includes visiting lecturers from industry who will relate the theory to current best practice. In recent years, our students have received lectures from industry speakers including: Richard Stewart, FACTSET, Dan Nelson, OCADO and Adam Vile, Excelian. The Course Director for this programme is Dr Stuart Barnes.

Your career

The Software Engineering for Technical Computing Master's attracts enquiries from companies all over the world who wish to recruit high-quality software development graduates. There is considerable demand for students with expertise in engineering software development and for those who have strong technical programming skills in industry-standard languages and tools.

Graduates of this course are in demand by financial software developers, mobile application developers, commercial engineering software developers, automotive, telecommunications, medical and other industries and research organisations, have been particularly successful in finding long-term employment. We have had positive feedback from companies in industries as diverse as finance to computer games studios. As such, we enjoy excellent employment statistics, with over 95% of graduates employed within six months.

Some students may go on to register for PhD degrees, many on the basis of their MSc research project. Thesis topics are most often supplied by individual companies on in-company problems with a view to employment after graduation - an approach that is being actively encouraged by a growing number of industries.

Below is a list consisting of companies that have previously recruited our graduates:

  • FACTSET,
  • Ocado,
  • SAP,
  • HSBC,
  • IBM,
  • BluAge,
  • FDM,
  • UBS,
  • Mindsnacks,
  • Mandara Capital,
  • Commerzbank AG,
  • Oracle.

Cranfield’s Career Service is dedicated to helping you meet your career aspirations. You will have access to career coaching and advice, CV development, interview practice, access to hundreds of available jobs via our Symplicity platform and opportunities to meet recruiting employers at our careers fairs. Our strong reputation and links with potential employers provide you with outstanding opportunities to secure interesting jobs and develop successful careers. Support continues after graduation and as a Cranfield alumnus, you have free life-long access to a range of career resources to help you continue your education and enhance your career.

The reason why I wanted to come to Cranfield is because it's one of the best ranked schools. I really like coding and using computational tools to solve engineering problems. I think the course is really relevant and useful for today's digital era.
I applied for this course as I wanted to be more refined in the computer software field. Beyond the course, I can apply what I have learned in the modules, so that I can achieve a sense of accomplishment in my study. In addition, there are many choices in the topic of the thesis which combines interest and professionalism.
While studying civil engineering, I believed that digitalisation is the future of the construction industry and decided to pursue a MSc related to computer and machine vision. This Cranfield course offered me a valuable opportunity to learn the latest artificial intelligence techniques. This well-arranged modules, high-quality course content and industry-oriented research projects helped me develop fast. The timescale was intense but extremely exciting and very fulfilling. The fact that Cranfield is highly ranked guarantees the best education and research.
I found out about Cranfield's Software Engineering for Technical Computing course through the ESTIA partnership and thought it would suit me well for my international certification. A highlight from my time at ÂãÁÄÖ±²¥ has to be the quality of the teaching provided by the various lecturers and academics we had. When I finish my MSc I plan on working in the data sector as either a developer to begin my career or a project leader.

How to apply

Click on the ‘Apply now’ button below to start your online application.

See our Application guide for information on our application process and entry requirements.