Computationally intelligent data handling algorithms are crucial in a wide range of sectors that require fast and automated decision-making. These industries typically include financial, manufacturing, aerospace, automotive and defence.

This specialist option of the MSc Computational and Software Techniques in Engineering will enable you to develop a solid base of computer science skills and focused expertise, necessary to develop fast algorithms capable of dealing with a range of complex problems where intelligent decision-making or future predictions are based on understanding of data collections.

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 make 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 gives you the tools and techniques that employers are looking for and an advantage in the job market.

Why this course?

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

You will focus on the enabling technologies aspects of high performance and cloud computing and algorithm development related to machine learning and data analytics.

Cranfield University 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 from all over the world to complete this 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 a focus on the enabling technologies, namely high performance and cloud computing and algorithm development related to machine learning and data analytics.

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 12 week project taking place between February, March and April. 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.


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.

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.

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.
    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.
Intended learning outcomes

On successful completion of this module a student should be able to:

1. Apply the principles of the object oriented programming methodology - abstraction, encapsulation, inheritance and aggregation - when writing C++ programs.
2. Create robust C++ programs of simple to moderate complexity given a suitable specification.
3. Use the Standard Template Library and other third party class libraries to assist in the development of C++ programs.
4. Solve a range of numerical problems in computational engineering using C++.
5. Use development environments and associated software engineering tools to assist in the construction of robust C++ programs.
6. Evaluate existing C++ programs and assess their adherence to good OOP principles and practice.


Management for Technology

Aim

    The importance of technology leadership in driving the technical aspects of an organisation's products, innovation, programmes, operations and strategy is paramount, especially in today’s turbulent commercial environment with its unprecedented pace of technological development. As demand for ever more complex products and services has become the norm, one of the challenges for today’s manager is to deal with uncertainty, to allow technological innovation and change to flourish, whilst also remaining within planned parameters of performance. This module helps to develop your understanding of management processes within an organisational context, so that when you seek employment you are equipped with both the extensive subject/discipline knowledge and the ability to relate it to a management context.


Syllabus
    • Engineers and Technologists in organisations:
      • the role of organisations and the challenges facing engineers and technologies,
    • People management:
      • understanding you, understanding other people, working in teams and dealing with conflicts.
    • The Business Environment:
      • understanding the business environment; identifying key trends and their implications for the organisation.
    • Strategy and Marketing:
      • developing effective strategies, focusing on the customer, building competitive advantage, the role of strategic assets.
    • Finance:
      • profit and loss accounts, balance sheets, cash flow forecasting, project appraisal.
    • New product development:
      • commercialising technology, market drivers, time to market, focusing technology, concerns.
    • Business game:
      • Working in teams (companies), you will set up and run a technology company and make decisions on investment, R&D funding, operations, marketing and sales strategy,
    • Negotiation:
      • preparation for negotiations, negotiation process, win-win solutions.
    • Presentation skills:
      • understanding your audience, focusing your message, successful presentations, getting your message across.

Intended learning outcomes

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

  • Recognise the importance of teamwork in the performance and success of organisations with particular reference to commercialising technological innovation,
  • Operate as an effective team member, recognising the contribution of individuals within the team, and capable of developing team working skills in yourself and others to improve the overall performance of a team,
  • Compare and evaluate the impact of the key functional areas (strategy, marketing and finance) on the commercial performance of an organisation, relevant to the manufacture of a product or provision of a technical service,
  • Design and deliver an effective presentation that justifies and supports any decisions or recommendations made,
  • Argue and defend your judgements through constructive communication and negotiating skills.

Small-Scale Parallel Programming

Module Leader
  • Dr Salvatore Filippone
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.

Cloud Computing

Module Leader
  • Dr Salvatore Filippone
Aim

    The aim of this module is to provide students with the necessary knowledge and understanding of virtualisation technologies and their application 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
    • Virtualisation
    • Related Internet technologies (tbc)
    • Introduction to Cloud Computing
    • Topics in Cloud Computing
    • Cloud Environments and Technologies
    • Introduction to data stream processing
    • Applications of Cloud Computing
Intended learning outcomes On successful completion of this module a student should be able to:
1. Demonstrate understanding and knowledge of key virtualisation technologies, and their application to Cloud Computing infrastructure;
2. Identify the characteristics of the Cloud Computing platform and understand how these differ from existing distributed computing environments;
3. Critically assess the characteristics of Cloud Computing technologies, and understand how they affect the implementation of Cloud based software;
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.


High Performance Technical Computing

Module Leader
  • Dr Irene Moulitsas
Aim
    The aim of this module is to teach the student the modern computational skills on a key grid platform. Many interesting scientific problems require analysis of large datasets. For such problems, harnessing distributed computing and storage resources is clearly of great value. Furthermore, the natural parallelism inherent in many data 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 a student should be able to:
1. Demonstrate knowledge and a critical awareness of the need to carry out scientific computing on the grid platforms.
2. Understand elements of parallel program design.
3. Understand the challenges and limitations of the parallelisation process including scalability (Amdahl and Gustafson laws) and load-balancing.
4. Apply knowledge of intensive computational parallel/distributed techniques to solve a practical problem in scientific computing on the grid platforms (including some awareness of debugging methods).
5. Employ techniques to validate, verify and evaluate the performance and efficiency of parallel programs.



Advanced Java and Advanced Python

Module Leader
  • Dr Irene Moulitsas
