Course structure
Year 1 core modules
Algorithms and Data Structures
You develop intricate programmes to solve complex problems, using data structures and appropriate algorithms. You study a variety of algorithmic techniques and the use and importance of data structures. You are introduced to classifying data according to its abstract behaviour, as distinct from its representation.
A range of well-established data structures are examined and their properties are described. You gain an understanding of the basic skills needed in algorithmic design and the interaction between algorithm and data structure in creating efficient code.
Computational Problem Solving
You are introduced to the fundamental concepts that support computer science, including number bases, statistical methods, matrix algebra, and discrete mathematics.
You study topics in discrete mathematics which form the basis of the notation used in software specification. Statistical methods, including probability, are covered at an introductory level, preparing you for growing areas of computer science applications such as big data.
You are introduced to problem-solving using recreational problems, including games and puzzles, to convey algorithmic concepts.
Java Applications Development
You study the syntax of Java programming language and the Java API, as well as object-oriented concepts including inheritance, abstraction and polymorphism. The emphasis is on problem solving, design and documentation adopted in Java Programming.
You gain an understanding of professional practice, codes of conduct and copyright/licencing.
Java Programming
You are introduced to the fundamental concepts of software development through Java programming language. You study key aspects of the software development process, including designing solutions, writing application code, developing documentation, and formal approaches to testing.
Networks and Security
This module provides you with an understanding of the role of computer networks to fully appreciate and utilise within modern web-applications. Specific network design solutions are introduced and explored. You get hands on experience using key network devices for wired and wireless network.
Security threads, hazards and issues are explored along with security risk assessment and management. Relevant protocols and hardware technologies are introduced along with the role of legal requirements, social and ethical issues.
Systems Design and Databases
Successful, robust and user-friendly systems or applications begin with a requirements analysis and detailed design. You are introduced to the concepts and techniques of systems analysis and design, enabling you to break down and simplify complex systems and represent them visually using industry-standard approaches such as Unified Modelling Language (UML). In industry, the resulting models are used to communicate designs to developers and stakeholders prior to implementation.
You learn to design and implement fully normalised relational databases as part of an information system. Using data modelling techniques you define how the system stores data and interacts with it. You implement your design using Structured Query Language (SQL): Data Definition Language for creating tables, and Data Manipulation Language for accessing the data.
You develop professional practice and transferrable skills essential for industry, including project management."
Year 2 core modules
Artificial Intelligence
This module provides a general introduction to artificial intelligence (AI) with real-world applications around us. This includes the fundamental concepts of AI, common frameworks used in the analysis and design of intelligent systems, generic algorithms used for implementation and major techniques used in problem solving. This module also introduces popular applications of AI (for example, game design, virtual agents, robotics) and benefits of using AI (for example, how to enhance efficiency, productivity and reduce costs).
Artificial Intelligence Team Project
Plan, design and build an AI app or model within a small software development team. You explore the frameworks, libraries, patterns and industry-standard development tools used to build today’s AI apps and/or model. This requires a professional approach, informed by current industry practice, to plan a successful software development project.
Functional Programming
We introduce you to functional programming and its underlying fundamental concepts. You use a functional programming language, such as Haskell, to solve real-world problems. The mathematical nature of functional programs allows you to apply mathematical reasoning to your programs, so as to prove that they are correct.
This module:
introduce you to functional programming and its underlying fundamental concepts
enables you to solve real-world problems using a functional programming language
enables you to apply mathematical reasoning to programs, so as to prove that a program is correct.
Lectures are supported by laboratory-based practicals. Lectures include on-line, interactive demonstrations. The IT laboratory sessions are used to implement and test solutions to given exercises. An electronic discussion forum is provided for you to discuss questions you may not have asked in class, and an electronic notice board is used to keep you informed about the module. You have weekly exercises to complete and group work is encouraged; you are expected to demonstrate your completed exercises during the laboratory classes. You are required to use your freelance time to complete your work or reinforce your understanding of a particular topic.
Relational and NoSQL Databases
You develop your ability to design and implement database applications to meet business needs. A case study is used to follow the system development life cycle, and you develop a server database application from inception to implementation for a real world scenario.
The module investigates the issues and technologies associated with implementing and supporting databases and the services that are needed to maintain and access a repository of data. Investigations are undertaken in a number of areas including data modelling, data management and approaches that support the modelling and visualisation of data for a range of use views.
Software Design Patterns
You study object oriented design and examine a number of design principles that lead to better quality code, and a set of design patterns that solve commonly occurring software problems. In the second half of the module, you are be introduced to concurrency, middleware and software architecture. This is a very practical module that encourages you to adopt agile software development methods.
Optional work placement year
Work placement
You have the option to spend one year in industry learning and developing your skills. We encourage and support you with applying for a placement, job hunting and networking.
You gain experience favoured by graduate recruiters and develop your technical skillset. You also obtain the transferable skills required in any professional environment, including communication, negotiation, teamwork, leadership, organisation, confidence, self-reliance, problem-solving, being able to work under pressure, and commercial awareness.
Many employers view a placement as a year-long interview, therefore placements are increasingly becoming an essential part of an organisation's pre-selection strategy in their graduate recruitment process. Benefits include:
· improved job prospects
· enhanced employment skills and improved career progression opportunities
· a higher starting salary than your full-time counterparts
· a better degree classification
· a richer CV
· a year's salary before completing your degree
· experience of workplace culture
· the opportunity to design and base your final-year project within a working environment.
If you are unable to secure a work placement with an employer, then you simply continue on a course without the work placement.
Final-year core modules
Agent Based Systems
You investigate how to develop computer models and software simulations of the many naturally occurring systems that act in unexpected ways. Systems producing large-scale behaviours that are not predictable from their component parts; those ecosystems, human social organisations and financial markets which generate novel, emergent phenomena that are not easily explained by traditional computing methods.
The module gives a theoretical understanding of these systems but also provides strong practical skills in implementing models and simulations.
Applied Machine Learning
Machine learning is an important topic in the area of artificial intelligence. The methodology involves building a model of a given task based on observations to make predictions about unseen data. Such techniques are useful when the desired output is known - but an algorithm is unknown, or when a system needs to adapt to unforeseen circumstances. Machine learning draws significantly from statistics and probability theory as (though the applications are many and various) the fundamental task is to make inferences from data samples. The contribution from other areas of computer science is also essential for efficient task representation, learning algorithms, and inferences procedures. You also gain an exposure to a breadth of tasks and techniques in machine learning.
Computing Project
You complete a large scale piece of work, under the supervision of an academic staff member. You produce a substantial artefact relating to the computing field, and complete your report and viva consisting of a presentation, demonstration and discussion of the artefact.
You are guided to develop an appropriate sense of work-discipline coupled with a professional outlook. You take responsibility for the planning and execution of an extended piece of work including the consideration of associated legal, social, ethical and professional issues. You are able to explore in depth a chosen subject area, and thereby demonstrate your ability to analyse, synthesise, and creatively apply what has already been studied on the programme while demonstrating critical and evaluative skills and professional awareness.
Deep Learning and Applications
Deep learning is a subset of machine learning that uses artificial neural networks models with many layers to solve problems in computer vision, speech recognition, natural language process, language translation and others. The main advantage of deep learning is the ability to learn representations from raw data such as images or text without the need to hand engineer features that represent the input for the model and deliver very high accuracy.
Deep learning is now the main technology behind many breakthroughs in object and voice recognition including Google Deep Mind AlphaGo, Siri (Apple), Alexa (Amazon) and Face recognition (Facebook). This module covers various deep learning methods and their practical applications.
Internet of Things
The Internet of Things (IoT) incorporates a number of technologies, including wireless sensor networks, embedded systems, pervasive computing, machine learning, context awareness and distributed systems. IoT has been successfully applied to environmental monitoring, smart homes, industrial controls and digital cities.
You cover a mixture of theoretical and practical topics such as coverage of the range of IoT-enabled devices, low power communications, and processing data gained from the IoT. You also gain experience of practical skills required for the programming of IoT devices.