Computer Science MEng (Hons)

Key information


  • Course length: 4 years
  • UCAS code: G401
  • Year of entry: 2020
  • Typical offer: A-level : AAB / IB : 35 / BTEC : D*DD
comp-sci-2

Module details

Programme Year One

All single subject degree programmes offered by the Department of Computer Science share the same modules in Year One. You will take one of the first two compulsory modules listed below, plus all the remaining compulsory modules. 

Year One Compulsory Modules

  • Analytic Techniques for Computer Science (COMP116)
    Level1
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    To equip students with an awareness of the range of methodologies that have been brought to bear in the treatment of computational issues.
    To provide practical experience in how various formal approaches can be used to address such issues.

    Learning Outcomes

    (LO1) Students will have a basic understanding of the range of techniques used to analyse and reason about computational settings.

    (LO2) Students will have the ability to solve problems involving the outcome of matrix-vector products as might arise in standard transformations.

    (LO3) Students will have the ability to apply basic rules to differentiate and integrate commonly arising functions.

    (LO4) Students will have a basic understanding of manipulating complex numbers and translating between different representations.

    (LO5) Students will have a basic understanding of the role of Linear algebra (including eigenvalues and eigenvectors) in computation problems such as web page ranking.

    (S1) Problem Solving - Numeracy and computational skills

    (S2) Problem Solving – Analysing facts and situations and applying creative thinking to develop appropriate solutions.

  • Computer Systems (COMP124)
    Level1
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    To introduce how computers function at the instruction operation level.
    To introduce the relationships between the instruction operation level and both the higher (software) and lower (hardware) levels.
    To introduce students to the structure and functionality of modern operating systems.
    To explain how the principal components of computer-based systems perform their functions and how they interact with each other.

    Learning Outcomes

    (LO1) Describe the structure and operation of computer hardware at the register transfer level.

    (LO2) Implement/reason about simple algorithms at the level of machine code.

    (LO3) Describe the overall structure and functionality of a modern operating system and its interactions with computer hardware and user processes.

    (LO4) Construct/reason about programs that involve the management of concurrent processes.

    (LO5) Explain at a simple level the operation and organisation of compilers.

    (S1) Numeracy/computational skills - problem solving

  • Data Structures and Algorithms (COMP108)
    Level1
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting60:40
    Aims

    To introduce the notation, terminology, and techniques underpinning the study of algorithms.
    To introduce basic data structures and associated algorithms.
    To introduce standard algorithmic design paradigms and efficient use of data structures employed in the development of efficient algorithmic solutions.

    Learning Outcomes

    (LO1) Be able to describe the principles of and apply a variety of data structures and their associated algorithms;

    (LO2) Be able to describe standard algorithms, apply a given pseudo code algorithm in order to solve a given problem, and carry out simple asymptotic analyses of algorithms;

    (LO3) Be able to describe and apply different algorithm design principles and distinguish the differences between these principles;

    (LO4) Be able to choose and justify the use of appropriate data structures to enable efficient implementation of algorithms;

    (S1) Numeracy/computational skills - Reason with numbers/mathematical concepts

    (S2) Numeracy/computational skills - Problem-solving

    (S3) Critical thinking and problem-solving - Critical analysis

  • Designing Systems for the Digital Society (COMP107)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:100
    Aims

    To provide the students with a wide-ranging understanding of the discipline of computing, and to introduce students to concepts of professional ethics as well as social and legal aspects of computing.
    To equip the students with the communication, time and project management, and employability skills required for a computing professional.
    To allow the students to gain an understanding of the importance of appropriate and efficient system design strategies, at the conceptual and logical levels, and how to communicate them effectively to stakeholders.

    Learning Outcomes

    (LO1) Identify and appraise professional, ethical, legal and social issues related to the work of a professional within the IT industry with particular regard to the BCS Codes of Conduct and Practice.

    (LO2) Recognise employability and entrepreneurship skills that prepare students to undertake paid work experience during the course of their degree or independently

    (LO3) Identify, describe and discuss economic, historical, organisational, research, ethical, and social aspects of computing as a discipline and computing in practice;

    (LO4) Understand the importance of requirement analysis, and demonstrate the ability to extract, analyse and organise end-user requirements;

    (LO5) Identity and apply principles of system design, including database conceptual design, using ER and UML design methodologies;

    (LO6) Recognise database logical design principles, and issues related to database physical design;

    (S1) Effectively communicate in writing and orally in a variety of styles, including the presentation of coherent and persuasive intellectual accounts/arguments

    (S2) Develop the ability to work effectively in group to design a project from conception to deployment

    (S3) Develop the ability to manage time effectively and to organise own skills

    (S4) Reflect on their own learning and professional development by producing a professional portfolio recording the skills developed in the course, which they can enhance in subsequent modules

  • Foundations of Computer Science (COMP109)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims

    To introduce the notation, terminology, and techniques underpinning the discipline of Theoretical Computer Science.
    To provide the mathematical foundation necessary for understanding datatypes as they arise in Computer Science and for understanding computation.
    To introduce the basic proof techniques which are used for reasoning about data and computation.
    To introduce the basic mathematical tools needed for specifying requirements and programs

    Learning Outcomes

    (LO1) Understand how a computer represents simple numeric data types; reason about simple data types using basic proof techniques;

    (LO2) Interpret set theory notation, perform operations on sets, and reason about sets;

    (LO3) Understand, manipulate and reason about unary relations, binary relations, and functions;

    (LO4) Apply logic to represent mathematical statement and digital circuit, and to recognise, understand, and reason about formulas in propositional and predicate logic;

    (LO5) Apply basic counting and enumeration methods as these arise in analysing permutations and combinations.

    (S1) Application of numeracy – manipulation of numbers, general mathematical awareness and its application in practical contexts.

    (S2) Problem-solving – analysing facts and situations and applying creative thinking to develop appropriate solutions.

  • Introduction to Artificial Intelligence (COMP111)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims

    To provide an introduction to AI through studying search problems, reasoning under uncertainty, knowledge representation, planning, and learning in intelligent systems.
    To equip the students with an awareness of the main applications of AI and the history, philosophy, and ethics of AI.

    Learning Outcomes

    (LO1) Students should be able to identify and describe the characteristics of intelligent agents and the environments that they can inhabit.

    (LO2) Students should be able to identify, contrast and apply to simple examples the basic search techniques that have been developed for problem-solving in AI.

    (LO3) Students should be able to apply to simple examples the basic notions of probability theory that have been applied to reasoning under uncertainty in AI.

    (LO4) Students should be able to identify and describe logical agents and the role of knowledge bases and logical inference in AI.

    (LO5) Students should be able to identify and describe some approaches to learning in AI and apply these to simple examples.

    (S1) Problem-solving / critical thinking/ creativity analysing facts and situations and applying creative thinking to develop appropriate solutions.

    (S2) Literacy application of literacy, ability to produce clear, structured written work and oral literacy - including listening and questioning.

  • Introduction to Programming (COMP101)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:100
    Aims

    To introduce concepts and principles of problem solving by computer, and the construction of appropriate algorithms for the solution of problems. To demonstrate the principles underlying the design of high level programming languages. To give students experience and confidence in the use of a high level programming language to implement algorithms.

    Learning Outcomes

    (LO1) Be able to implement, compile, test and run Java programmes, comprising more than one class, to address a particular software problem.

    (LO2) Understand how to include arithmetic operators and constants in a Java program.

    (LO3) Be able to make use of members of classes found in the Java API (such as the Math class).

    (LO4) Demonstrate the ability to employ various types of selection constructs in a Java program.

    (LO5) Demonstrate the ability to employ repetition constructs in a Java program.

    (LO6) Be able to employ a hierarchy of Java classes to provide a solution to a given set of requirements.

    (LO7) Demonstrate the ability to use simple data structures like arrays in a Java program.

    (LO8) Specific learning outcomes are listed above.General learning outcomes: An understanding of the principles and practice of object oriented analysis and design in the construction of robust, maintainable programs which satisfy their requirements; A competence to design, write, compile, test and execute straightforward programs using a high level language; An appreciate of the principles of object oriented programming; An awareness of the need for a professional approach to design and the importance of good documentation to the finished programs.

    (S1) Communication (oral, written and visual) - Report writing

    (S2) Time and project management - Personal organisation

    (S3) Critical thinking and problem solving - Critical analysis

    (S4) Numeracy/computational skills - Reason with numbers/mathematical concepts

  • Object-oriented Programming (COMP122)
    Level1
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting0:100
    Aims

    To develop understanding of object-oriented software methodology, in theory and practice.
    To further develop sound principles in software design and software development.
    To understand basic concepts of software testing principles and software version control systems. 

    Learning Outcomes

    (LO1) Describe object hierarchy structure and how to design such a hierarchy of related classes.

    (LO2) Describe the concept of object polymorphism in theory and demonstrate this concept in practice.

    (LO3) Design and code iterators for collection-based data management.

    (LO4) Design simple unit tests using appropriate software tools.

    (LO5) Demonstrate concepts of event-driven programming and be able to design simple GUI to demonstrate this understanding.

    (LO6) Identify and describe the task and issues involved in the process of developing interactive products for people, and the techniques used to perform these tasks.

    (S1) Communication (oral, written and visual) - Report Writing

    (S2) Time and project management - Personal organisation

    (S3) Critical thinking and problem-solving - Critical analysis

    (S4) Numeracy/computational skills - Reason with numbers/mathematical concepts

  • Programming Language Paradigms (COMP105)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting25:75
    Aims

    To introduce the functional programming paradigm, and to compare and contrastit with the imperative programming paradigm.
    To explore the common techniques that are employed to solve problems in a functional way.

    Learning Outcomes

    (LO1) Describe the imperative and functional programming paradigms including the differences between them.

    (LO2) Apply recursion to solve algorithmic tasks.

    (LO3) Apply common functional programming idioms such as map, filter and fold.

    (LO4) Write programs using a functional programming language.

    (S1) Time and project management - Personal organisation

    (S2) Communication (oral, written and visual) - Report writing

    (S3) Critical thinking and problem-solving - Critical analysis

    (S4) Numeracy/computational skills - Reason with numbers/mathematical concepts

