Curious about studying Computer Science with Cybersecurity - BSc (Hons)at Abertay University? We've gathered all the key details—entry requirements, modules, fees, and more. Hear from real students by checking out reviews, or take the next step by booking an open day to explore it for yourself.
Bachelor of Science (with Honours) - BSc (Hons)
Abertay University
Full Time
Sep 2026
4 Year
. You’ll build on the core principles of Computer Science with an added vital specialisation: cybersecurity. Using a security-by-design approach,
you'll study how poor design often leads to vulnerabilities, and the role of encryption and usable security in developing robust systems.
You’ll master the art of designing, implementing, and analysing secure software systems, learning both offensive and defensive techniques. Plus, you'll be studying a degree with multiple industry accreditations and certifications.
Develop measures to stop cyberattacksYour specialist developer expertise will make you hugely employable.
You'll be prepared for the rapidly evolving cybersecurity work environment, using your skills in ethical hacking, computing, secure software engineering and human-centred security. This course ranked
top in Scotland for Overall Student Satisfaction in the 2024 National Student Survey. And the 2025 Complete University Guide named us the
No. 1 UK modern university for Computer Science degrees.Cybersecurity experts are highly sought after
With practical experience in ethical hacking, encryption, and network security,
you'll graduate ready and equipped to start developing more secure systems.There’s
a global shortage of cybersecurity experts, so our graduates are in high demand- meaning once you graduate, your skills will be exactly what the industry needs.
Multiple accreditations and certificationsThis course is provisionally certified by the NCSC, a part of GCHQ and accredited by BCS, The Chartered Institute for IT. Abertay University has been recognised by the NCSC and DSIT as an Academic Centre of Excellence in Cyber Security Education — Gold Award, the highest level available and is a Crest academic partner.
Starting university is a big step, and every student arrives with different strengths and challenges. This module helps you reflect on your skills, identify areas for development and plan how to succeed academically and personally. Using the Abertay Discovery Tool, you'll review key areas such as study skills, careers and employability, digital confidence and wellbeing. You'll then create a personal action plan and choose further MySuccess modules to support your growth throughout your time at Abertay. Indicative Content - What Does a Successful Student Look Like? Reflect on your motivations, values and passions. Explore what makes a successful student, learn from different examples of success, and consider how stepping outside your comfort zone can help you grow. - Abertay Discovery Tool: Complete the Abertay Discovery Tool to identify your strengths and areas for development across five themes: studying at university, academic skills, digital skills, careers and employability, and wellbeing. - Fundamentals of University: Learn how university study works - from understanding modules and assessments to interpreting assignment briefs and using feedback to improve. - Expectations of University and You: Explore what's expected of you as a student, including the code of conduct, academic integrity, and independent learning. Understand blended learning and how the Abertay Attributes link to your development. - Successful Student Behaviours: Develop habits that support success: managing time, avoiding procrastination, preparing effectively for classes, taking good notes and building a growth mindset. Discover opportunities to get involved at Abertay and beyond.
Please note: ABE111: Numbers for Everyday Life will only be assigned as a core module if you do not have a minimum of a National 5 Maths qualification at grade C or an acceptable equivalent. This module helps you strengthen core numeracy skills, including percentages, decimals, fractions, appreciation, depreciation and rounding. Through problem-solving and reasoning, you’ll learn to analyse everyday situations and make logical, well-informed decisions. You’ll also gain a foundation in statistics—covering mean, median, mode and standard deviation—and develop financial skills such as budgeting, managing income and expenses, understanding interest rates, and making choices about saving and borrowing. By applying these skills to real-life contexts, you’ll build confidence in using numbers to solve problems, manage your finances, and support decision-making in both study and work. Indicative Content - Numerical Skills: Develop your confidence with key number skills, including percentages, decimals, fractions, appreciation, depreciation and rounding. - Problem Solving and Reasoning: Practice using maths to tackle everyday situations. Learn how to spot problems, rearrange equations, make logical connections and reach effective decisions. - Fundamentals of Statistics: Get to grips with the basics of statistics. Learn how to calculate and use mean, median, mode and standard deviation to interpret and compare data. - Financial Skills: Build practical financial know-how. Explore budgeting, managing income and expenses, understanding interest rates, and making smart decisions about saving and borrowing. Apply these skills directly to real-life situations.
This module introduces the essential principles of computer architecture, giving you a clear understanding of how modern computer systems function. You’ll explore how hardware and software interact, how data is represented and processed, and how operating systems manage resources. By building a strong mental model of system behaviour, you’ll develop the foundation needed to reason about computing at a low level and prepare for more advanced study in later modules. Indicative content - Computer Architecture: You’ll study the principal low-level components of a computer system, including logic gates, logic blocks, bus interconnections, memory, and storage devices. This will help you understand how the building blocks of hardware combine to support system performance. - Data Representation: You’ll learn how information is represented and manipulated within a computer, covering bits, bitwise operations, integers, floating and fixed-point numbers, as well as the encoding of text, colours, bitmaps, and audio. - Machine Instructions: You’ll be introduced to the von Neumann architecture and the structure of a modern CPU. Topics include arithmetic operations, control flow, the use of stacks, and the basics of compilation—helping you see how instructions are executed at machine level. - Operating Systems: You’ll explore the role of operating systems in managing hardware and software, including the distinction between userspace and kernelspace. You’ll cover drivers, scheduling, memory management, and filesystems, while also using systems such as Linux to understand system management and OS-level security concepts.
This module introduces you to the core programming constructs of the C++ language, using a problem-based approach to develop your coding skills. You’ll learn how to design and implement solutions that build a strong foundation for object-oriented programming. The focus is on practical application, helping you gain transferable skills that are essential not only for C++ but for understanding and working with all modern object-oriented languages. Indicative content - Object-Oriented Program Development: You’ll learn how to use an object-oriented development environment to create source code, compile, link, execute, and debug programs. This will give you practical experience of the full development cycle. - Introduction to Object Orientation: You’ll read, understand, and modify small object-oriented programs, building confidence in recognising and applying the principles of object-oriented programming. - Programming Constructs: You’ll make use of core programming constructs—such as declarations, data types, assignment, operators, selection, iteration, and functions—to solve a range of programming problems. - Aggregate Types: You’ll explore arrays and algorithms to extend your programming power, while also learning about storage, memory access, and pointers. You’ll be introduced to classes and structs as ways of organising and structuring data. - Program Development and Testing: You’ll develop problem-solving skills through pseudocode and stepwise refinement, and learn how to use functions as program units to improve organisation and efficiency. You’ll also gain experience in testing and refining your code to ensure reliability.
This module complements the Level 7 programming modules by introducing the fundamental principles of software engineering in a practical, hands-on way. You’ll learn how to design, structure, and communicate solutions for both small and large-scale software systems, building the skills needed to approach development with a professional engineering mindset. By focusing on real-world practices rather than abstract theory, the module prepares you to apply software engineering methods effectively in future projects and advanced study. Indicative content - Problem-Solving: You’ll learn how to capture requirements and apply general problem-solving techniques to software development. This includes approaches to testing and the use of non-programming languages to describe problems and solutions. - Classes and Objects: You’ll develop software using class definitions, methods, data, constructors, and instantiation. You’ll also create simple inheritance structures, applying object-oriented principles to build solutions with multiple classes. - Security: You’ll explore how to encapsulate objects using public and private access modifiers, and understand the role of constructors in creating secure and reliable code. - Object-Oriented Analysis, Design and Implementation: You’ll identify objects within a system and structure data and information into class definitions. You’ll also learn how to map object-oriented design principles into practical programming constructs. - Abstraction: You’ll understand how abstraction helps manage complexity in software, using code blocks, control flows, and modular design to simplify problem-solving. - Class Modelling: You’ll be introduced to UML class diagrams as a way of modelling and communicating object-oriented designs. - Data Design – An Object-Oriented Approach: You’ll model data using object-oriented techniques, drawing both informal and formal diagrams (including UML) to describe information and behaviour. You’ll also be introduced to design patterns as reusable solutions to common problems. - Data Design – A Relational Approach: You’ll explore relational modelling techniques, considering both theoretical and practical design concerns. You’ll also gain hands-on experience constructing and querying databases using basic SQL.
This module introduces the core principles of computer networking, from the fundamentals of network architecture and protocols to the practical skills needed to design, analyse, and troubleshoot networks. You’ll explore how data is transmitted, how different layers of a network interact, and how applications communicate across local and global systems. By combining theory with hands'on practice, you’ll develop the knowledge and skills to understand, build, and manage modern computer networks. Indicative content - Networking Fundamentals: You’ll study the architecture of circuit'switched and packet'switched networks, and the use of copper, fibre, and wireless media. You’ll also examine how media affects bandwidth and throughput, and review the roles, advantages, and disadvantages of hubs, switches, and routers in network configurations such as Ethernet. - Network Layers: You’ll learn how data is segmented and encapsulated, and how MAC and IP addresses are used by switches and routers. You’ll explore TCP and UDP protocols, class'based networks, IP address allocation, and the need for subnets and subnet masks. - Network Models, Protocols, and Applications: You’ll compare the OSI and TCP/IP models, and study the protocols and applications associated with each layer—from the physical layer through to the application layer—understanding their roles and functionalities. - Networking Analysis: You’ll gain experience analysing network traffic using specialist tools, learning how to interpret communication on local networks, understand traffic patterns, and apply methods for analysing network conversations. - Application of Network Knowledge: You’ll apply your knowledge to design computer networks, considering hardware, logical structures, and routing. You’ll also learn troubleshooting techniques and gain practical experience building network applications, including creating software that uses sockets for communication.
This module introduces the core principles of computer security, systems deployment, and software debugging. You’ll explore the legal and ethical frameworks that shape professional practice, while also developing practical skills in areas such as authentication, cryptography, and system management. By combining theory with hands'on experience, the module equips you to understand security risks, apply protective measures, and troubleshoot software and systems in real'world contexts. Indicative Content - Relevant Laws: You’ll explore key legislation including the Computer Misuse Act, Copyright Act, and Data Protection Act, and discuss the issues and constraints they create for computing professionals. - Ethical Issues: You’ll consider ethical challenges around copyright, intellectual property rights, and data protection, as well as the processes involved in gaining ethical approval for projects. - Security Fundamentals: You’ll be introduced to the Cyber Security Body of Knowledge (CYBoK) and examine how online data sharing contributes to Open Source Intelligence (OSINT) gathering. - Authentication: You’ll study authentication methods such as passwords and biometrics, and evaluate their strengths and weaknesses. - Command Line: You’ll gain practical experience using Linux and the command line as tools for system management and security. - Development Cycle: You’ll explore application development methodologies and how they support secure and reliable software deployment. - Defence, Evasion, and Malware: You’ll review common malware defence and evasion techniques, and learn how attackers and defenders adapt to one another. - Cryptography: You’ll be introduced to common cryptographic techniques and their role in securing data and communications. - Debugging: You’ll develop skills in application debugging, learning common practices and techniques to identify and resolve software issues. - IoT and WiFi: You’ll examine the security implications of Internet of Things (IoT) devices and the risks associated with using unsecured WiFi networks.
Build on your knowledge of programming taught in earlier modules (e.g. arrays, structures, simple collections). Gain an introduction to the standard data structures and algorithms that form the core of algorithmic thought in computer science and to the idea of reasoning about the behaviour and performance of a computer program. Indicative content - Reasoning about performance: The idea of an algorithm, time and space complexity, abstract data types. - Basic data structures: Linked lists, stacks, queues, hash tables. - Sorting and searching: Exhaustive and binary search, common sorting algorithms. - Trees: Simple trees, tree search algorithms, tree representations (XML, JSON). - Graphs: Simple and directed graphs, graph algorithms.
This module develops your understanding and practical experience in the design and implementation of object'oriented software and relational databases. You will review existing designs, create your own to meet stated requirements, and critically evaluate their effectiveness before producing example implementations. Alongside technical skills, you will be encouraged to adopt a software development method, plan tasks effectively, and practise report writing, including critical evaluation of your work and impartial analysis of your methodology. The module emphasises how these skills support further study and contribute to a successful career in software development. Indicative Content - Entity Relationship (ER) Modelling: Identify entities, 1'1, 1'many and many'many relationships, apply design notation, and understand the role of ER in object'oriented software and database design. - Relational Database Design: Use primary and foreign keys to realise relationships, apply link tables for many'many relationships, design to meet application data requirements, and apply normalisation techniques. - SQL: Explore SQL as a programming language, covering basic relational algebra, unions and joins, and practise selecting, extracting, editing and inserting data to meet functional requirements. - OO Software and SQL: Integrate SQL into object'oriented software, align OO and database designs, and realise designs in code. - Development Methodologies: Examine the role of methodologies, review approaches such as waterfall, RAD, agile and TDD, and appraise the role of design within different development methods.
This module develops a critical understanding of the tools and techniques used by ethical hackers to assess the security of devices and networks. You will learn how to systematically investigate a computer network for potential vulnerabilities, applying professional practices to identify weaknesses while considering the ethical and legal frameworks that govern penetration testing. Through practical exercises, you will gain hands'on experience with industry'standard tools and approaches, preparing you to evaluate and strengthen network security in real'world contexts. Indicative content - Legal and Ethical Foundations: Explore UK computer security legislation covering penetration testing, data protection and cybercrime, alongside ethical principles and professional conduct in cybersecurity, with emphasis on responsible disclosure and ethical hacking practices (aligned to the CyBoK knowledge area of Law & Regulation). - The Penetration Testing Process: Gain a comprehensive overview of the penetration testing lifecycle, including reconnaissance, scanning, enumeration, exploitation and post'exploitation, aligned to CyBoK knowledge areas such as Adversarial Behaviours, Network Security, Malware & Attack Technologies, and Authentication, Authorisation & Accountability. - Reporting and Communication: Learn how to structure penetration testing reports for both technical and non'technical stakeholders, providing clear recommendations for mitigation and system hardening, aligned to CyBoK knowledge areas of Security Operations & Incident Management and Law & Regulation.
Please note: If you are a Direct Entrant (new student) to this year of study and have not previously taken module ABE101, then you MUST take ABE201 as your Term 2 microcredential module. If you have previously taken ABE101, then you are NOT permitted to take ABE201 in Term 2. Starting university brings new opportunities and challenges, and every student’s journey is different. This microcredential helps you settle into life at Abertay and build the habits that lead to success. You’ll hear from current students sharing their own tips, and reflect on the areas you most want to develop. You’ll get to know Abertay’s systems, explore what makes a successful student and practise core skills such as time management, referencing, academic writing style and using support services. By the end, you’ll have the tools and strategies you need to thrive at university. Indicative content - Navigating Abertay Systems: Get to know the key systems you’ll use at Abertay—such as MyLearningSpace, MS Teams, OASIS and MyAbertay—and learn how to use them effectively. - Expectations of University and You: Explore what’s expected of you as a student and what you can expect from the university. Topics include the code of conduct, independent and blended learning, how courses are structured, health and safety, and the Abertay attributes. - Abertay Discovery Tool: Complete the Discovery Tool to identify your strengths and areas for development across five themes: studying at university, academic skills, digital skills, careers and employability, and wellbeing. - Fundamentals of University: Learn how modules work, how assessments are set, and how to use assignment briefs and feedback to improve your work. - Understanding, Searching and Evaluating Information: Develop strategies for finding and assessing reliable information, building your confidence in research and study skills. - Successful Student Behaviours: Practise the habits that help you succeed: managing time, avoiding procrastination, effective note-taking, preparing for classes, developing a growth mindset, and making use of student support services. - Referencing: Understand academic integrity and why referencing matters. Learn how to avoid plagiarism, create in-text citations and reference lists, and use digital tools to manage your sources. - Sounding Academic: Discover what lecturers mean by “academic style” and how to use the right language in your writing. Learn the rules of academic writing, how to paraphrase effectively, and how expectations differ between school/college and university. You’ll also explore how assessments, marking and feedback work.
Build on the earlier module, Data Structures and Algorithms 1. Gain an introduction to parallel programming on shared-memory and GPU architecture, and the design techniques underpinning parallel applications. Use a range of case studies drawn from typical real-world applications. Indicative content - Parallel Programming: Explore the motivations for parallelisation, the concepts of parallelism and concurrency, Amdahl’s Law, high'level approaches to parallelisation and principles of parallel design. - Low'Level Programming with Threads: Learn how to start and join threads, share data safely, apply mutual exclusion, use synchronisation objects, and understand lock'free techniques. - High'Level Parallel Programming: Study task'based and message'passing parallelism, address data'parallel problems, and exploit locality in programming. - Instruction'Level Parallelism: Examine SIMD instructions and automatic vectorisation for performance optimisation. - GPU Programming: Understand GPU architectures, identify algorithms suited to GPUs, and apply GPU profiling techniques. - Parallel Patterns: Apply design patterns for parallel and concurrent programming, with awareness of sorting, numerical, image processing, searching and optimisation algorithms that benefit from parallelisation
This module introduces the core concepts of optimising interactions between users and computing systems or services, with a focus on how these interactions can be evaluated. You will explore principles of interface design, learn to apply both quantitative and qualitative methods of data analysis, and consider the ethical issues involved in gathering user data. Key aspects of usability and accessibility will also be examined, equipping you with the skills to design and assess user'centred systems that are effective, inclusive and responsible Indicative Content - Designing Studies: Build small studies that investigate and evaluate aspects of interface and interaction design. - Usability and Accessibility: Develop interfaces that are both usable and accessible, taking into account the requirements of different platforms. - Professional and Ethical Issues: Consider the professional standards and ethical procedures involved in conducting user research, including responsibility to participants. - Data Analysis and Evaluation: Apply quantitative and qualitative methods to analyse user data and evaluate design effectiveness
In this module, you will develop your understanding and experience of design and programming within a software engineering context. You will learn how to critically evaluate and apply software engineering practices to create object'oriented software solutions. You will explore both plan'driven and agile methodologies, apply code construction concepts such as coupling, cohesion and test'driven development, and make use of source control. You will also gain experience in applying design principles and design patterns, while ensuring your code is secure, reliable and professional. Indicative Content - Software Engineering (SE): Understand what software engineering is and how it applies to both the development process and programming practices. - SE Development Methodologies: Compare and contrast different approaches such as Extreme Programming and the Waterfall Model, and evaluate their strengths and limitations. - Source Control: Learn strategies and tools for version control, with a focus on using Git to manage collaborative development. - Code Development Practices: Apply key design concepts including coupling and cohesion, and explore practices such as continuous integration/continuous delivery (CI/CD) and test'driven development (TDD). - Unified Modelling Language (UML): Document programs using UML standards, including use case, sequence, class, state'machine and activity diagrams. - Patterns: Review and apply architectural and design patterns to address common programming problems effectively. - Secure Object'Oriented Coding Practices: Identify coding vulnerabilities and types of exploits, and apply secure programming practices to protect against them. - Protecting Against the User: Implement full input verification and validation, and apply secure methods for handling passwords and encryption.
In this module, you will be introduced to the fundamental ideas and concepts of how computers, mobile devices and gadgets communicate with each other through a wide range of communication technologies. You will explore both wired and wireless networking, including Ethernet, VLANs, STP, routing, subnetting and IPv6. You will also learn about essential network services such as SNMP, DHCP and DNS, as well as the role of firewalls and network management in ensuring secure and efficient communication between devices. Indicative Content - VLANs: Understand the core concept of Virtual Local Area Networks (VLANs) and trunking, and explore common attacks that can be used against them. - Spanning Tree Protocol (STP): Investigate how STP is used to create loop'free networks, and examine how attackers may attempt to exploit it. - Static Routing: Learn how routing works, and analyse how static routing can be used to pivot deeper into a network. - Subnetting and Variable Length Subnet Masks (VLSM): Explore classful and classless addressing, the benefits and impact on routing protocols, and how to design LANs using VLSM techniques. - Network Application Protocols: Investigate networking protocols used at the application layer of the OSI model, and identify common security weaknesses associated with them. - Firewalls: Examine both software and hardware firewalls, their applications and uses, and how attackers may attempt to counter them. - Intrusion Detection Systems (IDS): Understand how IDS technologies work, and explore methods attackers may use to bypass them. - Network Management: Study network management protocols such as SNMP, and review current practices in managing and monitoring networks.
In this module, you will develop a critical understanding of advanced techniques used by ethical hackers to assess the security of web applications. You will explore how attackers exploit vulnerabilities, and more importantly, how organisations can defend against these threats through effective countermeasures. By engaging with both offensive and defensive perspectives, you will gain the ability to analyse, evaluate and apply advanced web application security practices. You will also learn how to communicate the results of a security assessment in a clear and professional manner, preparing you for real'world industry scenarios. Indicative Content - Overview of Web Applications: Explore the core defence mechanisms of web applications, including user access, authentication, session management and access control. - Web Application Technologies: Understand the HTTP protocol, requests, responses and methods, along with encoding schemes. Examine server'side technologies such as Java, ASP and PHP. - Injecting Code: Investigate common injection attacks, including SQL injection, email header injection, PHP injection and others. Learn preventive measures to mitigate these vulnerabilities. - Bypassing Client'Side Controls: Analyse techniques such as cookie manipulation, parameter tampering and URL modification, and the use of web proxies to bypass client'side restrictions. - Attacking Authentication: Examine attacks on session management, flaws in authentication mechanisms, and vulnerabilities in forgotten password and password change functions. Learn countermeasures to strengthen authentication. - Cross'Site Scripting (XSS): Study reflected, stored and DOM'based XSS vulnerabilities, and apply countermeasures to prevent them. - Web Server Security: Review popular web servers such as IIS and Apache, common threats against them, and methods to increase security through correct configuration and countermeasures.
In this module, you will develop an understanding of how Machine Learning (ML) fits within the wider context of Artificial Intelligence (AI). You will explore how ML solutions act as vital components in the development of intelligent systems and how they can be applied to a wide range of problems across different disciplines. The module introduces you to foundational ML and data concepts and techniques, giving you both the theoretical grounding and practical insight needed to begin applying ML in real'world contexts. Indicative Content - Learning Pipeline: Gain a conceptual understanding of the fundamentals and terminology of machine learning. Explore the structure and components of the traditional ML pipeline, including data, models and evaluation. - Applications and Challenges of Applied ML: Examine real'world, data'driven problems and case studies across different contexts. Consider practical issues such as data availability and representation, model characteristics, and the causes and remedies of overfitting and underfitting. - Machine Learning Techniques: Study the main learning paradigms—supervised, unsupervised and reinforcement learning—and their applicability to clustering, regression and classification. Explore classic ML techniques including K'Nearest Neighbours (KNN), Logistic Regression (LR), Support Vector Machines (SVM), Decision Trees (DT) and Artificial Neural Networks (ANN). - Data for ML: Understand the importance of data cleaning and preprocessing. Explore data representation, the curse of dimensionality, feature selection, and the impact of weak descriptors. Learn about dimensionality reduction techniques such as Principal Component Analysis (PCA), with examples of datasets from different domains. - Evaluation Metrics: Learn how to assess model performance using a range of metrics. Explore fitness and cost functions, false positive rates, ROC curves, confusion matrices, and the precision'recall trade'off, and evaluate their suitability in practice. - Model Enhancement: Address poor performance and limited data availability by applying methods to improve models. Explore techniques such as regularisation, gradient descent and cross'validation to assist convergence, optimise parameters and enhance performance.
In this module, you will develop your understanding of the methods, knowledge and techniques associated with offensive attacks targeting computer systems. You will explore how attacks are developed, performed and analysed, while also examining the countermeasures organisations can use to minimise their impact. Alongside this, you will have the opportunity to undertake an individual project, allowing you to critically evaluate an advanced security topic and apply your skills in a practical, independent context. Indicative Question - Scripting Basics: Learn the fundamentals of scripting languages, including syntax, functions, modules, packages and libraries, to support automation and problem'solving in cybersecurity contexts. - Coding and Scripting Techniques: Develop skills in exception handling, testing and debugging to produce reliable and maintainable scripts. - Code Execution Vulnerabilities: Explore how vulnerabilities in web applications can arise from insecure code execution, and understand their implications for system security. - Automating Tasks Using Python: Use Python’s OS modules and filtering techniques (e.g. Grep and Sed) to automate common cybersecurity and forensic tasks. - Reporting: Learn how to generate clear and professional reports from automated tasks to communicate findings effectively. - Network Programming: Gain experience in developing servers and clients, and understand the principles behind command'and'control style software in a controlled, academic context. - Buffer Overflow Exploits: Study how buffer overflow vulnerabilities are detected and exploited, and examine the role of shellcode in these attacks. - Malware Evasion Techniques: Investigate anti'reversing strategies such as anti'disassembly, anti'debugging, VM detection and packing, alongside covert behaviours and deception techniques used by malware to evade detection. - Assembly Language Logic: Understand assembly language structures and code constructs, and learn how to interpret them using a disassembler. - Advanced Dynamic Malware Analysis: Explore advanced malware analysis techniques, including the use of debuggers, decompilation, automated analysis and the application of machine learning.
In this module, you will develop practical mathematical skills that underpin the development and analysis of secure software. You will be introduced to key techniques in discrete mathematics and explore their application in two major areas of secure software engineering: formal methods for software specification and verification, and cryptography. By combining theory with practice, you will learn how mathematical principles can be applied to strengthen software security and reliability in real'world contexts. Indicative Content - Discrete Mathematics: Study the mathematical theory underpinning secure software, including basic number theory, finite arithmetic, functions, sets, rings, groups, elliptic curves, propositional and predicate logic, proof techniques and supporting statistics. - Introduction to Formal Methods: Explore the principles of formal specification and analysis, including pre/post'conditions, formal specification languages, model'checkers, protocol analysis, session types, proof'carrying code and the practical limitations of formal modelling. - Introduction to Cryptography: Examine the structures of cryptographic systems and primitives such as stream and block ciphers, PRFs, hash functions, MACs and KDFs. Learn about symmetric and public'key cryptography, key exchange, definitions and proofs of security, real'world protocols and attacks, and an introduction to post'quantum cryptography. - Introduction to Post'Quantum Cryptography: Analyse the impact of quantum computing on cybersecurity, including quantum principles and algorithms such as Shor’s and Grover’s. Evaluate the vulnerabilities of RSA and ECC, study quantum'resistant algorithms (lattice'based, hash'based, code'based, multivariate polynomial), and consider the challenges and strategies for transitioning to post'quantum standards.
Gain an in-depth understanding of system programming and the security challenges that exist in both kernel and user space. You’ll explore how operating systems and devices work at a low level, gaining insight into areas such as kernel operation, device drivers and hardware communication. You’ll also learn how to design and build secure systems for embedded and IoT environments, and how these interact with cloud and web technologies. Through practical and theoretical work, you’ll develop the skills to analyse, implement and secure complex systems in real-world deployment scenarios. Indicative Content - System Programming: C programming, compiler, linker and loader. Static and runtime analysis of binary files. System development kits, kernel headers and cross complier environments. - Hardware: ASIC,MCU,CPU, SOC, assembly, component security, pcb security, sniffing wire traffic, radio traffic, Types of communication (I2C, SPI, UART, RS232) and security challenges - Operating systems: I/O Manager, Memory Manager, Scheduler, .s file, init file, boot loader, boot process, ROM, RAM, execution rings - Kernels: Types of kernel, real time, unix, Windows, mac, linux, user space vs kernel space, shell, native applications, dll, registry/proc. Security landscape in user and kernel space. - Auditing and Debugging: User and kernel space debugging, Remote kernel debug setup, Analysis of precompiled binaries - Loadable modules: Linker, stack and memory layout, Interrupts, IRQ table and priorities. Introduction to device drivers, Types of driver, lifecycle, portability. Security risks associated with loadable modules. - Cloud Platforms: Setup and use of cloud platforms such as AWS. Cloud platform utilisation fundamentals and business considerations. - Web Technologies: TCP/IP protocol with understanding of application protocols such as HTTP, FTP, SSH etc. Understand web server and common gateway interface (CGI).
This module will provide you with a research-led introduction to the design of secure usable systems. It will also enable you to evaluate user experiences with those systems. Indicative Content - Foundations of Human-Centred Security: Addressing the pivotal role of human behaviour, cognition, and interaction in the design, implementation, and effectiveness of secure systems. This encompasses topics such as the psychology behind risky behaviour and decision-making, user perceptions of security mechanisms, addressing warning fatigue, and how best to communicate risk. - Authentication Design: How authentication mechanisms ought to be chosen with the human in mind. The differences between what you hold, what you are or do, and what you know, Consideration of password requirements, and alternatives to passwords. Biometrics and privacy concerns. - Design for Privacy: Legal requirements in local and international contexts, and the philosophy of privacy. Existing practice in privacy by design and explaining privacy policy; avoiding dark patterns. Best practice in privacy policy design and communication. Best practice in data design and management for privacy. Patterns for privacy awareness and privacy preservation in software design. - Social Engineering: The impact of social engineering techniques on the end-user (e.g., phishing and romance fraud). Techniques used by attackers. Emerging social engineering threats. Real-world examples of social engineering attacks. Building awareness and resilience against social engineering. - Security Education and Behaviour Change: The importance of cybersecurity education and how to design effective security warnings and awareness programmes. Gamification and interactive learning in cybersecurity education. Evaluation of the effectiveness of security mechanisms and training programmes. - Emerging Technologies: Exploration of emerging trends in human-centred security. Human factors in emerging technologies (e.g., IoT, XR, AI). Ethical considerations in the development and deployment of new security technologies.
This module gives you the chance to design, develop and deliver a substantial individual project related to your programme. You’ll normally propose your own idea, carrying out initial research and proof-of-concept work in Term 1 to produce a detailed project proposal. In Term 2, you’ll focus on the main development phase, applying your knowledge and skills to complete the project to a professional standard. Indicative Content - Investigation, Research and Selection: Initial investigation of project topic, Background research of project topic and Selection of project topic - Evaluating: Methods of evaluating a project. - Legal, Social, Professional and Ethical Issues: Consideration of Legal, social, ethical and professional issues. - Proposal: Production of a project proposal. - Project Feasibility and Proof of Concept: Demonstrate Feasibility of Project - Self-directed problem solving, Originality and Creativity - Self Motivation, Initiative and Insight - Software Design Skills - Recording, Reporting and Communication Skills - Employability and professional development
This module gives you the opportunity to present a major individual project as a formal dissertation. You’ll normally propose your own topic, drawn from a current industry or research problem within your field. You’ll be expected to present your work in a clear, structured and academically rigorous way, demonstrating critical insight and evaluation of both your project and the artefact produced. The final dissertation will be written in an academic style appropriate to your discipline. Indicative Content - Introduction: Introduce the topic of the project and the problem area with and appropriate research question. - Investigate: Investigate previous work in the chosen project area, and show how the work of the project relates to it. - Justify: Demonstrate a sound justification for the approach and methodology adopted. - Document: Document the output of the project with some originality. - Evaluate: Critically evaluate the output, using third party evaluation where appropriate, and recognise the strengths and limitations of the work. - Communicate: Demonstrate an ability for independent learning and linkage to future work and career aspirations.
This module builds on your experience of secure software design from CMP307 and CMP319. It focuses specifically on secure software engineering tools and techniques, and how they are integrated into the software development lifecycle. Indicative content Principles of Secure Software Development: You'll explore how correctness, security and performance work together when developing secure software. You'll examine key principles including defence in depth, validating inputs, outputs and states, limiting privileges, separating privileges, and managing memory and resources securely. Language and API Design for Security: You'll investigate security issues in widely used programming languages and why these languages remain popular. You'll explore undefined behaviour, compiler optimisations, and how stronger type systems and language design can improve security, including the use of domain-specific languages (DSLs). Static and Dynamic Analysis: You'll learn how static and dynamic analysis can identify security issues in software, including what these tools can and can't detect. You'll also explore formal methods for specifying and validating software behaviour and the toolchains used to support this process. Secure Software Engineering: You'll explore how security is built into the Software Development Life Cycle (SDLC), from defining security requirements to following secure coding standards and carrying out security-focused code reviews.