Modules
This module explores the design and development of computer software (applications) from two perspectives:
- The implementation of software using programming code, in a high level statically typed, object-oriented programming language, such as Java.
- The user-centred design approach to software design, considering human factors, user experience, usability, and prototyping.
The programming aspect covers a range of topics including
- The syntax and semantics of a programming language
- Different types of data, including collections
- Control flow - conditional, iterative and recursive
- Data input and output (CLI and file based)
- Object-orientation, including class design and inheritance
- Unit testing
- Basic refactoring
The human aspect considers topics that include
- User-centred design
- Human factors
- Usability
- Accessibility
- User experience
- Low and high-fidelity prototyping
- Evaluation
This module provides a strong foundation in the key areas of computing, i.e., mathematics, modern computing systems, cybersecurity, and professional skills. It equips students with the essential knowledge needed to tackle real-world computing problems and prepare them for advanced computing studies.
The mathematical aspect covers a range of topics that include:
- Set theory
- Geometric and trigonometric problem solving
- Vectors
- Linear, quadratic, fractional, and simultaneous equations
- Matrices
- Logarithmic functions
- Simple differential equations
- Introduction to complex numbers
The computing systems considers topics that include:
- Computer architecture - Hardware, software, and peripherals
- Basic computing mathematics - Number systems, binary operations, probability
- Logic gates and Boolean Algebra
- Machine Code and Assembly Language
- Compilers and Linkers
- Data Formats
- Operating Systems and File Management
The cybersecurity component addresses areas including:
- Cybersecurity Concepts
- The Human Weakness in Cybersecurity
- Cybersecurity Vulnerabilities
- Cybersecurity Exploitation
- Cryptography and Information Security
- Cybersecurity Auditing Methods
- Cybersecurity Defensive Strategies
- Programming for Cybersecurity with Python
- Ethical Hacking and Penetration Testing Lifecycle
The professional skills aspect encompasses subjects including:
- Employment & Employability
- Curriculum Vitae
- Role of Professional Bodies
- Security Obligations, Ethics and Law
- Copyright and IPR Concepts
- Report Writing and Referencing
- Proposal and Business Plans
- Social Networks and Collaboration
- Data Collection Methods
- Reflection
This module introduces fundamental concepts in database systems, emphasising their importance in modern computing. Students will gain theoretical and practical skills in designing, implementing, and querying relational databases, while also exploring alternative database management systems (DBMS), such as NoSQL and distributed databases. Through hands-on experience with tools like SQL and exposure to NoSQL systems, students will learn to choose the right database solution for different use cases.
The aims of this module are:
- Understand the role and importance of databases in computer systems and applications.
- Explain core database concepts, including schemas, tables, keys, and relationships.
- Design normalised database schemas using Entity-Relationship (ER) modelling.
- Implement relational databases in a DBMS.
- Write SQL queries for data definition, manipulation, and retrieval.
- Compare and contrast relational databases with alternative database models such as NoSQL and distributed systems.
- Explore use cases for NoSQL databases, including document stores, key-value stores, and graph databases.
- Understand the challenges and benefits of distributed databases, including replication and scalability.
- Awareness of basic techniques for database optimisation and indexing.
- Discuss data security, privacy, and ethical considerations in database design and use.
The module focuses on the application of computer programming, and related technologies, in solving everyday problems. In this process, problems and challenges will be analysed, leading to the selection and deployment of tools and techniques in response.
As a problem-based learning strategy is employed, the syllabus of the module is fluid from occurrence-to-occurrence. However, central themes and foundational concepts that will be covered are:
- Computational thinking (decomposition, abstraction, algorithm design, pattern recognition)
- Collaborative software development
- Solution evaluation
- Project portfolios
You now have the opportunity to pick an optional module to learn a new language or build on your existing language skills as part of your degree. You can choose:
- Subsidiary Language for Beginners (choice of German, Italian or Spanish)
- French: Intermediate Language Development
- Spanish: Intermediate Language Development
- Chinese: Intermediate Language Development
- German: Communication in Practice
- French: Communication in Practice
- Spanish: Communication in Practice