Programme Year Two

In Year Two you continue to expand your knowledge of concepts and skills related to the core areas of software development and database development while starting to engage with subject material directly related to computer science.

You will take the compulosry modules listed below plus one module from the optional modules list.

Year Two Compulsory Modules

  • Complexity of Algorithms (COMP202)
    Level2
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    To demonstrate how the study of algorithmics has been applied in a number of different domains. To introduce formal concepts of measures of complexity and algorithms analysis. To introduce fundamental methods in data structures and algorithms design. To make students aware of computationally hard problems and possible ways of coping with them.

    Learning Outcomes

    (LO1) At the conclusion of the module students should have an appreciation of the diversity of computational fields to which algorithmics has made significant contributions.

    (LO2) At the conclusion of the module students should  have fluency in using basic data structures (queues, stacks, trees, graphs, etc) in conjunction with classical algorithmic problems (searching, sorting, graph algorithms, security issues) and be aware of basic number theory applications, etc.

    (LO3) At the conclusion of the module students should  be familiar with formal theories providing evidence that many important computational problems are inherently intractable, e.g., NP-completeness.

  • Database Development (COMP207)
    Level2
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims

    To introduce students to the problems arising from concurrency in databases, information security considerations and how they are solved.
    To introduce students to the problems arising from the integration of heterogeneous sources of information and the use of semi-structured data.
    To introduce students to non-relational databases and the economic factors involved in their selection.
    To introduce students to techniques for analyzing large amounts of data, the security issues and commercial factors involved with them.

    Learning Outcomes

    (LO1) At the end of this module the student will be able to identify and apply the principles underpinning transaction management within DBMS and the main security issues involved in securing transaction;

    (LO2) Demonstrate an understanding of advanced SQL topics;

    (LO3) Illustrate the issues related to Web technologies as a semi-structured data representation formalism;

    (LO4) Identify the principles underlying object relational models and the economic factors in their uptake and development;

    (LO5) Interpret the main concepts and security aspects in data warehousing, and the concepts of data mining and commercial considerations involved in adopting the paradigm.

    (S1) Problem Solving - Numeracy and computational skills

    (S2) Problem solving – Analysing facts and situations and applying creative thinking to develop appropriate solutions.

  • Group Software Project (COMP208)
    Level2
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting0:100
    Aims

    Students will work in small groups to produce a working software system.
    The deliverables and working methods will be prescribed. The aims of the module are:
    1. to provide experience of group working;
    2. to provide experience of all aspects of the development of a moderately sized software system;
    3. to prepare students for their individual projects in the third year;
    4. to consolidate material from the first semester of the second year, in particular COMP201 and COMP207.

    Learning Outcomes

    (LO1) Show an awareness of the issues involved in working as part of a team.

    (LO2) Demonstrate improved personal, interpersonal and communication skills.

    (LO3) Demonstrate a more in depth understanding of the software development process.

    (LO4) An ability to specify the requirements of a software system.

    (LO5) Demonstrate some experience in the design of a software system.

    (LO6) Demonstrate practical experience in the implementation and testing of a moderately sized software system.

    (LO7) Show an awareness of the typical project management issues.

    (LO8) Understanding of the process and role of software documentation.

    (LO9) Experience in the writing of a sizeable report on a software project.

    (S1) Better interpersonal skills

    (S2) Awareness of the benefits of structuring the development process

    (S3) Better knowledge of the main design techniques

  • Software Engineering I (COMP201)
    Level2
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting60:40
    Aims

    The module is intended to develop an understanding of the problems associated with the development of significant computing systems (that is, systems that are too large to be designed and developed by a single person,and are designed to be used by many users) and to appreciate the techniques and tools necessary to develop such systems efficiently, in a cost-effective manner.

    Learning Outcomes

    (LO1) Realise the problems in designing and building significant computer systems;

    (LO2) Understand the need to design systems that fully meet the requirements of the intended users including functional and non functional elements;

    (LO3) Appreciate the need to ensure that the implementation of a design is adequately tested to ensure that the completed system meets the specifications;

    (LO4) Be fully aware of the principles and practice of an O-O approach to the design and development of computer systems;

    (LO5) Be able to apply these principles in practice;

    (LO6) Produce O-O requirements and design documentation in UML which demonstrates the features of good design such as loose coupling and high cohesion;

    (LO7) Be able to demonstrate how to effectively  implent an O-O design in an O-O languuge such as Java or Python;

    (S1) Information skills - Information accessing:[Locating relevant information] [Identifying and evaluating information sources]

    (S2) Skills in using technology - Using common applications (work processing, databases, spreadsheets etc.)

    (S3) Time and project management - Personal action planning

