Modules
You'll study five modules per year, as outlined below. Across the programme you will be assessed in a variety of methods including examination and coursework (including technical reports, computer-based practical assessments, demonstrations, and presentations). Overall, approximately 10% of your degree will be assessed by examination and approximately 90% by coursework.
Please note: While we make every effort to provide our prospective students and applicants with the most up to date and accurate module information for the coming academic years, you should be aware that the information provided is subject to change. If this happens, we will inform you in a timely manner.
Overview
This module aims to provide an overview of the core principles and underpinnings of computers and computing, from both a theoretical and an applied point of view.
The module begins by providing a brief overview of the historical timeline of computing and software, an introduction to the representation of data and the basic components, processes, and the inner workings of a computer system. You will be introduced to the principles of programming, starting with low level assembly, and moving up to object-oriented and high-level programming languages, including problem solving and algorithm analysis. Further topics will explore operating systems, file systems and directories, computer networks and communication methods, and the World Wide Web. The module concludes with a brief overview of the limitations of computing.
Syllabus
- Brief history of computers and software
- Computing components
- Binary values and computational number systems
- Data representation
- Logic, gates, and circuits
- Programming paradigms
- Low level programming
- RISC Vs. CISC
- Operating system concepts, shells, and command line interfaces
- Unix & Windows file systems and directories
- Computer networks and the World Wide Web
- Introduction to formal methods
- Legal, social, ethical and professional practices of computing
Assessment
- 50% - Computer-based assessment
- 50% - Examination
Overview
The module aims to introduce you to programming, and progressively develop your programming and problem-solving abilities with practical application in scenario-based exercises.
The module begins by introducing fundamental programming concepts for procedural and event driven programming. You will gain insight into how software is built from the ground up and be introduced to data storage and data structures, and aspects of file handling before being introduced to Object-Oriented Programming (OOP), and elements of advanced OOP. Throughout the module you will learn how to document your code to industry standards, as well structure and test your programs appropriately.
Syllabus
- IDEs and the wider programming environment for Python
- Programming fundamentals
- Operators and expressions
- Decision structures
- Loops, data, and data structures
- Functions, parameters, arguments, scope, and recursion
- File reading/writing
- Introduction to Object Oriented Programming fundamentals
- Constructors, attributes, methods, and encapsulation
- Classes, methods, inheritance
- Working with modules and third-party libraries
- Error handling and defensive programming
Assessment
- 50% - Computer-based assessment and written report
- 50% - Computer-based assessment and written report
Overview
The module aims to present the major components of a practical software lifecycle through team-based software engineering. This includes analysis, design, development, testing, maintenance, and aspects of documentation.
You'll be introduced to, and asked to carry out, market research, prototyping, software design and implementation, and testing. You will learn how to manage a project from inception to completion, inclusive of the software developmental elements, which includes market research, user requirement elicitation, user presentation, and feedback capture.
The module will also cover the important factors relating to software quality including functionality, reliability, usability, portability, and maintainability.
Syllabus
- Introduction to conventional software processes and software life-cycle models
- Software project management and team organisation
- Software documentation
- Requirements analysis, inc. HCI requirements
- Risk assessment and management
- Prototyping, Scrum, RAD, Extreme Programming, SAFe
- System design (UML) and implementation
- Testing, including test driven development, white box, black box
- Version Control Systems
- Legal, social, ethical, and professional issues
- Systems engineering & business factors
Assessment
- 100% - Group assessment
Overview
This module aims to introduce you to an in-depth exploration of advanced concepts in programming and software development, designed to enhance students’ proficiency in designing and implementing complex software solutions.
The module will begin by examining and contrasting the use of high-level versus low-level programming languages. You will gain an in-depth understanding of the need for low-level languages before moving onto aspects of memory management, control flow, decision making, data structures, algorithms, and multi-threading. This module will build upon foundational programming knowledge by delving into the intricacies of complex programming languages, emphasising best practices and optimisation techniques, by adhering to software engineering principles.
Syllabus
- Introduction to programming
- Pointers and Memory Management (Understanding memory and addresses)
- Control Flow and Decision Making
- Pointers, declaration, initialisation, dereferencing, pointer arithmetic
- Arrays and Strings
- Functions and Modular Programming
- Structures and File Handling (Sequential and random access)
- Data structures and algorithms (Time space complexity, searching & sorting algorithms, basic data structures – linked list, stacks, queues)
- Advanced Concepts (semaphores, multi-threading)
- Security issues in the C programming language
- The UNIX system interface
Assessment
- 50% - Computer-based assessment and written report
- 50% - Computer-based assessment
Overview
The module aims to present you with the opportunity to engage in an in-depth research experience, fostering the development of critical thinking, independent research skills, and the application of advanced knowledge within their field of study.
You will be introduced to research methods and best-practices including the implementation of research strategies, literature reviews and correct acknowledgement of source information, ethical considerations, and preparation and presentation of research findings to contribute to the advancement of knowledge through original research.
Syllabus
- Fundamental research methodologies
- Good practice(s) for conducting research
- Introduction to Dyson RDD research practices
- Formulation of research questions and hypotheses
- Experimental and measurement-based statistical testing
- Literature research (using library, digital library services, and other searching tools)
- Proper acknowledgement of sources
- Principles of carrying out experimental research, including ethical issues
- Presentation of results and outcomes
Assessment
- 60% - Written report
- 40% - Literature review
Overview
This module aims to provide a broad overview of the current landscape of app development, before introducing you to developing well-designed and functional applications for mobile devices.
The module begins by drawing comparisons between different platforms and their respective histories before exploring one platform fully to learn and apply general design paradigms for mobile devices, app architecture, accounting for physical resource constraints, handling user input, aspects of user interface design, data control and networking. You will learn through a combination of theoretical study and hands-on practical exercises and will be well-equipped to create robust applications that meet the demands of modern mobile users and adhere to industry best practices.
Syllabus
- Introduction to Swift & Kotlin, their history, application, features, and structures
- App Language Fundamentals, including social, ethical and professional responsibilities of the developer
- Variables, constants, optionals, unwrapping optionals, control flow statements, functions and closures, error handling
- Architecture of App Development
- Model-View-Controller pattern, Swift Package Manager
- Asynchronous – Publisher / Subscriber pattern, VIPER, Model-View-View-Model
- User Interface Development
- Framework, views and modifiers, layout and stacking views, handling user input and gestures, navigation and presenting views
- Working with Data
- Collections, serialization, core data framework, networking and making API requests using URLSession,
- Advanced User Interface Components and Animations
- Customising views & reusable components, gestures and touch interactions, push notifications and remote notifications
- Testing Mobile Applications
- Secured Data Store and Synchronisation, automated vs manual testing, UI/UX/Unit testing
Assessment
- 50% - Group assessment
- 50% - Computer-based assessment
Overview
This module introduces you to the key concepts required to design and implement embedded systems. It covers the hardware and software aspects of embedded systems, including common architectures, hardware components, operating systems, and programming.
This module equips you with the essential in-depth knowledge to create sophisticated embedded systems that meet stringent performance, memory, storage, and energy requirements, while also fostering a critical awareness of safety standards and effective debugging methodologies.
Covering a wide spectrum of topics, the module provides a holistic understanding of embedded systems, their functionalities, and their pivotal role in diverse real-world applications. Through a blend of theoretical discourse and practical engagement, you will cultivate a deeper grasp of the characteristics of embedded system design, enabling you to translate their theoretical knowledge into tangible, efficient solutions.
Syllabus
- Common characteristics, requirements, specification and modelling
- Design for real systems (Limitations to performance, memory, storage & energy use, sleep states)
- Hardware (PWMs, ADCs, DACs, GPIOs, MUXES, Communication protocols (UART, SPI, I2C))
- Operating systems, middleware, scheduling (Real Time Operating System: Free RTOS / Embedded Linux, Bare Metal (assembly language))
- Introduction to behaviour methods (behaviour trees, state diagrams)
- Simulation, testing and verification techniques (Test driven development, hardware abstraction/simulation (SDK libraries))
- Safety Requirements (Class A, Class B, Class C – IEC 62304)
- Hardware Debugging (J-Link hardware debugger)
- Integrating ethical, social and legal considerations into embedded system design.
Assessment
- 40% - Group assessment
- 60% - Practical assessment
Overview
This module aims to provide a comprehensive exploration of core principles and practical methodologies in machine learning. With a strong emphasis on real-world applications, it equips you with the skills required to harness the potential of machine learning in practice. Encompassing areas such as predictive modelling and evaluation, image processing, ethical considerations, and challenges within low-resource machine learning, the module prepares you for practical and industrial engagement.
By fostering proficiency in data handling, judicious model selection and predictive modelling, the curriculum encourages the translation of theoretical knowledge into practical contexts. With a module focussed heavily on scenario and case-study based content, there will be ample opportunity for you to engage and apply the theory readily. Additionally, ethical dimensions inherent in machine learning and the intricacies of low-resource environments are thoughtfully examined, nurturing ethical decision-making while being mindful of biases and effective resource optimisation strategies in real-world contexts.
By the end of this module, you will be well-versed in applied machine learning, positioned to navigate complexities and make meaningful contributions to the dynamic and evolving domain of machine learning.
Syllabus
- Foundations of Data Science (Data types and proliferation, Data quality, integrity, and cleaning)
- Machine Learning Basics (Predictive modelling and algorithms, Model evaluation and validation)
- Image Processing and CNNs (Image enhancement, convolution operations, CNNs for classification, detection, segmentation)
- Ethical Machine Learning (Challenges, fairness, and privacy, Legal considerations and risk mitigation)
- Low-Resource Environment ML (Algorithms, optimization techniques, Memory, computational efficiency)
- Legal, social, ethical and professional issues associated with data and machine learning.
Assessment
- 50% - Computer-based assessment
- 50% - Computer-based assessment
Overview
This module provides a comprehensive introduction to large-scale web and cloud computing technologies for data-intensive applications. You will learn the fundamental principles and architectures of cloud computing, including virtualisation, containerisation, and X-as-a-Service models.
You will gain practical experience with cloud platforms for deploying web applications and running data analytics workflows. Key topics include cloud security, query optimisation, databases, and large-scale graph processing. By the end of the module, you will be proficient in leveraging cloud infrastructure and tools to build highly available and resilient web-scale applications for modern data processing needs.
Syllabus
- Introduction to large-scale data processing and optimisation
- Cloud computing architectures (fundamental, advanced and specialised)
- Data Flow: Map/Reduce and Hadoop/Spark
- Virtualisation
- Containerisation, Serverless, EC2
- Overview of NewSQL and NoSQL technologies (Redshift, S3)
- Large-scale graph data processing: storage, processing model and parallel processing
- X-as-a-Service models (IaaS, PaaS, SaaS, FaaS) - Intro to GCP, AWS
- Challenges & opportunities of cloud-native Data Processing Systems
- Fundamental cloud security, ethical, legal and professional considerations
- Query planning and optimisation/data indexing
Assessment
- 40% - Computer-based assessment
- 60% - Examination
Overview
The module aims to present you with the opportunity to engage in an industry-integrated software engineering project. You will be able to take lead of their own independent research project, with guidance from both academics and engineers, to tackle some of the most cutting-edge problems in engineering.
This module combines academic rigour with practical experience, allowing you to demonstrate their ability to contribute to software development projects in a professional context.
Syllabus
You will be expected to conduct an independent project under the guidance and supervision of an academic supervisor and RDD Dyson engineer/line manager.
Your project and dissertation should include:
- A discussion of the subject area and its history
- A literature review of relevant information and sources
- Formulation of scientific questions and the answers to them
- Theoretical background for the problems presented
- Description of the approach/methodology taken
- Implementation and deployment of a technical solution
- Discussion of issues arising in the undertaking of the project
- Evaluation of results obtained
- Overview of progress and achievements of the project
- Implications for further work
Assessment
- 80% - Project dissertation and technical implementation
- 20% - Presentation, demonstration and viva