Programming
20 credits
This module will give you a comprehensive overview of the principles of programming, including procedural logic, variables, flow control, input and output and the analysis and design of programs. Instruction will be provided in an object-oriented programming language.
Systems and Networks
20 credits
This module is part of the operating systems and networks theme. The module gives an introduction to the role of the operating system and how it manages computer resources such as memory, processes and disks.
Unix is introduced in terms of the Unix file structure, Input and Output and the Command Line Interface that is used to manipulate these. Computer communication is taught with respect to the Client-Server Architecture and applications that use this. Underlying protocols, such as those in the TCP/IP protocol suite, are introduced, as commonly used on the Internet to provide a universal service. This includes IPv4 and IPv6, the need for IPv6 and how the two differ. Types of computer networks are covered in terms of scale, such as LANs and WANs; and in terms of wired and wireless networks. Mechanisms for connecting networks such as routers, switches and bridges are covered.
Other topics include the role of gateways, proxies, Virtual Private Networks and cloud computing. Potential security risks are examined and how to reduce them, including the use of firewalls.
Databases, Interfaces and Software Design Principles
20 credits
This module considers both the structure of databases, including how to make them fast, efficient and reliable and the appropriate user interfaces which will make them easy to interact with for users. You will start by looking at how to design a database, gaining an understanding of the standard features that management systems provide and how they can best utilise them, then develop an interactive application to access their database.
Database/software design principles will be introduced with an emphasis on the importance of understanding user requirements and specifications. Throughout the lectures and computing sessions, you will learn how to design and implement systems using a standard database management system, web technologies and GUI interfaces through practical programming/system examples.
Autonomous Robotic Systems
20 credits
This module introduces you to the computer science of robotics, giving you an understanding of the hardware and software principles appropriate for control and localisation of autonomous mobile robots. A significant part of the module is laboratory-based, utilising physical robotic hardware to reinforce the theoretical principles covered.
Spending around three to four hours each week in lectures and practicals, you’ll cover a range of topics including:
- basic behavioural control architectures
- programming of multiple behaviours
- capabilities and limitations of sensors and actuators
- filtering techniques for robot localisation
Data Science with Machine Learning
20 credits
This module explores the range of data analysis problems that can be modelled computationally and a range of techniques that are suitable to analyse and solve those problems.
Topics covered include:
- basic statistics
- types of data
- data visualisation techniques
- data modelling
- data pre-processing methods including data imputation
- forecasting methods
- clustering and classification methods
Handling Uncertainty with Fuzzy Sets and Fuzzy Systems
20 credits
This module focuses on handling uncertainty such as vagueness using fuzzy sets and similar approaches. It provides a thorough understanding of key topics such as:
- the nature of uncertainty captured by fuzzy sets and associated links to human reasoning
- inference using fuzzy sets
- similarity of fuzzy sets
- design and modelling of information via fuzzy sets
- type-1 fuzzy sets
- type-2 fuzzy sets
- fuzzy logic systems
- fuzzy set based applications
Simulation and Optimisation for Decision Support
20 credits
This module offers insight into the applications of selected methods of decision support. The foundations for applying these methods are derived from:
- operations research simulation
- social simulation
- data science
- automated scheduling
- decision analysis
Throughout the module, you will become more competent in choosing and implementing the appropriate method for the particular problem at hand. You will engage in a mixture of lectures, workshops, and computer classes.
Linear and Discrete Optimisation
20 credits
This module provides an entry point to computational optimisation techniques, in particular for modelling and solving linear and discrete optimisation problems like diet optimisation, network flows, task assignment, scheduling, bin-packing, travelling salesmen, facility location, vehicle routing and related problems.
In this module, you will learn to interpret and develop algebraic models for a variety of real-world linear and discrete optimisation problems to then use powerful optimization software (linear, integer and mixed-integer solvers) to produce a solution.
The module covers topics such as:
- linear programming
- integer programming
- combinatorial optimisation
- modelling and optimisation software
- multi-objective optimisation
Optimisation technology is ubiquitous in today's world, for applications in logistics, finance, manufacturing, workforce planning, product selection, healthcare, and any other area where the limited resources must be used efficiently. Optimisation enables prescriptive analytics in order to support and automate decision-making.
Big Data Learning and Technologies
20 credits
This module will cover four main concepts.
It will start with an introduction to big data. You’ll find out about the main principles behind distributed/parallel systems with data intensive applications, identifying key challenges such as capture, store, search, analyse and visualise the data.
We’ll also look at SQL Databases verses NoSQL Databases. You will learn:
- the growing amounts of data
- the relational database management systems (RDBMS)
- an overview of Structured Query Languages (SQL)
- an introduction to NoSQL databases
- the difference between a relational DBMS and a NoSQL database
- how to identify the need to employ a NoSQL database
Another concept is big data frameworks and how to deal with big data. This includes the MapReduce programming model, as well as an overview of recent technologies (Hadoop ecosystem, and Apache Spark). Then, you will learn how to interact with the latest APIs of Apache Spark (RDDs, DataFrames and Datasets) to create distributed programs capable of dealing with big datasets (using Python and/or Scala).
Finally, we will cover the data mining and machine learning part of the course. This will include data preprocessing approaches, distributed machine learning algorithms and data stream algorithms. To do so, you will use the machine learning library of Apache Spark to understand how some machine learning algorithms can be deployed at a scale.
Data Science with Machine Learning
20 credits
This module explores the range of data analysis problems that can be modelled computationally and a range of techniques that are suitable to analyse and solve those problems.
Topics covered include:
- basic statistics
- types of data
- data visualisation techniques
- data modelling
- data pre-processing methods including data imputation
- forecasting methods
- clustering and classification methods
Mixed Reality
20 credits
This module focuses on the possibilities and challenges of interaction beyond the desktop. Exploring the 'mixed reality continuum' - a spectrum of emerging computing applications that runs from virtual reality (in which a user is immersed into a computer-generated virtual world) at one extreme, to ubiquitous computing (in which digital materials appear embedded into the everyday physical world - often referred to as the 'Internet of Things') at the other. In the middle of this continuum lie augmented reality and locative media in which the digital appears to be overlaid upon the physical world in different ways.
You will gain knowledge and hands-on experience of design and development with key technologies along this continuum, including working with both ubiquitous computing based sensor systems and locative media. You will learn about the Human-Computer Interaction challenges that need to be considered when creating mixed reality applications along with strategies for addressing them, so as to create compelling and reliable user experiences.
Advanced Algorithms and Data Structures
10 credits
You'll study the theory used in the design and analysis of advanced algorithms and data structures. Topics covered include string algorithms (such as for string matching, longest common subsequence), graph algorithms (such as for minimum cuts and maximum flows, and Google's pagerank algorithm), advanced data structures (such as Fibonacci heaps and Bloom filters), and randomised search heuristics (evolutionary algorithms). You'll learn all the necessary probability theory will be introduced, including random variables and concentration inequalities.
The theory is practiced in weekly labs where we learn how to implement the algorithms and data structures as functional and imperative programs (using the languages Haskell and C), and apply these to solve large instances of real-world problems.
Advanced Computer Networks
20 credits
This module will provide you with an advanced knowledge of computer communications networks, using examples from all-IP core telecommunications networks to illustrate aspects of transmission coding, error control, media access, internet protocols, routing, presentation coding, services and security.
The module will describe Software Defined Networks (SDNs) and provide examples of using them to enable very large scale complex network control. It will also provide advanced knowledge of various routing and query protocols in:
- Ad Hoc Networks
- Mobile Ad Hoc Networks (MANETs)
- Vehicular Ad Hoc Networks (VANETs)
- Disconnection/Disruption/Delay Tolerant Networks (DTNs)
- impact of new networking developments, such as security risks, ethics, interception and data protection will be reflected and discussed systematically
Autonomous Robotic Systems
20 credits
This module introduces you to the computer science of robotics, giving you an understanding of the hardware and software principles appropriate for control and localisation of autonomous mobile robots. A significant part of the module is laboratory-based, utilising physical robotic hardware to reinforce the theoretical principles covered.
Spending around three to four hours each week in lectures and practicals, you’ll cover a range of topics including:
- basic behavioural control architectures
- programming of multiple behaviours
- capabilities and limitations of sensors and actuators
- filtering techniques for robot localisation
Project in Advanced Algorithms and Data Structures
10 credits
This project involves a self-guided study of a selected advanced algorithm or data structure. The outcome of the project is an analysis and implementation of the algorithm or data structure, as well as an empirical evaluation, preferably on a real-world data set of significant size.
Linear and Discrete Optimisation
20 credits
This module provides an entry point to computational optimisation techniques, in particular for modelling and solving linear and discrete optimisation problems like diet optimisation, network flows, task assignment, scheduling, bin-packing, travelling salesmen, facility location, vehicle routing and related problems.
In this module, you will learn to interpret and develop algebraic models for a variety of real-world linear and discrete optimisation problems to then use powerful optimization software (linear, integer and mixed-integer solvers) to produce a solution.
The module covers topics such as:
- linear programming
- integer programming
- combinatorial optimisation
- modelling and optimisation software
- multi-objective optimisation
Optimisation technology is ubiquitous in today's world, for applications in logistics, finance, manufacturing, workforce planning, product selection, healthcare, and any other area where the limited resources must be used efficiently. Optimisation enables prescriptive analytics in order to support and automate decision-making.
Simulation and Optimisation for Decision Support
20 credits
This module offers insight into the applications of selected methods of decision support. The foundations for applying these methods are derived from:
- operations research simulation
- social simulation
- data science
- automated scheduling
- decision analysis
Throughout the module, you will become more competent in choosing and implementing the appropriate method for the particular problem at hand. You will engage in a mixture of lectures, workshops, and computer classes.
Games
20 credits
This module covers the history, development and state-of-the-art in computer games and technological entertainment.
You will gain an appreciation of the range of gaming applications available and be able to chart their emergence as a prevalent form of entertainment. You will study the fundamental principles of theoretical game design and how these can be applied to a variety of modern computer games.
In addition, you will study the development of games as complex software systems. Specific software design issues to be considered will include the software architecture of games, and the technical issues associated with networked and multiplayer games.
Finally, you will use appropriate software environments to individually develop a number of games to explore relevant theoretical design and practical implementation concepts.
Handling Uncertainty with Fuzzy Sets and Fuzzy Systems
20 credits
This module focuses on handling uncertainty such as vagueness using fuzzy sets and similar approaches. It provides a thorough understanding of key topics such as:
- the nature of uncertainty captured by fuzzy sets and associated links to human reasoning
- inference using fuzzy sets
- similarity of fuzzy sets
- design and modelling of information via fuzzy sets
- type-1 fuzzy sets
- type-2 fuzzy sets
- fuzzy logic systems
- fuzzy set based applications
Malware Analysis
10 credits
This module looks at the practice of malware analysis, looking at how to analyse malicious software to understand how it works, how to identify it, and how to defeat or eliminate it.
You will look at how to set up a safe environment in which to analyse malware, as well as exploring both static and dynamic malware analysis. Although malware takes many forms, the focus of this module will primarily be on executable binaries. This will cover object file formats and the use of tools such as debuggers, virtual machines, and disassemblers to explore them. Obfuscation and packing schemes will be discussed, along with various issues related to Windows internals.
The module is practical with encouragement to safely practice the skills you're taught.
Big Data Learning and Technologies
20 credits
This module will cover four main concepts.
It will start with an introduction to big data. You’ll find out about the main principles behind distributed/parallel systems with data intensive applications, identifying key challenges such as capture, store, search, analyse and visualise the data.
We’ll also look at SQL Databases verses NoSQL Databases. You will learn:
- the growing amounts of data
- the relational database management systems (RDBMS)
- an overview of Structured Query Languages (SQL)
- an introduction to NoSQL databases
- the difference between a relational DBMS and a NoSQL database
- how to identify the need to employ a NoSQL database
Another concept is big data frameworks and how to deal with big data. This includes the MapReduce programming model, as well as an overview of recent technologies (Hadoop ecosystem, and Apache Spark). Then, you will learn how to interact with the latest APIs of Apache Spark (RDDs, DataFrames and Datasets) to create distributed programs capable of dealing with big datasets (using Python and/or Scala).
Finally, we will cover the data mining and machine learning part of the course. This will include data preprocessing approaches, distributed machine learning algorithms and data stream algorithms. To do so, you will use the machine learning library of Apache Spark to understand how some machine learning algorithms can be deployed at a scale.
Cyber Security
10 credits
Cyber security is an essential consideration for the protection of IT-based devices, systems, networks and data, providing safeguard and reassurance to the organisations and individuals that now rely (and increasingly depend) upon them. We provide coverage of both technical and human perspectives, considering the fundamental threats and safeguards that concern both personal and workplace contexts. You will emerge with the knowledge and skills necessary to enable informed cyber security decisions spanning the technical, human and organisational dimensions of the topic.
You will gain knowledge and practical experience across a range of key cyber security topics, including foundational concepts and principles, authentication and access control, operating system security, cryptographic mechanisms and applications, security management, risk assessment, cyber-attacks and threat intelligence, network and Internet security, intrusion detection and incident response, and human aspects. You will learn about the challenges that need to be considered when designing and implementing secure systems, along with associated approaches to ensure that security is addressed in an effective and holistic manner.