Year Two Optional Modules

  • Advanced Object Oriented C Languages (COMP282)
    Level2
    Credit level7.5
    SemesterSecond Semester
    Exam:Coursework weighting0:100
    Aims

    1.    To introduce the notion of object orientation and illustrate the differences between unmanaged and managed coding techniques, through the introduction of two object-oriented variants of C; namely C++ and C#. 2.    To familiarise students with the use of advanced software development tools, and to illustrate the synergies between the use of graphical interface building tools and the use of programming languages. 3.    To introduce the notion of design patterns and their application to challenging programming problems, and to demonstrate their use in event-driven programming tasks.

    Learning Outcomes

    (LO1) Demonstrate the differences in the utilisation of object oriented principles in various C-based programming languages;

    (LO2) Develop applications using both C++ and C# within an industry-level development environment;

    (LO3) Demonstrate an understanding of the role of design patterns within software development;

    (LO4) Apply appropriate design patterns when developing event-driven, GUI-based applications, and to utilise graphical GUI development tools as part of this development.

    (S1) Learning Skills: Identify differences in the utilisation of object oriented principles in various C-based programming languages.

    (S2) Employability Skills: Develop applications within an industry-level development environment.

    (S3) Research Skills: Analyse existing programs.

    (S4) Research Skills: Design new structured programs.

    (S5) Research Skills: Debug and test programs.

  • Applied Database Management (COMP283)
    Level2
    Credit level7.5
    SemesterSecond Semester
    Exam:Coursework weighting0:100
    Aims

    To utilise Relational Algebra to develop efficient Database Query Language code.

    To provide practical experience of designing relational databases.

    To provide the skills to manage and maintain a database system using commercial Database Management Systems such as Microsoft SQL Server.

    To introduce the skills required to maintain data integrity and durability across database systems.

    Learning Outcomes

    (LO1) At the end of the module the student should be able to: design and structure an efficient scalable database system.

    (LO2) Implement and configure a database system.

    (LO3) Maintain a secure and durable database.

    (LO4) Describe, illustrate and explain the concept of linked databases and data migration techniques.

    (S1) Learning Skills: Demonstrate typical database system design tasks.

    (S2) Employability Skills: Demonstrate the ability to develop sensible plans for disaster recovery and business continuity.

  • Artificial Intelligence (COMP219)
    Level2
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims

    To provide an introduction to the topic of Artificial Intelligence (AI) through studying problem-solving, knowledge representation, planning, and learning in intelligent systems.
    To provide a grounding in the AI programming language Prolog.

    Learning Outcomes

    (LO1) At the end of this module, students should be able to: identify or describe the characteristics of intelligent agents and the environments that they can inhabit;

    (LO2) identify, contrast and apply to simple examples the major search techniques that have been developed for problem-solving in AI;

    (LO3) distinguish the characteristics, and advantages and disadvantages, of the major knowledge representation paradigms that have been used in AI, such as production rules, semantic networks, propositional logic and first-order logic;

    (LO4) solve simple knowledge-based problems using the AI representations studied;

    (LO5) identify or describe approaches used to solve planning problems in AI and apply these to simple examples;

    (LO6) identify or describe the major approaches to learning in AI and apply these to simple examples;

    (LO7) identify or describe some of the major applications of AI;

    (LO8) understand and write Prolog code to solve simple knowledge-based problems.

    (S1) Numeracy/computational skills - Problem solving

    (S2) Numeracy/computational skills - Reason with numbers/mathematical concepts

  • Computer Aided Software Development (COMP285)
    Level2
    Credit level7.5
    SemesterSecond Semester
    Exam:Coursework weighting0:50
    Aims

    To introduce students to a range of techniques and tools used in modern, large-scale industrial software development. To describe how the development and deployment of high quality, robust products is supported through software develpment tools.

    Learning Outcomes

    (LO1) Perform software development tasks using the techniques of Automated Testing, Continuous Integration and Test Driven Programming

    (LO2) Use Ant, JUnit and Eclipse both individually and jointly as tools for Automated Testing, Continuous Integration and Test Driven Programming

    (S1) Information skills - Information accessing:[Locating relevant information] [Identifying and evaluating information sources]

    (S2) Skills in using technology - Using common applications (work processing, databases, spreadsheets etc.)

    (S3) Time and project management - Personal action planning

  • Computer-based Trading in Financial Markets (COMP226)
    Level2
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    To develop an understanding of financial markets at the level of individual trades. To provide an overview of the range of different computer-based trading applications and techniques. To introduce the key issues with using historical high-frequency financial data for developing computer-based trading strategies. To provide an overview of statistical and computational methods for the design of trading strategies and their risk management. To develop a practical understanding of the design, implementation, evaluation, and deployment of trading strategies.

    Learning Outcomes

    (LO1) At the end of the module students will be expected to: Have an understanding of market microstructure and its impact on trading. Understand the spectrum of computer-based trading applications and techniques, from profit-seeking trading strategies to execution algorithms. Be able to design trading strategies and evaluate critically their historical performance and robustness. Understand the common pitfalls in developing trading strategies with historical data. Understand the benchmarks used to evaluate execution algorithms. Understand methods for measuring risk and diversification at the portfolio level.

  • Computer Networks (COMP211)
    Level2
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims

    1. To introduce networked computer systems in general, and the Internet in particular. 2. To introduce the basic principles that govern their operation. 3. To introduce the design and organisation principles of successful computer networks. 4. To introduce the key protocols and technologies that are used in the Internet.

    Learning Outcomes

    (LO1) Students should be able to describe and justify the OSI Reference Model and the key protocols that govern the Internet.

    (LO2) Students should be able to program applications and protocols for computer networks.

    (LO3) Students should be able to illustrate and debate the use and need of cryptographic techniques in nework security.

    (S1) Problem Solving - Numeracy and computational skills

    (S2) Problem solving – analysing facts and situations and applying creative thinking to develop appropriate solutions.

  • Decision, Computation and Language (COMP218)
    Level2
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims

    To introduce formal concepts of automata, grammars and languages.
    To introduce ideas of computability and decidability.
    To illustrate the importance of automata, formal language theory and general models of computation in Computer Science and Artificial Intelligence.

    Learning Outcomes

    (LO1) Be familiar with the relationships between language as an object recognised by an automaton and as a set generated by a formal grammar.

    (LO2) Be able to apply standard translations between non-deterministic and deterministic finite automata.

    (LO3) Be familiar with the distinct types of formal grammar (e.g. Chomsky hierarchy) and the concept of normal forms for grammars.

    (LO4) Be aware of the limitations (with respect to expressive power) of different automata and grammar forms.

    (LO5) Understand the distinction between recursive and recursively enumerable languages.

    (S1) Numeracy/computational skills - Reason with numbers/mathematical concepts

    (S2) Numeracy/computational skills - Problem solving

    (S3) Information skills - Information accessing:[Locating relevant information] [Identifying and evaluating information sources]

  • Distributed Systems (COMP212)
    Level2
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    This module is intended to provide an understanding of the technical issues involved in the design, analysis and evaluation of modern distributed systems and algorithms. Besides conveying the central principles involved in designing distributed systems, this module also aims to introduce the students to the main principles of distributed computing and of algorithms for distributed tasks.

    Learning Outcomes

    (LO1) An appreciation of the main principles underlying distributed systems: processes, communication, naming, synchronisation, consistency, fault tolerance, and security.

    (LO2) Familiarity with some of the main paradigms in distributed systems: object-based systems, file systems, and coordination-based systems.

    (LO3) Knowledge and understanding of the essential facts, concepts, principles and theories relating to Computer Science in general, and Distributed Computing in particular.

    (LO4) A sound knowledge of the criteria and mechanisms whereby traditional and distributed systems can be critically evaluated and analysed to determine the extent to which they meet the criteria defined for their current and future development.

    (LO5) An in depth understanding of the appropriate theory, practices, languages and tools that may be deployed for the specification, design, implementation and evaluation of both traditional and Internet related distributed computer systems.

    (S1) Numeracy/computational skills - Problem solving

  • Planning Your Career (COMP221)
    Level2
    Credit level7.5
    SemesterFirst Semester
    Exam:Coursework weighting0:100
    Aims

    This module aims to prepare students enteringthe work environment by providing them with the skills required to secure eitheran internship or a graduate job.

    Learning Outcomes

    (LO1) Students will gain the ability to critically reflect on andevaluate their skills in relation to prospective employers’ requirements andidentify their development needs;

    (LO2) Students will gain the ability to research career opportunities relevant to their degree specialism in relation to their own career aspirations using a range of media and approaches;

    (S1) Students will gain the ability to produce timely and effective applications

    (S2) Students will demonstrate effective oral and written communication skills appropriate to a role in IT

  • Principles of C and Memory Management (COMP281)
    Level2
    Credit level7.5
    SemesterSecond Semester
    Exam:Coursework weighting0:100
    Aims

    1. To introduce the issues of memory and memory management within the context of a system-level procedural programming language (C), and debugging tools that facilitate the inspection of state, stack and heap usage during code execution.
    2. To familiarise students with a contemporary system-level procedural programming language (C).
    3. To demonstrate principles, provide indicative examples, develop problem-solving abilities and provide students with experience and confidence in the use of algorithms with consideration and management of memory usage within a contemporary software setting.

    Learning Outcomes

    (LO1) At the end of the module the student should be able to: analyse and explain the use of memory resources within software applications, including memory usage on the stack during function calls and heap-based dynamic memory management.

    (LO2) Use debugging tools to inspect memory usage, and to assist in the development of software.

    (LO3) Develop applications within the C programming language, including use of command-line driven C development tools.

    (LO4) Deal with underlying memory-based issues in using dynamic data-structures through the implementation and management of at least one familiar datastructure using the C programming language.

    (S1) IT skills

    (S2) Problem solving/ critical thinking/ creativity analysing facts and situations and applying creative thinking to develop appropriate solutions.

  • Principles of Computer Games Design and Implementation (COMP222)
    Level2
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    1. To introduce the main issues surrounding the computer games architecture.
    2. To introduce the fundamental concepts underpinning computer games development (game physics, game artificial intelligence, content generation).
    3. To provide practical experience of software engineering associated with computer games.

    Learning Outcomes

    (LO1) Have an understanding of different design issues related to computer games development: game structure, game engine, physics engine;

    (LO2) Have an appreciation of the fundamental concepts associated with game development: game physics, game artificial intelligence, content generation;

    (LO3) Have the ability to implement a simple game using an existing game engine.

    (S1) Problem solving

    (S2) Application of numeracy

    (S3) Application of information technology tools

  • Scripting Languages (COMP284)
    Level2
    Credit level7.5
    SemesterSecond Semester
    Exam:Coursework weighting0:100
    Aims

    To provide students with an understanding of the nature and role of scripting languages.
    To introduce students to some popular scripting languages and their applications.
    To enable students to write simple scripts using these languages for a variety of applications.

    Learning Outcomes

    (LO1) Develop server-side web-based applications using an appropriate scripting language, with emphasis on concurrent use of such applications.

    (LO2) Develop computer-based or client-side web-based applications using an appropriate scripting language.

    (S1) Effective information retrieval skills (including use of the WWW and the evaluation of information retrieved from such sources).

    (S2) The ability to use general IT facilities effectively.

    (S3) The ability to manage their own learning and development, and time management and organisational skills.

  • Software Development Tools (COMP220)
    Level2
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    To introduce students to a range of techniques and tools, beginning to be used in modern, large-scale industrial software development.
    To provide coverage of tools already being used in industrial settings.
    To describe how the development and deployment of high quality, robust products is supported through software development tools.

    Learning Outcomes

    (LO1) Express the general ideas, advantages, and methods of using software development tools

    (LO2) Use Ant, JUnit and Eclipse both individually and jointly as tools for Automated Testing, Continuous Integration and Test Driven Programming

    (LO3) Solve problems related to Automated Testing, Continuous Integration and Test Driven Programming using software development tools JUnit, Ant and Eclipse.

    (S1) Information skills - Information accessing:[Locating relevant information] [Identifying and evaluating information sources]

    (S2) Skills in using technology - Using common applications (work processing, databases, spreadsheets etc.)

    (S3) Time and project management - Personal action planning

