15 credits
Level 1
First Term
Students will be exposed to the basic principles of computer programming, e.g. fundamental programming concepts, algorithms, and maths (e.g. logic, set theory, graphs). The course consists of lectures where the principles are systematically developed; as the course does not presuppose knowledge of these principles, we start from basic intuitions. In addition to the lectures, there will be weekly practicals to work with the concepts. Understanding the principles behind computer programming gives one the framework to learn new programming concepts, adapt to changing circumstances, and engage in theoretical research in Computing Science.
15 credits
Level 1
First Term
15 credits
Level 1
First Term
This course will introduce you to programming and software development for the Web using the object-oriented scripting language Ruby. It will teach you how to develop software that underpins database-driven interactive Web and cloud applications, and give you a broad knowledge of the basics needed for professional software development such as testing and version control. The course uses examples based on real world applications. You will also learn a limited range of core theoretical concepts such as structured programming, variable declaration, conditional statements, iterative constructs, object-oriented programming and meta-programming.
15 credits
Level 1
Second Term
Beginning with digital logic gates and progressing to the design of combinational and sequential circuits, this course use these fundamental building blocks as the basis for what follows: the design of an actual MIPS microprocessor. In addition, students will get hands on experience on programming Intel 8086 assembly language which is the inner language spoken by the processor. By the end of the course, students will have a top-to-down understanding of how a micropressor works. The course is taught without prerequisites; students are taught with plenty of exercises from lectures, tutorials, practical and tests every week.
15 credits
Level 1
Second Term
15 credits
Level 1
Second Term
This course will introduce you to programming and software development for the Web using the object-oriented scripting language Ruby. It will teach you how to develop software that underpins database-driven interactive Web and cloud applications, and give you a broad knowledge of the basics needed for professional software development such as testing and version control. The course uses examples based on real world applications. You will also learn a limited range of core theoretical concepts such as structured programming, variable declaration, conditional statements, iterative constructs, object-oriented programming and meta-programming.
15 credits
Level 2
First Term
15 credits
Level 2
First Term
15 credits
Level 2
First Term
15 credits
Level 2
Second Term
This course looks at why a computer system that interacts with human beings needs to be usable. It covers a set of techniques that allow usability to be taken into account when a system is designed and implemented, and also a set of techniques to assess whether usability has been achieved. Weekly practical sessions allow students to practice these techniques. The assessed coursework (which is normally carried out by groups of students) gives an opportunity to go through the design process for a concrete computer system, with a particular focus on ensuring usability.
15 credits
Level 2
Second Term
This course will introduce the fundamental features of modern programming languages and to equip students with necessary skills for the critical evaluation of existing and future programming languages. Additionally, students study the formal representation of syntax and semantics of programming languages, as well as mechanisms for the lexical and syntactic analysis of programs. Students will be exposed to programming languages from three specific paradigms, namely, object-oriented, functional and logic programming.
15 credits
Level 2
Second Term
This course builds on the previous course so that you can build more complex database driven web applications using a suitable framework to guide you. This also continues to round out your computing science craftsmanship skills with more emphasis on learning appropriate practices such as version source control, testing and group collaboration, so that you can build good habits, which will help your further during your degree.
15 credits
Level 2
Second Term
This course provides the knowledge needed to understand, design and compare algorithms. By the end of the course, a student should be able to create or adapt algorithms to solve problems, determine an algorithm's efficiency, and be able to implement it. The course also introduces the student to a variety of widely used algorithms and algorithm creation techniques, applicable to a range of domains. The course will introduce students to concepts such as pseudo-code and computational complexity, and make use of proof techniques as well as the student’s programming skills.
15 credits
Level 3
First Term
15 credits
Level 3
First Term
Knowledge Representation (KR) is concerned with how knowledge can be represented symbolically and manipulated in an automated way by reasoning programs. In fact, KR has long been considered central to AI because it is a significant factor in determining the success of knowledge-based systems.
This course describes the formalisation of knowledge and its use in knowledge-based systems. It follows the whole "life-cycle" of knowledge, from the initial identification of relevant expertise, through its capture, representation (in ontology and /or rule languages), use (based on reasoning), evaluation, and reuse.
15 credits
Level 3
First Term
This course discusses core concepts and architectures of operating systems, in particular the management of processes, memory and storage structures. Students will learn about the scheduling and operation of processes and threads, problems of concurrency and means to avoid race conditions and deadlock situations. The course will discuss virtual memory management, file systems and issues of security and recovery. In weekly practical session, students will gain a deeper understanding of operating system concepts with verious programming exercises.
15 credits
Level 3
First Term
This course surveys many of the core problems of robotics, and their solutions. By the end of the course, a student should be able to program robots that move in predictable ways, overcoming environmental uncertainties; that can interpret their surroundings; and that can plan their motion in order to achieve goals. Topics covered include robot motion; image processing and computer vision; localisation methods and computer based search and planning. Apart from using programming skills to implement robot algorithms, the students will learn how to mathematically model robots in order to understand why robot algorithms are designed as they are.
15 credits
Level 3
First Term
Students will develop large commercial and industrial software systems as a team-based effort that puts technical quality at centre stage. The module will focus on the early stage of software development, encompassing team building, requirements specification, architectural and detailed design, and software construction. Groupwork (where each team of students will develop a system selected using a business planning exercise) will guide the software engineering learning process. Teams will be encouraged to have an active, agile approach to problem solving through the guided study, evaluation and integration of practically relevant software engineering concepts, methods, and tools.
15 credits
Level 3
Second Term
This course provides a basic-level introduction to computability - what can and cannot be computed in principle - via the notion of a Turing Machine. The course explores concepts of infinity, recognisability, and decidability, which are crucial to computability. The course assumes some initial familiarity with a programming language along with the basics of set theory, predicate logic, and finite state machines. A functional programming language is used as a way to get 'hands on' with some of the concepts.
15 credits
Level 3
Second Term
15 credits
Level 3
Second Term
This course discusses core concepts of distributed systems, such as programming with distributed objects, multiple threads of control, multi-tire client-server systems, transactions and concurrency control, distributed transactions and commit protocols, and fault-tolerant systems. The course also discusses aspects of security, such as cryptography, authentication, digital signatures and certificates, SSL etc. Weekly practical sessions cover a set of techniques for the implementation of distributed system concepts such as programming with remote object invocation, thread management and socket communication.
15 credits
Level 3
Second Term
This course provides insight into the business reasons for large software systems such as loyalty card systems, backend systems integrating firms and their suppliers and larges systems that integrate payroll, finance and operational parts of a business. You also learn the entrepreneurial aspects of business during the practical sessions where you explore and develop your own business application idea using service design and lean startup approaches centred around customer development, which you will find useful in any future work. This course is open to anyone across the university and requires no programming experience.
15 credits
Level 3
Second Term
30 credits
Level 3
Second Term
15 credits
Level 3
Second Term
15 credits
Level 4
First Term
15 credits
Level 4
First Term
15 credits
Level 4
First Term
Does this new algorithm improve query performance? Will this protocol ensure our system is robust to attack? How does response time vary with server load? Understanding behaviour – the performance of a task by a computing system in an environment – is critical in both industrial and scientific practice. In this course, you will conduct an individual research project into the behaviour of a computing system. You will develop knowledge and understanding of rigorous methods to: explore computing system behaviour; identify questions about behaviour; design experiments to answer those questions; analyse experimental results; and report on the outcomes of your research.
15 credits
Level 4
First Term
15 credits
Level 4
First Term
Computational Intelligence covers a wide range of issues that developed in parallel with, or in competition to, symbolic AI. The major constituents of the field are bio-inspired computing – which deals with an ever expanding number of biologically related techniques – and fuzzy logic – which deals with reasoning under conditions of vagueness. In this course we will explore a number of topics that are core to Computational Intelligence (e.g. neural nets and evolutionary computing) and these will lead into some state-of-the-art approaches (such as fuzzy model-based reasoning and learning).
90 credits
Level 4
First Term
60 credits
Level 4
First Term
30 credits
Level 4
Second Term
45 credits
Level 4
Second Term
60 credits
Level 4
Second Term
45 credits
Level 4
Second Term
This course consists of a supervised individual project; it provides students the experience of investigating a real problem in the intersection of computing science and physics, exploring solutions and technologies.
120 credits
Level 4
Second Term
60 credits
Level 4
Second Term
60 credits
Level 4
Second Term
15 credits
Level 5
First Term
120 credits
Level 5
First Term
We have detected that you are have compatibility mode enabled or are using an old version of Internet Explorer. You either need to switch off compatibility mode for this site or upgrade your browser.