📖Program Curriculum

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. 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
Module Leader
Dr Richard Adams
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:

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

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

Internet of Things
Aim
To provide introductory knowledge and coverage of IoT technologies and architectures and highlight their innovation potential, enabling you 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 you will 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

Show less
Show more

🏠 Accommodation

You will need to book the accommodation after you have been accepted.

You can choose to live on campus or off campus in private accommodation.

How to book:

  • Make a booking online after you have been accepted (in this case please let us know your choice when you apply).
  • Register when you arrive - its not possible to reserve a room before arriving. You can arrive a few days before and book it
Show less
Show more

💰 Fees

Application Fee:

$0 USD

Tuition fee:

26,580 GBP per year

26,580 GBP in total

Entry Requirements

You are not eligible to apply to this program because:

The minimum age is 18.

English fluency is required.
You need to be either:
- A native English speaker
- Studied in English at high school or a degree
- Have passed IELTS level 6.5 or TOEFL 95 or above.

Minimum education level: Bachelor's.

The program is competitive, you need to have a high grades of Average A, 70%, or a high GPA.

All students from all countries are eligible to apply to this program.

Is this not correct? You can edit your profile or contact us.
Or see the list of programs you are eligible for here .
Check Your Eligibility Show Suitable Programs

📬 Admissions Process

3 Steps to Apply to a University

Application step 1

Application step 2

Application step 3

Please choose the programs here , "You are advised to select 2-3 programs to increase your chances of getting accepted.

Required Documents:

  • Passport
  • Graduation certificate
  • Passport size photo
  • Official transcript
  • Personal statement
  • English certificate (You can take the English test online)
  • Guarantor letter
  • 2 Recommendation letters

Preparing documents:

You can start your application now and send the application documents during your application. Some documents you can send later if you don’t have them right away. Some more info about preparing application documents is here

Show more

Application process:

Applying Online is simple in just a few steps. More information is available here.

The first steps are to choose the programs, pay the application fee and upload the application documents.

Once submitted to Global Admissions, we will review your application within 2-3 days and proceed to the university or ask you for further clarification

After it has been processed to the university you will receive your unique application ID from each university.

The university may contact you directly for further questions.

We will then follow up each week with the university for updates. As soon as there is any update we will let you know. If you have made other plans, decide to withdraw / change address at any time please let us know.

After you have been accepted you will receive your admissions letter electronically and asked to pay the non-refundable deposit to the university.

Once you have paid the deposit the university will issue you the admissions letter and visa form to your home country.

Show less
Here is some more information about the enrollment process after you have been accepted.

❓ Have a Question?

There are no similar questions. Please send us your question below

    📝 Cranfield University, England Reviews

    (No Reviews)
    Write a review

    📍 Location

    🛏️ Accommodation

    🍜 Food

    🏓 Facilities

    💲 Value for money

    👨‍🏫 Classes

    🕺 Student experience

    🗣️ Recommend a friend?