Programme Year Three

A major part of your studies in Year Three will be an individual project in computer science. The project will provide you with an opportunity to work in a guided but independent fashion to explore a substantial computer science problem in depth, making practical use of principles, techniques and methodologies acquired elsewhere in the programme.

In addition, you take a selection of modules from the optional modules list.

Year Three Compulsory Modules

  • Honours Year Computer Science Project (COMP390)
    Level3
    Credit level30
    SemesterWhole Session
    Exam:Coursework weighting0:100
    Aims

    1. To give students the opportunity to work in a guided but independent fashion to explore a substantial electronic commerce problem in depth, making practical use of principles, techniques and methodologies acquired elsewhere in the course. 2. To give experience of carrying out a large piece of individual work and in producing a dissertation. 3. To enhance communication skills, both oral and written.

    Learning Outcomes

    (LO1) To specify a substantial problem, and produce a plan to address the problem

    (LO2) To manage their time effectively so as to carry out their plan

    (LO3) To locate and make use of information relevant to their project

    (LO4) To design a solution to a substantial problem

    (LO5) To implement and test their solution

    (LO6) To evaluate in a critical fashion the work they have done, and to place it in the context of related work

    (LO7) To prepare and deliver a formal presentation

    (LO8) To prepare and deliver a demonstrable artefact

    (LO9) To structure and write a dissertation

    (S1) Problem solving skills

    (S2) Organisational skills

    (S3) Communication skills

    (S4) IT skills

    (S5) Ethical awareness

    (S6) Lifelong learning skills

    (S7) Leadership

