In a world of exponentially increasing data volumes, computationally intelligent data handling algorithms are crucial in a wide range of fields that require fast, accurate and automated decision-making. Data is being generated by IoT devices, social media platforms and commercial transactions at an increasing rate and there is a real need to process and understand this data in shorter and shorter time-scales.

The ability to automate the analysis of these large data sets in batch or real-time environments brings huge benefits and competitive advantages to a range of commercial sectors, such as financial, manufacturing, retail, aerospace, automotive and defence. You will develop a solid base of skills in computer science and artificial intelligence, necessary to develop and validate effective algorithms. These abilities will help you to deal with a range of complex problems where intelligent decision-making or future predictions are based on an understanding of Big Data environments, and applying effective solutions.

This specialist option of the MSc Computational and Software Techniques in Engineering will focus you on the enabling technologies of Big Data processing, namely high performance and cloud computing, as well as algorithm development related to machine learning and data analytics. In addition, this MSc course will introduce you to industry standard software technologies, such as Hadoop and Spark, focussing on hands-on, practical solutions to a range of common problems.

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?

ÀÏ˾»ú¸£ÀûÉç 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.

ÀÏ˾»ú¸£ÀûÉç 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

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:

  1. 1. Apply the principles of the object oriented programming methodology - abstraction, encapsulation, inheritance and aggregation - when writing C++ programs.
  2. 2. Design and create robust C++ programs of simple to moderate complexity given a suitable specification.
  3. 3. 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.
  4. 4. Design development environments and associated software engineering tools to assist in the construction of robust C++ programs.
  5. 5. 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. Demand for ever more complex products and services has become the norm. The challenge for today’s manager is to deal with uncertainty, to allow technological innovation and change to flourish but also to remain within planned parameters of performance. Many organisations engaged with technological innovation struggle to find engineers with the right skills. Specifically, engineers have extensive subject/discipline knowledge but do not understand management processes in organisational context. In addition, STEM graduates often lack interpersonal skills.
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:

  • 1. Recognise the importance of teamwork in the performance and success of organisations with particular reference to commercialising technological innovation,
  • 2. 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,
  • 3. 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,
  • 4. Design and deliver an effective presentation that justifies and supports any decisions or recommendations made,
  • 5. Argue and defend your judgements through constructive communication and negotiating skills.

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.

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.

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.

Advanced Java and Advanced Python

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 you 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 you 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

Aim
    The aim of this module is to introduce you 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 you should be able to:

  1. Describe and analyse the architecture of DataStream Processing systems based on Hadoop/Spark
  2. Evaluate and assess the applicability of the 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.

Artificial Intelligence

Aim

    To provide an introduction to core Artificial Intelligence concepts, architectures, methods, and tools, and highlight their innovation potential, enabling you 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 you should be able to:

Appraise the main concepts and paradigms of Artificial Intelligence and examine AI-enabled innovation opportunities in different sectors  

Evaluate use cases of theoretical concepts through Artificial Intelligence thinking 

Evaluate key Artificial Intelligence architectures and relate them to use cases. 

Analyse the cognitive, practical and key transferable skills necessary and design solutions for selected Artificial Intelligence topics (intelligent agents, search, logic programming, inference & reasoning, planning and decision making, reinforcement learning, machine learning, and deep learning).  

Assess key challenges in the delivery and take-up of AI-enabled solutions, highlighting the importance of: scalability, security, privacy and ethics. 

Applications in Computational Intelligence

Aim

    This module aims to provide you with skills in the areas of: software development and project management; applications of machine learning and computational intelligence 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 Development.

    • Algorithmic stability and performance.

    • Specification and performance of computational implementations.

    • 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. Critically evaluate the project management requirements and compose an effective project plan to outline team roles, project timeline, milestones and communication methods, for the implementation of a software project.

2. Design clear project aims and objectives based on the given problem and select machine learning and computational intelligence methodologies appropriate to the task.

3. Formulate appropriate advanced programming paradigms in the development of the relevant machine learning and computational intelligence algorithms and examine the use of automated tools to assist the software development process.

4. Critically appraise individual skills and expertise to contribute to team output and collaborate effectively with others in a consultancy team context. Reflect upon and evaluate personal and group performance in a team-based task.

5. Communicate research findings in a professional manner in written, oral and visual forms.

Data Visualisation

Aim
    This module allows you to understand the data visualisation principles and techniques to effectively visualise algorithms, data sets, and complex systems. It aims to build on the concepts and issues of working with data and presenting data using appropriate approaches and visualisations, combined with the implementation of data analytics techniques in the framework.
Syllabus

    • Introduction to visualisation.

    • Principles and techniques for creating effective visualisations.

    • Limits of visualisation and uncertainty.

    • Visualising data sets, e.g. text based and numeric data sets.

    • Visualising algorithms, processes and systems, e.g. sampling algorithms, sorting algorithms, Machine Learning and Deep Learning algorithms, and cellular automata.

    • Interactive visualisation.

    • Python as a tool for visualising information.

Intended learning outcomes

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

1. Critically analyse the core skills required to evaluate algorithms, data sets, complex systems and processes, incorporating both traditional and emerging techniques such as interactive visualisations, real-time data rendering and visualisations.

2. Appraise the use of complex procedures, data patterns, and emergent systems through a systematic approach, employing techniques such as network analysis, temporal data visualisation, geospatial data visualisation, and hierarchical visualisations to uncover hidden insights in the data.

3. Assess visualisation needs and be able to select and apply an appropriate range of visualisation and reporting techniques to data sets relevant to the specific domain.

4. Apply data analytics techniques for visualisation implementation and interpret the visualisation results.

5. Evaluate visualisations in terms of different users and tasks with human factors and critically appraise visualisation approaches.

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

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’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 chose Cranfield as it is a prestigious university, and I picked this course as I wanted to study data science. A highlight from my time at ÀÏ˾»ú¸£ÀûÉç was the taught modules as I found these really interesting. My individual thesis project was an internship at Teads and focused on distributed training applied to deep learning. I would really recommend doing a postgraduate course, it helped me find my future career path and get an interesting job.

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.