Aim
    The Java and Python programming languages have become key languages for developers of computational and scientific codes in both desktop and internet/cloud network based environments.
    This module aims to provide the student with the necessary skills and knowledge to develop software solutions to problems in these fields using these languages. The principle and advanced elements of Java and Python, associated libraries/tools, programming methodologies and good design principles are covered. Hands-on programming exercises culminating in the construction of a fully functional three-tier application form an essential part of the course.
Syllabus
    •    Java and Python program structure and flow, data types, basic and advanced language constructs.
    •    Functional and object oriented methodologies.
    •    Built-in and third party libraries for computational and scientific software development.
    •    Software design principles and practices.
    •    Development environments and documentation tools.
Intended learning outcomes On successful completion of this module a student should be able to:
1. Create robust Java and Python programs in both standalone mode and in combination for desktop and web/mobile, network centric environments.
2. Apply object oriented and functional programming methodologies when implementing solutions to problems.
3. Solve a range of numerical problems in scientific and computational engineering using Java and Python.
4. Formulate a solution to a given problem based on good software design principles and programming practices.
5. Employ class and functional based libraries and other tools to assist in the development of a solution to a problem.

Machine Learning and Big Data

Module Leader
  • Dr Salvatore Filippone
Aim
    The aim of this module is to introduce students to the MapReduce programming model for big data applications where machine learning algorithms are employed. Specific applications will be developed in the Hadoop/Spark frameworks, combined with the implementation of machine learning data analytics techniques in said frameworks.

Syllabus

    •    Introduction to data stream processing

    •    The MapReduce programming paradigm

    o    Implementations: Hadoop and Spark (Python interface)
    o    NoSQL data backends (e.g. MongoDB)
    o    Other programming interfaces: Scala.
    o    Performance optimization techniques.

    •    Machine Learning Theory & Methodology

    o    Decision Tree Classifiers
    o    Instance Based Learning
    o    Bayesian Classification
    o    Neural Networks
    o    Support Vector Machines
    •    Application case studies

Intended learning outcomes

On successful completion of this module a student should be able to:

  1. Describe and analyse the architecture of DataStream Processing systems based on Hadoop/Spark
  2. Evaluate and assess the applicability ofthe MapReduce programming paradigm to specific problems
  3. Design and implement algorithms for solving data streaming problems in Hadoop/Spark
  4. Evaluate the application of machine learning approaches to a wide set of data mining and classification type problems
  5. Implement and deploy machine-learning techniques in data stream analysis systems.

Internet of Things

Module Leader
  • Dr Christos Emmanouilidis
Aim
    To provide introductory knowledge and coverage of IoT technologies and architectures and highlight their innovation potential, enabling students to develop a practical knowledge of IoT solutions development process for product and service innovation.
Syllabus
    • IoT Concepts & Introduction to IoT
    • IoT-enabled innovation in products and services
    • Introduction to IoT project activity
    • Industry 4.0 technologies and Industrial Internet of things (IIoT)
    • IoT sensing
    • Introduction to IoT architectures and platforms
    • Creating and working with IoT data flows
    • IoT-enabled data value chains
    • IoT-driven data analytics (edge and cloud analytics)
    • From data to IoT-enabled products, applications and services
    • Cloud services, interfaces, dashboards
    • Overview of IoT standards
    • IoT Challenges (scalability, interoperability, security, privacy)
    • IoT-enabled business ecosystems and business models

Intended learning outcomes

On successful completion of this module a student should be able to:

1. Appraise the key concepts of Internet of Things, and inspect enabling Industry 4.0 technologies
2. Evaluate use cases of theoretical concepts
3. Assess recent and evolving developments, protocols and technologies for IoT enabled systems and Industrial Internet of things (IIoT)
4. Outline IoT-enabled innovation opportunities and apply the cognitive, practical and key transferable skills necessary for IoT enabled applications and services by proposing your own IoT enabled solution
5. Identify key challenges in the delivery and take-up of IoT-enabled solutions, highlighting the importance of security, privacy and ethics.

Artificial Intelligence

Aim

    To provide an introduction to core Artificial Intelligence concepts, architectures, methods, and tools, and highlight their innovation potential, enabling students to develop a practical knowledge of AI-enabled solutions development processes for product and service innovation.



Syllabus
    • AI Concepts
    • Paradigms
    • Introduction to AI project activity
    • Intelligent Agents
    • Intelligent Search
    • Knowledge Representation
    • Logic Programming
    • Inference and Reasoning
    • Planning
    • Learning
    • Decision Making and Recommender Systems
    • AI Challenges (scalability, security, privacy, ethics)
    • AI-driven Innovation in Products and Services


Intended learning outcomes

On successful completion of this module a student should be able to:

  1. Appraise the main concepts and paradigms of AI and examine AI-enabled innovation opportunities in different sectors
  2. Evaluate use cases of theoretical concepts through AI thinking
  3. Evaluate key AI architectures and relate them to use cases
  4. Analyse the cognitive, practical and key transferable skills necessary and design solutions for selected AI topics (intelligent agents, search, logic programming, inference and reasoning, machine learning, planning and decision making)
  5. Assess key challenges in the delivery and take-up of AI-enabled solutions, highlighting the importance of scalability, security, privacy and ethics

Teaching team

Cranfield University 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 Irene Moulitsas.

Your career

This course 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 gives good teachers, interesting lectures, updated group projects with the best technology available currently, and most importantly the perfect preparation and connection with industry that helps start your professional 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.

How to apply

Online application form. UK students are normally expected to attend an interview and financial support is best discussed at this time. Overseas and EU students may be interviewed by telephone.