Year Three Optional Modules

  • Biocomputation (COMP305)
    Level3
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:20
    Aims

    To introduce students to some of the established work in the field of neural computation.

    To highlight some contemporary issues within the domain of neural computation with regard to biologically-motivated computing particularly in relation to multidisciplinary research.

    To equip students with a broad overview of the field of evolutionary computation, placing it in a historical and scientific context.

    To emphasise the need to keep up-to-date in developing areas of science and technology and provide some skills necessary to achieve this.

    To enable students to make reasoned decisions about the engineering of evolutionary ('selectionist') systems.

    Learning Outcomes

    (LO1) Account for biological and historical developments neural computation

    (LO2) Describe the nature and operation of MLP and SOM networks and when they are used

    (LO3) Assess the appropriate applications and limitations of ANNs

    (LO4) Apply their knowledge to some emerging research issues in the field

    (LO5) Understand how selectionist systems work in general terms and with respect to specific examples

    (LO6) Apply the general principles of selectionist systems to the solution of a number of real world problems

    (LO7) Understand the advantages and limitations of selectionist approaches and have a considered view on how such systems could be designed

    (S1) Improving own learning/performance - Reflective practice

    (S2) Improving own learning/performance - Self-awareness/self-analysis

    (S3) Critical thinking and problem solving - Critical analysis

    (S4) Critical thinking and problem solving - Evaluation

    (S5) Critical thinking and problem solving - Synthesis

    (S6) Critical thinking and problem solving - Problem identification

    (S7) Critical thinking and problem solving - Creative thinking

    (S8) Research skills - All Information skills

    (S9) Research skills - Awareness of /commitment to academic integrity

    (S10) Numeracy/computational skills - Numerical methods

    (S11) Numeracy/computational skills - Problem solving

    (S12) Skills in using technology - Information accessing

  • Communicating Computer Science (COMP335)
    Level3
    Credit level15
    SemesterWhole Session
    Exam:Coursework weighting0:100
    Aims

    1. To enable key transferrable skills such as communication and team working within an educational context
    2. To provide first-hand experience of developing and delivering lessons in Computer Science at Key Stage 4
    3. To encourage and inspire a new generation of Computer Science teachers, and provide role models for pupils who visit the university as part of its widening participation agenda

    Learning Outcomes

    (LO1) Understand the UK education system, including Key Stages and the National Curriculum in Computing.

    (LO2) Appreciate the widening participation and outreach agenda of the university.

    (LO3) Apply appropriate safeguarding protocols when working with young people.

    (LO4) Communicate a computer science topic in a classroom setting, using a delivery style appropriate to the age and ability of pupils.

    (LO5) Critically reflect on the effectiveness of an activity given feedback from those who took part.

  • Complex Information Networks (COMP324)
    Level3
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    To understand the software development opportunities offered by the emergence of these networks, through the study of information retrieval algorithms like the one used by Google. To understand the application development possibilities offered by social networks environments like Facebook. To understand how elementary graph-theoretic concepts may help understanding the structure and certain properties (like the "mysterious" small world phenomenon, or the resilience to failures) of such networks.

    Learning Outcomes

    (LO1) At the end of this module students should be able to explain the most common metrics and techniques of complex network analysis and classification.

    (LO2) Explain the most recent applications of these techniques in the area of social and technological networks.

    (LO3) Be able to identify the main issues, techniques, and tools needed for the development of applications in the area of social networks.

    (S1) Learning Skills: Design appropriate social network solutions and interface or extend the designs of existing social network infrastructures.

    (S2) Learning Skills: Identify and analyse complex network characteristics.

    (S3) Learning Skills: Identify and interpret domain and societal requirements for the deployment of network solutions.

    (S4) Learning Skills: Combine knowledge from other algorithmic course to solve specific network design and analysis problems.

    (S5) Employability Skills: Evaluate existing software systems and infrastructures

    (S6) Employability Skills: Present a technological solution within a broader context

    (S7) Research Skills: Establish the potential of social networking technologies in specific contexts and domains.

    (S8) Research Skills: Articulate appropriate frameworks for the analysis of particular social networks.

  • Computational Game Theory and Mechanism Design (COMP326)
    Level3
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    To provide an understanding of the inefficiency arising from uncontrolled, decentralized resource allocation.

    To provide a foundation for modelling various mechanism design problems together with their algorithmic aspects.

    To provide the tools and paradigms for the design and analysis of efficient algorithms/mechanisms that are robust in environments that involve interactions of selfish agents.

    To review the links and interconnections between algorithms and computational issues with selfish agents.

    Learning Outcomes

    (LO1) Have a systematic understanding of current problems and important concepts in the field of computational game theory.

    (LO2) Ability to quantify the inefficiency of equilibria.

    (LO3) The ability to formulate mechanism design models or network games for the purpose of modeling particular applications.

    (LO4) The ability to use, describe and explain appropriate algorithmic paradigms and techniques in context of a particular game-theoretic or mechanism design problem.

    (S1) Critical Thinking and Problem Solving - Critical Analysis

    (S2) Information Skills - Critical Reading

    (S3) Numeracy - Computational Skills - Problem Solving

    (S4) Critical thinking and problem solving - Creative thinking

    (S5) Numeracy/computational skills - Reason with numbers/mathematical concepts

  • Efficient Sequential Algorithms (COMP309)
    Level3
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims

    To learn some advanced topics in the design and analysis of efficient sequential algorithms, and a few key results related to the study of their complexity.

    Learning Outcomes

    (LO1) At the conclusion of the module students should have an understanding of the role of algorithmics within Computer Science.

    (LO2) Have expanded their knowledge of computational complexity theory.

    (LO3) Be aware of current research-level concerns in the field of algorithm design.

    (S1) Problem Solving - Numeracy and computational skills

    (S2) Problem solving – Analysing facts and situations and applying creative thinking to develop appropriate solutions.

  • Formal Methods (COMP313)
    Level3
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting100:0
    Aims

    As more complex computational systems are used within critical applications, it is becoming essential that these systems are formally specified.  Such specifications are used to give a precise and unambiguous description of the required system. While this is clearly important in criticial systems such as industrial process management and air/spacecraft control, it is also becoming essential when applications involving E-commerce and mobile code are developed. In addition, as computational systems become more complex in general, formal specification can allow us to define the key characteristics of systems in a clear way and so help the development process.

    Formal specifications provide the basis for verification of properties of systems. While there are a number of ways in which this can be achieved, the model-checking approach is a practical and popular way to verify the temporal properties of finite-state systems. Indeed, such temporal verification is widely used within the design of critical parts of integrated circuits, has recently been used to verify parts of the control mechanism for one of NASA’s space probes, and is now beginning to be used to verify general Java programs.

    Learning Outcomes

    (LO1) Upon completing this module, a student will: understand the principles of standard formal methods, such as Z; understand the basic notions of temporal logic and its use in relation to reactive systems; understand the use of model checking techniques in the verification of reactive systems; be aware of some of the current research issues related to formal methods.

  • Image Processing (ELEC319)
    Level3
    Credit level7.5
    SemesterFirst Semester
    Exam:Coursework weighting100:0
    Aims

    To introduce the basic concepts of digital image processing and pattern recognition.

    Learning Outcomes

    (LO1) After successful completion of the module, the student should have: An understanding of main principles of digital image processing, and its relation to pattern recognition in images, object detection,  tracking and machine vision. An appreciation of the areas of applications for various image enhancement techniques.

    (LO2) After successful completion of the module, the student should have: An understanding of the standard methods of image manipulation, representation and information extraction.

    (S1) On successful completion of the module, students should be able to show experience and enhancement of the following key skills: Independent learning Problem solving and design skills

    (S2) After successful completion of the module, the student should have: The ability to apply relevant image enhancement techniques to a given problem. The necessary mathematical skills to develop standard image processing algorithms.

  • Knowledge Representation and Reasoning (COMP304)
    Level3
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting75:25
    Aims

    1. To introduce Knowledge Representation as a research area; 2. To give a complete and critical understanding of the notion of representation languages and logics.; 3. To study description logics and their use; 4. To study epistemic logics and their use; 5. To study the trade-off between expressive power and computational complexity of reasoning.

    Learning Outcomes

    (LO1) Translate between English and the languages of modal and description logics.

    (LO2) Explain whether formulas of propositional, modal and description logic are true or valid.

    (LO3) Analyse simple scenarios involving knowledge, and represent them in modal and description logics.

    (LO4) Apply formal proof methods in description logics.

    (S1) Problem Identification

    (S2) Critical Analysis

    (S3) Solution Synthesis

    (S4) Evaluation of Problems and Solutions

  • Mobile Computing (COMP327)
    Level3
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting60:40
    Aims

    To provide guidelines, design principles and experience in developing applications for small, mobile devices, including an appreciation of context and location aware services.

    To develop an appreciation of interaction modalities with small, mobile devices (including interface design for non-standard display surfaces) through the implementation of simple applications and use cases.

    To introduce wireless communication and networking principles, that support connectivity to cellular networks, wireless internet and sensor devices.

    To understand the use of transaction and e-commerce principles over such devices to support mobile business concepts.

    Learning Outcomes

    (LO1) At the end of the module, the student will have a working understanding of the characteristics and limitations of mobile hardware devices including their user-interface modalities.

    (LO2) The ability to develop applications that are mobile-device specific and demonstrate current practice in mobile computing contexts.

    (LO3) A comprehension and appreciation of the design and development of context-aware solutions for mobile devices.

    (S1) Problem Solving - Numeracy and computational skills

    (S2) Problem solving – analysing facts and situations and applying creative thinking to develop appropriate solutions.

  • Multi-agent Systems (COMP310)
    Level3
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting100:0
    Aims

    To introduce the student to the concept of an agent and multi-agent systems, and the main applications for which they are appropriate.

    To introduce the main issues surrounding the design of intelligent agents.

    To introduce the main issues surrounding the design of a multi-agent society.

    To introduce a contemporary platform for implementing agents and multi-agent systems.

    Learning Outcomes

    (LO1) Understand the notion of an agent, how agents are distinct from other software paradigms (eg objects) and understand the characteristics of applications that lend themselves to an agent-oriented solution; Understand the key issues associated with constructing agents capable of intelligent autonomous action, and the main approaches taken to developing such agents; Understand the key issues in designing societies of agents that can effectively cooperate in order to solve problems, including an understanding of the key types of multi-agent interactions possible in such systems Understand the main application areas of agent-based solutions, and be able to develop a meaningful agent-based system using a contemporary agent development platform.

  • Neural Networks (ELEC320)
    Level3
    Credit level7.5
    SemesterSecond Semester
    Exam:Coursework weighting100:0
    Aims

    Understand the basic structures and the learning mechanisms underlying neural networks within the field of artificial intelligence and examine how synaptic adaptation can facilitate learning and how input to output mapping can be performed by neural networks.

    Obtain an overview of linear, nonlinear, separable and non separable classification as well as supervised and unsupervised machine learning.

    Learning Outcomes

    (LO1) Learning  the advantages and main characteristics of neural networks in relation to traditional methodologies. Also, familiarity with different neural networks structures and their learning mechanisms.

    (LO2) Understanding of the neural network learning processes and their most popular types, as well as  appreciation of how neural networks can be applied to artificial intelligence problems.

    (S1) On successful completion of this module the student should be able to pursue further study in artificial intelligence and more advanced types of neural networks.

    (S2) On successful completion of this module the student should be able to analyse numerically the mathematical properties of most major network types and apply them to artificial intelligence problems.

    (S3) On successful completion of this module the student should be able to approach methodically artificial intelligence problems and understand the principal mathematics of learning systems.

  • Ontologies and Semantic Web (COMP318)
    Level3
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting80:20
    Aims

    To provide guidelines, concepts and models for designing and evaluating applications utilising advanced web technologies To introduce Artificial Intelligence and Semantic Web techniques which can be applied to the application of advanced web technologies To introduce the notion of semantic web applications intended to be used by software.

    Learning Outcomes

    (LO1) At the conclusion of the module students shouldHave an understanding of the basic formal methods and techniques for designing and implementing advanced web applications

    (LO2) Have an appreciation for Artificial Intelligence and Semantic Web research related to advanced web technology applications

    (LO3) Be able to apply specific methods and techniques in the design and development of an application of advanced web technology for a case study

    (S1) Information skills - trustability of information sources

    (S2) Numeracy/computational skills - Problem solving

    (S3) Information skills - Critical thinking

  • Optimisation (COMP331)
    Level3
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting75:25
    Aims

    To provide a foundation for modelling various continuous and discrete optimisation problems.
    To provide the tools and paradigms for the design and analysis of algorithms for continuous and discrete optimisation problems.
    Apply these tools to real-world problems.
    To review the links and interconnections between optimisation and computational complexity theory.   
    To provide an in-depth, systematic and critical understanding of selected significant topics at the intersection of optimisation, algorithms and (to a lesser extent) complexity theory, together with the related research issues. 

    Learning Outcomes

    (LO1) A conceptual understanding of current problems and techniques in the field of optimisation.

    (LO2) The ability to formulate optimisation models for the purpose of modelling particular applications.

    (LO3) The ability to use appropriate algorithmic paradigms and techniques in context of a particular optimisation model. 

    (S1) Critical thinking and problem solving - Critical analysis

  • Robotics and Autonomous Systems (COMP329)
    Level3
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:100
    Aims

    To introduce the student to the concept of an autonomous agent.

    To introduce the key approaches developed for decision-making in autonomous systems.

    To introduce a contemporary platform for programming agents and multiagent systems.

    To introduce the key issues surrounding the development of autonomous robots.

    To introduce a contemporary platform for experimental robotics.

    Learning Outcomes

    (LO1) At the end of the module the student will be able to explain the notion of an agent, how agents are distinct from other software paradigms (e.g., objects), and judge the characteristics of applications that lend themselves to an agent-oriented solution;

    (LO2) identify the key issues associated with constructing agents capable of intelligent autonomous action;

    (LO3) describe the main approaches taken to developing such agents;

    (LO4) use a contemporary agent programming platform (e.g., AgentSpeak) for developing significant software or hardware-based agents;

    (LO5) identify key issues involved in building agents that must sense and act within the physical world;

    (LO6) program and deploy autonomous robots for specific tasks.

    (S1) Problem Solving - Numeracy and computational skills

    (S2) Problem solving – Analysing facts and situations and applying creative thinking to develop appropriate solutions.

  • Software Engineering II (COMP319)
    Level3
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting100:0
    Aims

    The overall aim of this module is to introduce students to a range of advanced, near-research level topics in contemporary software engineering. The actual choice of topics will depend upon the interests of the lecturer and the topics current in the software engineering research literature at that time. The course will introduce issues from a problem (user-driven) perspective and a technology-driven perspective – where users have new categories of software problems that they need to be solved, and where technology producers create technologies that present new opportunities for software products. It will be expected that students will read articles in the software engineering research literature, and will discuss these articles in a seminar-style forum.

    Learning Outcomes

    (LO1) At the end of the module, the student will: Understand the key problems driving research and development in contemporary software engineering (eg the need to develop software for embedded systems).

    (LO2) Be conversant with approaches to these problems, as well as their advantages, disadvantages, and future research directions.

    (LO3) Understand the key technological drivers behind contemporary software engineering research (eg the increased use of the Internet leading to the need to engineer systems on and for the web).

    (LO4) Be able to present, analyse, and give a reasoned critique of articles in the software engineering research literature.

    (LO5) Be able to read and understand articles in the research literature of software engineering.

  • Technologies for E-commerce (COMP315)
    Level3
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting100:0
    Aims

    To introduce the environment in which e-commerce takes place, the main technologies for supporting e-commerce, and how these technologies fit together.

    To introduce security as a major issue in secure e-commerce, and to provide an overview of security issues.

    To introduce encryption as a means of ensuring security, and to describe how secure encryption can be delivered.

    To introduce issues relating to privacy.

    To introduce auction protocols and negotiation mechanisms as emerging e-commerce technologies.

    Learning Outcomes

    (LO1) Upon completing this module, a student will: understand the main technologies behind e-commerce systems and how these technologies interact; understand the security issues which relate to e-commerce; understand how encryption can be provided and how it can be used to ensure secure commercial transactions; understand implementation aspects of e-commerce and cryptographic systems; have an appreciation of privacy issues; and understand auction protocols and interaction mechanisms.

Programme Year Four

You will join with the MSc programme for students with a computer science first degree on taught postgraduate modules. In addition, you will undertake a research-oriented group project in the first semester and a research-oriented individual project in the second semester.

You will also select modules from the optional modules list.

Year Four Compulsory Modules

  • Meng Group Project (COMP591)
    LevelM
    Credit level30
    SemesterFirst Semester
    Exam:Coursework weighting0:100
    Aims

    To give students the opportunity to work in a group, in a guided but independent fashion, on a substantial problem that allows to show innovation and/or creativity and allows to make practical use of principles, techniques and methodologies acquired elsewhere in the programme. To give experience of carrying out a large piece of group work involving the synthesis of advanced information, ideas and practices in order to provide a quality solution together with an critical evaluation of the process and the solution. To enhance communication skills, both oral and written, in particular through collaboratively producing a report that documents the conduct of the project, the solution produced and giving a critical evalution of process and solution.

    Learning Outcomes

    (LO1) Work effectively and cooperatively within a team, taking on various roles within the team, on a substantial problem that allows to show innovation and/or creativity and allows to make practical use of principles, techniques and methodologies acquired elsewhere in the programme.

    (LO2) Specify formally a problem, showing awareness of the wider context and identification of issues that such context might cause, and produce a plan to address this problem.

    (LO3) Manage their time effectively both individually as well as a team so as to carry out a project plan.

    (LO4) Locate and synthesise general and research information on concepts, ideas, and practices, relevant to a given project.

    (LO5) Undertake research on their own on a substantial Computer Science problem and to devise as a team an efficient solution using an appropriate methodology.

    (LO6) Evaluate in a critical fashion the work the group has done, and to place it in the context of related work;.

    (LO7) Prepare and deliver formal presentations, including, where appropriate, an overview of the methodology used, the design of a solution, and the demonstration of software.

    (LO8) Collaboratively produce a report describing the conduct of the project, the solution produced and giving a critical evalution of process and solution.

    (S1) Communication (oral, written and visual) - Presentation skills – oral

    (S2) Communication (oral, written and visual) - Presentation skills - written

    (S3) Communication (oral, written and visual) - Influencing skills – argumentation

    (S4) Working in groups and teams - Group action planning

    (S5) Working in groups and teams - Leadership

    (S6) Research skills - All Information skills

    (S7) Research skills - Ethical awareness

    (S8) Personal attributes and qualities - Assertiveness

    (S9) Personal attributes and qualities - Flexibility/Adaptability

  • Meng Individual Project (COMP592)
    Level3
    Credit level30
    SemesterSecond Semester
    Exam:Coursework weighting0:0
    Aims

    To give students the opportunity to work individually, in a guided but independent fashion, on a substantial problem that allows to show innovation and/or creativity and allows to make practical use of principles, techniques and methodologies acquired elsewhere in the programme.
    To give experience of carrying out a large piece of individual work involving the synthesis of advance information, ideas and practices in order to provide a quality solution together with an critical evaluation of the process and the solution.
    To enhance communication skills, both oral and written, in particular through producing a dissertation that documents the conduct of the project, the solution produced and giving a critical evalution of process and solution.

    Learning Outcomes

    (LO1) At the end of this module students should be able to: work effectively as an individual on a substantial problem that allows to show innovation and/or creativity and allows to make practical use of principles, techniques and methodologies acquired elsewhere in the programme.

    (LO2) Specify formally a problem, showing awareness of the wider context and identification of issues that such context might cause, and produce a plan to address this problem.

    (LO3) Manage their time effectively so as to carry out a project plan.

    (LO4) Locate and synthesise general and research information on concepts, ideas, and practices, relevant to a given project.

    (LO5) Undertake research on their own on a substantial Computer Science problem and to devise an efficient solution using an appropriate methodology.

Year Four Optional Modules

  • Advanced Algorithmic Techniques (COMP523)
    LevelM
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:24
    Aims

    To provide a sound foundation concerning the design and analysis of advanaced discrete algorithms.
    To provide a critical rational concerning advanced complexity theory and algorithmics.
    To provide an in-depth, systematic and critical understanding of selected significant issues at the forefront of research explorations in the design and analysis of discrete algorithms.

    Learning Outcomes

    (LO1) Describe the following classes of algorithms and design principles associated with them: recursive algorithms, graph (search-based) algorithms, greedy algorithms, algorithms based on dynamic programming, network flow (optimisation) algorithms, approximation algorithms, randomised algorithms, distributed and parallel algorithms.

    (LO2) Illustrate the above mentioned classes by examples from classical algorithmic areas, current research and applications.

    (LO3) Identify which of the studied design principles are used in a given algorithm taking account of the similarities and differences between the principles.

    (LO4) Apply the studied design principles to produce efficient algorithmic solutions to a given problem taking account of the strengths and weaknesses of the applicable principles.

    (LO5) Outline methods of analysing correctness and asymptotic performance of the studied classes of algorithms, and apply them to analyse correctness and asymptotic performance of a given algorithm.

    (S1) Critical thinking and problem solving - Critical analysis

    (S2) Critical thinking and problem solving - Evaluation

    (S3) Critical thinking and problem solving - Problem identification

    (S4) Critical thinking and problem solving - Creative thinking

    (S5) Numeracy/computational skills - Reason with numbers/mathematical concepts

    (S6) Numeracy/computational skills - Problem solving

  • Applied Algorithmics (COMP526)
    LevelM
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting75:25
    Aims

    The main aim of this module is to lay down a strong context for research explorations in the field of algorithms. This is done through a rigorous study of selected algorithmic solutionswith application to related fields requiring analysis of large data (bioinformatics, networking, data compression, etc). This will be done by provision of the rationale for the use of algorithmic design and analysis methods, and also an in-depth, systematic and critical study of several important algorithmic challenges residing on the border of the theory of abstract algorithms and engineering of applied algorithmic solutions.

    Learning Outcomes

    (LO1) Critical awareness of algorithmic problems and as well as research issues in the context of engineering of efficient algorithmic solutions.

    (LO2) Clear understanding of the relation (including differences) between the goals in the design of efficient abstract and applied algorithmic solutions.

    (LO3) Ability to understand and assimilate research literature relating to the application of algorithmic techniques.

    (LO4) Ability to undertake small software projects.

    (LO5) Ability to communicate (within and outside of Algorithms/CS community) problems related to efficiency of algorithmic solutions

    (S1) Critical thinking and problem solving - Critical analysis

    (S2) Critical thinking and problem solving - Problem identification

    (S3) Critical thinking and problem solving - Evaluation

    (S4) Critical thinking and problem solving - Creative thinking

    (S5) Numeracy/computational skills - Problem solving

  • Big Data Analysis (COMP529)
    LevelM
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting60:40
    Aims

    To introduce the student to middleware often used in Big Data analytics.
    To introduce the student to implementing algorithms using such middleware.

    Learning Outcomes

    (LO1) Understanding of algorithmic approaches for handling batch and streaming analysis.

    (LO2) Understanding of middleware that can be used to enable algorithms to scale up to analysis of large datasets.

    (LO3) Understanding of the impact of the middleware on how algorithms are articulated.

    (S1) Numeracy/computational skills - Reason with numbers/mathematical concepts

    (S2) Communication (oral, written and visual) - Following instructions/protocols/procedures

  • Computational Intelligence (COMP575)
    Level1
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting100:0
    Aims

    Understand the basic structures and the learning mechanisms underlying neural networks within the field of artificial intelligence and examine how synaptic adaptation can facilitate learning and how input to output mapping can be performed by neural networks. Obtain an overview of linear, nonlinear, separable and non separable classification as well as supervised and unsupervised mapping. Understand the benefit of adopting naturally inspired techniques to implement optimisation of complex systems and acquire the fundamental knowledge in various evolutionary techniques. Become familiar with the basic concepts of systems optimisation and its role in natural and biological systems and entities.

    Learning Outcomes

    (LO1) Learning  the advantages and main characteristics of neural networks in relation to traditional methodologies. Also, familiarity with different neural networks structures and their learning mechanisms.

    (LO2) Appreciation of the advantages of evolutionary-related approaches for optimisation problems and their advantages compared to traditional methodologies. Also, understanding the different techniques of evolutionary optimisation for discrete and continuous configurations

    (LO3) Understanding of the needs for genetic encoding and modelling for solving optimisation problems and familiarisation with the evolutionary operators and their performance.

    (LO4) Understanding of the neural network learning processes and their most popular types, as well as  appreciation of how neural networks can be applied to artificial intelligence problems.

    (S1) On successful completion of this module the student should be able to pursue further study in artificial intelligence as well as more advanced types of neural networks and evolutionary optimisation and bio-inspired techniques.

    (S2) On successful completion of this module the student should be able to analyse numerically the mathematical properties of most major network types and apply them to artificial intelligence problems. Also, the student should be able to appreciate and understand the suitability of evolutionary optimisation in systems where classical methods cannot be effective.

    (S3) On successful completion of this module the student should be able to approach methodologically artificial intelligence problems and bio-inspired algorithms in general and understand the principal mathematics of learning systems and the fundamental principles governing evolutionary optimisation techniques.

  • Data Mining and VIsualisation (COMP527)
    LevelM
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting75:25
    Aims

    To provide an in-depth, systematic and critical understanding of some of the current research issues at the forefront of the academic research domain of data mining.

    Learning Outcomes

    (LO1) A critical awareness of current problems and research issues in Data Mining.

    (LO2) A comprehensive understanding of current advanced scholarship and research in data mining and how this may contribute to the effective design and implementation of data mining applications.

    (LO3) The ability to consistently apply knowledge concerning current data mining research issues in an original manner and produce work which is at the forefront of current developments in the sub-discipline of data mining.

    (LO4) A conceptual understanding sufficient to evaluate critically current research and advanced scholarship in data mining.

    (S1) Critical thinking and problem solving - Problem identification

    (S2) Critical thinking and problem solving - Critical analysis

  • Knowledge Representation (COMP521)
    LevelM
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting75:25
    Aims

    To introduce Knowledge Representation as a research area.
    To give a complete and critical understanding of the notion of representation languages and logics.
    To study modal logics and their use.
    To study description logic and its use.
    To study epistemic logic and its use.
    To study methods for reasoning under uncertainty

    Learning Outcomes

    (LO1) Demonstrate a critical understanding of the languages of modal and description logics by translating between English and those languages.

    (LO2) Exhibit a comprehensive understanding of the semantics of modal and description logics by arguing whether formulas of propositional, modal and description logic are true or valid.

    (LO3) Analyse scenarios involving knowledge, and represent them in modal and description logics.

    (LO4) Have a deep understanding of formal proof methods and apply them to modal and description logics.

    (S1) Problem Identification

    (S2) Critical Analysis

    (S3) Solution Synthesis

    (S4) Evaluation of Problems and Solutions

  • Machine Learning and Bioinspired Optimisation (COMP532)
    LevelM
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting75:25
    Aims

    In this module we focus on learning agents that interact with an initially unknown world. Since the world is dynamic this module will put strong emphasis on learning to deal with sequential data unlike many other machine learning courses. The aims can be summarised as:
    To introduce and give an overview to state of the art bio-inspired self-adapting methods. 
    To enable students to not only learn to build models with reactive input/output mappings but also build computer programs that sense and perceive their environment, plan, and make optimal decisions. 
    To familiarise students with multi-agent reinforcement learning, swarm intelligence, deep neural networks, evolutionary game theory, artificial immune systems and DNA computing.
    To demonstrate principles of bio-inspired methods, provide indicative examples, develop problem-solving abilities and provide students with experience to apply the learnt methods in real-world problems.

    Learning Outcomes

    (LO1) A systematic understanding of bio-inspired algorithms that can be used for autonomous agent design and complex optimisation problems.

    (LO2) In depth insight in  the mathematics of biologically inspired machine learning and optimisation methods.

    (LO3) A comprehensive understanding of the benefits and drawbacks of the various methods.

    (LO4) Demonstrate knowledge of using the methods in real-world applications (e.g. logistic problems).

    (LO5) Practical assignments will lead to hands on experience using tools as well as coding of own algorithms.

  • Multi-core and Multi-processor Programming (COMP528)
    LevelM
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:40
    Aims

    To provide students with a deep, critical and systematic understanding of key issues and effective solutions for parallel programming for systems with multi-core processors and parallel architectures.
    To develop students appreciation of a variety of approaches to parallel programming, including using MPI, OpenMP and CUDA. 
    To develop the students skills in parallel programming using MPI, OpenMP and CUDA.
    To develop the students skills in parallelization of existing serial code.

    Learning Outcomes

    (LO1) At the end of the module students should be able to:  Explain the concepts of multi-core processors and systems and parallel architectures,  their advantages and challenges of their programming.

    (LO2) Appraise the differences between various programming techniques and programming patterns available for parallel programming for multi-core systems and parallel architectures. 

    (LO3) Design parallel multi-threaded programs using the most appropriate for a particular application approach, using one of MPI, OpenMP, CUDA, or a combination of thereof.  

    (LO4) Design and implement reasonably sophisticated parallel multi-threaded programs demonstrating reasonable scalability on multi-core and parallel systems  using MPI, OpenMP, or CUDA, or the combination of thereof. 

    (LO5) Analyse and evaluate the efficiency and scalability of parallel multi-threaded programs for multi-core parallel systems.

    (S1) Improving own learning/performance - Personal action planning

    (S2) Communication (oral, written and visual) - Presentation skills

    (S3) Communication (oral, written and visual) - Report writing

    (S4) Critical thinking and problem solving

    (S5) Information skills - Critical reading

    (S6) Numeracy/computational skills - Reason with numbers/mathematical concepts

    (S7) Numeracy/computational skills - Problem solving

  • Privacy and Security (COMP522)
    LevelM
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:24
    Aims

    The aims of this module are: to introduce students to the major problems and solution approaches in the area of computer and Internet privacy, confidentiality and security. to provide a theoretical framework for subsequent research in these challenging areas.

    Learning Outcomes

    (LO1) At the end of the module, students should understand the main problems in security, confidentiality and privacy in conputers and in networks, and the reasons for their importance.

    (LO2) At the end of the module, students should understand the main approaches adopted for their solution and/or mitigation, together with the strengths and weaknesses of each of these approaches

    (LO3) At the end of the module, students should understand the main encryption algorithms and protocols

    (LO4) At the end of the module, students should appreciate the application of encryption algorithms to secure messaging, key distribution and exchange, authentication and electronic payment systems

    (LO5) At the end of the module, students should understand the use of epistemic logics for formal modeling of security and privacy protocols.

    (LO6) At the end of the module, students should understand the legal and ethical issues related to securit, confidentiality and privacy.

    (S1) Adaptability

    (S2) Problem solving skills

    (S3) Numeracy

    (S4) IT skills

    (S5) Commercial awareness

    (S6) Ethical awareness

    (S7) Lifelong learning skills

  • Reasoning About Action and Change (COMP525)
    LevelM
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting75:24
    Aims

    1. Give the student a feel for several formalisms that deal with change
    2. Show how logics can be used to specify and verify dynamic systems
    3. Give students a deeper knowledge of the semantics of such systems
    4. Develop awareness of the usual trade-off between expressivity and complexity of logical languages.

    Learning Outcomes

    (LO1) Provide formal specifications, using a logical language, of informal problem descriptions.

    (LO2) Verify simple properties of models.

    (LO3) Produce simple logical proofs.

    (LO4) Understand how temporal logics relate to each other.

    (LO5) Understand and use model checkers.

    (LO6) Understand and be able to explain and fomulate properties (such as "safety", "fairness" and "liveness") of systems and be able to formulate simple instances of them.

    (S1) Numeracy/computational skills - Reason with numbers/mathematical concepts

    (S2) Numeracy/computational skills - Problem solving

  • Safety and Dependability (COMP524)
    LevelM
    Credit level15
    SemesterSecond Semester
    Exam:Coursework weighting75:24
    Aims

    1. To provide a critical and in-depth understanding of all aspects of software safety and dependability; including issues realting to security, reliability and trustworthiness.
    2. To provide a broad understanding of the state-of-the-art software engineering techniques currently used to address safety and dependability issues.
    3. To provide an overview of the contemporary research issues relating to software safety and dependability.

    Learning Outcomes

    (LO1) At the end of the module, a student will understand some of the problems associated with the use of computer software in critical applications where safety, security and trust are issues.

    (LO2) At the end of the module, a student will understand some of the contemporary mechanisms for ensuring dependability and reliability.

    (LO3) At the end of the module, a student will understand a variety of approaches to the design and development of safe and dependable systems.

    (LO4) At the end of the module, a student will understand formal verification techniques in relation to the assessment of safety and dependability.

    (LO5) At the end of the module, a student will  be aware of some of the contemporary research problems in the areas of safety, security, dependability and trust.

    (S1) Working in groups and teams - Group action planning

    (S2) Skills in using technology - Using common applications (work processing, databases, spreadsheets etc.)

    (S3) Numeracy/computational skills - Reason with numbers/mathematical concepts

    (S4) Numeracy/computational skills - Problem solving

    (S5) Communication skills - Presenting

    (S6) Problem solving - Co-designing a program and a correctness proof

    (S7) Problem solving - Model (MDP) design analysis

    (S8) Business and customer awareness - Brief discussion of the cost of software bugs and the cost of applying formal techniques

    (S9) Information Technology (IT) skills - Formulating (probabilistic) models as Markov chains and decision processes, and using of-the-shelf tools for their analysis

The programme detail and modules listed are illustrative only and subject to change.


Teaching and Learning

Teaching is by a mix of formal lectures, small group tutorials and supervised laboratory-based practical sessions. Students also undertake individual and group projects. Key problem solving skills and employability skills, like presentation and teamwork skills, are developed throughout the programme.