Computer Science with Software Development BSc (Hons) Add to your prospectus

  • Offers study abroad opportunities Offers study abroad opportunities
  • Opportunity to study for a year in China Offers a Year in China

Key information


  • Course length: 3 years
  • UCAS code: G610
  • Year of entry: 2018
  • Typical offer: A-level : ABB, providing the applicant is studying at least one of the following subjects: Mathematics, Further Mathematics, Physics, Computer Science, Computing. / IB : 33 / 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 1.

You take the following modules:

Either

  • Introduction to Programming (COMP101) [Note: *not* Java]

or

  • Programming Language Paradigms (COMP105) (depending on prior programming experience)

plus all of

  • Graduates for the Digital Society (COMP107)
  • Foundations of Computer Science (COMP109)
  • Introduction to Artificial Intelligence (COMP111)
  • Data Structures and Algorithms (COMP108)
  • Analytic Techniques for Computer Science (COMP116)
  • Object-Oriented Programming (COMP122)
  • Computer Systems (COMP124)

Year One Compulsory Modules

  • Introduction to Programming (COMP101)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:100
    Aims
    1. To introduce the concepts and principles of problem solving using computational thinking.
    2. To identify and employ algorithms in the solution of identified problems.
    3. To develop sound principles in designing programming solutions to identified problems using appropriate data structures.
    4. To introduce the concepts of implementing solutions in a high level programming language.
    Learning Outcomes

    ​Identify the principles and practice of using high-level programming constructs to solve a problem 

    Use relevant data structures to solve problems 

    Produce documentation in support of a programmed solution 

    ​Use a suitable Integrated Development Environment to carry out Implementation, interpretation/compilation, testing and execution.

    ​Identify appropriate design approaches to formulate a solution to a program

    Design and apply effective test cases

    ​Develop debugging skills to correct a program

    ​Specific learning outcomes are listed above.


    General learning outcomes:

    • An understanding of the principles and practice of 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 procedural programming;
    • An awareness of the need for a professional approach to design and the importance of good documentation to the finished programs.

     

  • 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

    ​Describe the imperative and functional programming paradigms including the differences between them.

    ​Apply recursion to solve algorithmic tasks.

    ​Apply common functional programming idioms such as map, filter, reduce and fold.

    ​Write programs using a functional programming language.

  • Graduates for the Digital Society (COMP107)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting0:100
    AimsTo 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 database design strategies, at the conceptual and logical level, and how to communicate them effectively to stakeholders

    To provide the students with practical experience of database programming, including data manipulation and query in SQL.
    Learning Outcomes

    ​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.

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

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

    Identify and apply principles of database conceptual design using ER and UML design methodologies

    ​Recognise database logical design principles, and issues related to database physical design;

    Use SQL as a data definition and manipulation language, and as a language for querying database

  • Foundations of Computer Science (COMP109)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims
    1. To introduce the notation, terminology, and techniques underpinning the discipline of Theoretical Computer Science.
    2. To provide the mathematical foundation necessary for understanding datatypes as they arise in Computer Science and for understanding computation.
    3. To introduce the basic proof techniques which are used for reasoning about data and computation.
    4. To introduce the basic mathematical tools needed for specifying requirements and programs
    Learning OutcomesUnderstand how a computer represents simple numeric data types; reason about simple data types using basic proof techniques;

    ​Interpret set theory notation, perform operations on sets, and reason about sets;

    ​Understand, manipulate and reason about unary relations, binary relations, and functions;

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

    ​​Apply basic counting and enumeration methods as these arise in analysing permutations and combinations.

  • Introduction to Artificial Intelligence (COMP111)
    Level1
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims1. To provide an introduction to AI through studying search problems, reasoning under uncertainty, knowledge representation, planning, and learning in intelligent systems.

    2. To equip the students with an awareness of the main applications of AI and the history, philosophy, and ethics of AI.
    Learning Outcomes

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

    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.

    ​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.

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

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

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

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

    Learning OutcomesBe able to describe the principles of and apply a variety of data structures and their associated algorithms;

    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;

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

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

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

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

    Learning Outcomes

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

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

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

    Students will have a basic understanding ofmanipulating complex numbers and translating between different representations.

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

  • 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

    ​Describe object hierarchy structure and how to design such a hierarchy of related classes.

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

    ​Design and code iterators for collection-based data management. 

    ​Design simple unit tests using appropriate software tools. 

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

    ​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. 

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

    1.    Tointroduce how computers function at the instruction operation level.

    2.    Tointroduce the relationships between the instruction operation level and boththe higher (software) and lower (hardware) levels

    3.    Tointroduce students to the structure and functionality of modern operating systems.

    4.    Toexplain how the principal components of computer-based systems perform theirfunctions and how they interact with each other.

    Learning Outcomes

    ​Describe the structure and operation of computer hardware at the register transfer level.​

    Implement/reason about simple algorithms at the level of machine code.​

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

    Construct/reason about programs that involve the management of concurrent processes.​

    Explain at a simple level the operation and organisation of compilers.​

Programme Year Two

In Year 2 you continue to expand your knowledge of concepts and skills related to the core areas of software development and database development.

You take the following modules:

  • Software Engineering I (COMP201):  Covers the problems associated with the development of significant (large) software systems and techniques to develop such systems efficiently in a cost-effective manner.
  • Database Development (COMP207): Considers concurrency in databases, the integration of heterogeneous sources of information, non-relational databases, data warehousing and data mining.
  • Software Development Tools (COMP220): You will learn about a range of techniques and software tools for the development of modern, large-scale industrial software.
  • Group Software Project (COMP208): You will work as part of a small team to produce a working computer-based  software systems.

and get at least 30 credits from

  • COMP211       Internet Principles
  • COMP212       Distributed Systems
  • COMP219       Artificial Intelligence
  • COMP281       Principles of C and Memory Management
  • COMP282       Advanced Object Oriented C Languages
  • COMP283       Applied Database Management
  • COMP284       Scripting Languages

Plus select optional module from:

  • COMP202       Complexity of Algorithms
  • COMP218       Decision, Computation and Language
  • COMP220       Software Development Tools
  • COMP221       Planning Your Career
  • COMP222       Principles of Computer Game Design and Implementation
  • COMP226       Computer-Based Trading in Financial Markets

Year Two Compulsory Modules

  • Software Engineering I (COMP201)
    Level2
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    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

    At the end of the module, the student is expected to

    • realise the problems in designing and building significant computer systems;
    • understand the need to design systems that fully meet the requirements of the intended users including functional and non functional elements

    • ​​appreciate the need to ensure that the implementation of a design is adequately tested to ensure that the completed system meets the specifications

    • ​b​e fully aware of the principles and practice of an O-O approach to the design and development of computer systems

    • ​​​​ be able to apply these principles in practice.​​ 

  • Database Development (COMP207)
    Level2
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    Aims
    1. To introduce students to the problems arising from concurrency in databases, information security considerations and how they are solved
    2. To introduce students to the problems arising from the integration of heterogeneous sources of information and the use of semi-structured data;
    3. To introduce students to non-relational databases and the economic factors involved in their selection
    4. To introduce students to techniques for analyzing large amounts of data, the security issues and commercial factors involved with them
    Learning Outcomes

    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;

    ​Demonstrate an understanding of advanced SQL topics;

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

    ​Identify the principles underlying object relational models and the economic factors in their uptake and development;

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

  • 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 OutcomesExpress the general ideas, advantages, and methods of using software development tools​

    ​​Use Ant, JUnit and Eclipse both individually and jointly as tools for Automated Testing, Continuous Integration and Test Driven Programming
    ​Solve problems related to Automated Testing, Continuous Integration and Test Driven Programming using software development tools JUnit, Ant and Eclipse.
  • 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

    ​Show an awareness of the issues involved in working as part of a team.

    ​Demonstrate improved personal, interpersonal and communication skills.

    ​Demonstrate a more in depth understanding of the software development process.

    Specify the requirements of a software system.

    Demonstrate some experience in the design of a software system.

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

    Show an awareness of the typical project management issues.

    Understand the process and role of software documentation.

    Demonstrate some experience in the writing of a sizeable report on a software project.

Year Two Optional Modules

  • Software Engineering I (COMP201)
    Level2
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting80:20
    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

    At the end of the module, the student is expected to

    • realise the problems in designing and building significant computer systems;
    • understand the need to design systems that fully meet the requirements of the intended users including functional and non functional elements

    • ​​appreciate the need to ensure that the implementation of a design is adequately tested to ensure that the completed system meets the specifications

    • ​b​e fully aware of the principles and practice of an O-O approach to the design and development of computer systems

    • ​​​​ be able to apply these principles in practice.​​ 

  • Internet Principles (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

    By the end of this module, students should understand the basic theoretical principles of computer communications networks (eg the notion of band width, Shannon’s law etc);

    ​Understand how the notion of layering and abstraction apply to the design of computer communication networks;

    ​Understand the organisation of the Internet, and how this organisation relates to the OSI seven layer model;

    ​Understand the structure and function of the OSI seven layer model of computer networks;

    ​Understand the principles of the key protocols that govern the Internet.

  • 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 of modern distributed systems. Besides conveying the central principles involved in designing distributed systems, this module also aims to present some of the major current paradigms (see learning outcomes below).

    Learning Outcomes

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

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

     

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

    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.

    ​​

    ​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.

  • Decision, Computation and Language (COMP218)
    Level2
    Credit level15
    SemesterSecond 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​Be familiar with the relationships between language as an object recognised by an automaton and as a set generated by a formal grammar.

    ​Be able to apply standard translations between non-deterministic and deterministic finite automata.

    ​​​Be familiar with the distinct types of formal grammar (e.g. Chomsky hierarchy) and the concept of normal forms for grammars.​
    Be aware of the limitations (with respect to expressive power) of different automata and grammar forms.​
    ​​​Understand the distinction between recursive and recursively enumerable languages​.
  • 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

    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;

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

    ​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;

    ​solve simple knowledge-based problems using the AI representations studied;

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

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

    identify or describe some of the major applications of AI; ​

    understand and write Prolog code to solve simple knowledge-based problems.​

  • Principles of Computer Games Design and Implementation (COMP222)
    LevelQ5
    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

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

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

    ​Have the ability to implement a simple game using an existing game engine.

  • 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

    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.
  • 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

    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;

    ​At the end of the module the student should be able to use debugging tools to inspect memory usage, and to assist in the development of software​;

    ​At the end of the module the student should be able to  develop applications within the C programming language, including use of command-line driven C development tools;

    ​At the end of the module the student should be able to  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.

  • 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 message-based and method-based object-oriented approaches, through the introduction of two Object-oriented variants of C; namely C++ and Objective-C 2.0.
    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 application to event-driven programming tasks.
    Learning Outcomes

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

    ​Develop applications using both C++ and Objective-C 2.0 within an industry-level development environment;

    ​Demonstrate an understanding of the role of design patterns within software development;

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

  • Applied Database Management (COMP283)
    Level2
    Credit level7.5
    SemesterSecond Semester
    Exam:Coursework weighting0:100
    Aims
    1. To utilise Relational Algebra to develop efficient Database Query Language code.
    2. To provide practical experience of designing relational databases;
    3. To provide the skills to manage and maintain a database system using commercial Database Management Systems such as Microsoft SQL Server.
    4. To introduce the skills required to maintain data integrity and durability across database systems.
    Learning Outcomes

    Design and structure an efficient scalable database system.

    Implement and configure a database system.

    ​Maintain a secure and durable database.

    Describe, illustrate and explain the concept of linked databases and data migration technique.
  • 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

    At the end of the module the students should be able to

    compare and contrast languages such as JavaScript, Perl and PHP with other programming languages;

     document and comment applications witten using a scripting language;

    ​rapidly develop simple applications, both computer and web-based, using an appropriate scripting language.

Programme Year Three

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

In addition you take at least four modules from

  • COMP310       Multi-Agent Systems
  • COMP313       Formal Methods
  • COMP318       Advanced Web Technologies
  • COMP319       Software Engineering II
  • COMP323       Introduction to Computational Game Theory
  • COMP327       Mobile Computing
  • COMP329       Robotics and Autonomous Systems

as well as optional modules from

  • COMP304       Knowledge Representation and Reasoning
  • COMP305       Biocomputation
  • COMP309       Efficient Sequential Algorithms
  • COMP315       Technologies for E-Commerce
  • COMP324       Complex Social Networks
  • COMP326       Computational Game Theory and Mechanism Design
  • COMP331       Optimisation
  • COMP335       Communicating Computer Science
  • ELEC319        Image Processing
  • ELEC320        Neural Networks

Year Three Compulsory Modules

  • Honours Year Computer Science Project (COMP390)
    Level3
    Credit level30
    SemesterWhole Session
    Exam:Coursework weighting0:100
    Aims
    • To give students the opportunity to work in a guided but independent fashion to explore a substantial computing problem in depth, making practical use of principles, techniques and methodologies acquired elsewhere in the course.
    • To give experience of carrying out a large piece of individual work and in producing a dissertation.
    • To enhance communication skills, both oral and written.
    Learning Outcomes ​To specify a substantial problem, and produce a plan to address the problem      

    To manage their time effectively so as to carry out their plan

    ​To locate and make use of information relevant to their project

    ​To design a solution to a substantial problem

    ​​​To implement and test their solution
    ​​To evaluate in a critical fashion the work they have done, and to place it in the context of related work
    ​​To prepare and deliver a formal presentation

    ​To prepare and deliver a demonstration of software

    To structure and write a dissertation describing their project​​​​​​​​

Year Three Optional Modules

  • Knowledge Representation and Reasoning (COMP304)
    Level3
    Credit level15
    SemesterFirst Semester
    Exam:Coursework weighting75:24
    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 description logic and their use;​

    • ​To study epistemic logic and its use​

    • ​To study methods for reasoning under uncertainty​

    • Learning Outcomesbe able to explain and discuss the need for formal approaches to knowledge representation in artificial intelligence, and in particular the value of logic as such an approach;​

        ​be able to demonstrate knowledge of the basics of propositional logic​

        ​be able to determine the truth/satisfiability of modal formula;​

        ​be able to perform modal logic model checking on simple examples

        ​​be able to perform inference tasks in description logic


        ​​be able to model problems concenring agents'' knowledge using epistemic logic;


        be able to indicate how updates and other epistemic actions determine changes on epistemic models;

        ​​

        have sufficient knowledge to build "interpreted systems" from a specification, and to verify the "knowledge" properties of such systems; 


        ​be familiar with the axioms of a logic for knowledge of multiple agents;​

        ​be able to model simple problems involving uncertainty, using probability and decision theory;


        ​​​be able to demonstrate knowledge of the basics of probability and decision theory, and their use in addressing problems in knowledge representation.

      • Biocomputation (COMP305)
        Level3
        Credit level15
        SemesterFirst Semester
        Exam:Coursework weighting80:20
        Aims
        1. ​​​​​​T​o introduce students to some of the established work in the field of neural computation.​​
        2. To highlight some contemporary issues within the domain of neural computation with regard to biologically-motivated computing particularly in relation to multidisciplinary research.​
        3. ​To equip students with a broad overview of the field of evolutionary computation, placing it in a historical and scientific context.​
        4. To emphasise the need to keep up-to-date in developing areas of science and technology and provide some skills necessary to achieve this.
        5. ​To enable students to make reasoned decisions about the engineering of evolutionary ("selectionist") systems.​

        Learning OutcomesAccount for biological and historical developments neural computation​

        ​Describe the nature and operation of MLP and SOM networks and when they are used​

        ​Assess the appropriate applications and limitations of ANNs

        ​​Apply their knowledge to some emerging research issues in the field​

        ​Understand how selectionist systems work in general terms and with respect to specific examples​

        ​Apply the general principles of selectionist systems to the solution of a      number of real world problems​

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

      • 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

        At the conclusion of the module students should have an understanding of the role of algorithmics within Computer Science;

          have expanded their knowledge of computational complexity theory;

          be ​aware of current research-level concerns in the field of algorithm design.

        • Multi-agent Systems (COMP310)
          Level3
          Credit level15
          SemesterSecond Semester
          Exam:Coursework weighting100:0
          Aims
          1. To introduce the student to the concept of an agent and  multi-agent systems, and the main applications for which they are appropriate;
          2. To introduce the main issues surrounding the design of intelligent agents;
          3. To introduce the main issues surrounding the design of a multi-agent society.
          4. To introduce a contemporary platform for implementing agents and multi-agent systems.
          Learning Outcomes
          1. 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;
          2. Understand the key issues associated with constructing agents capable of intelligent autonomous action, and the main approaches taken to developing such agents;
          3. 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
          4. 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.
        • 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

          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.
        • Technologies for E-commerce (COMP315)
          Level3
          Credit level15
          SemesterSecond Semester
          Exam:Coursework weighting100:0
          Aims
          1. To introduce the environment in which e-commerce takes place, the main technologies for supporting e-commerce, and how these technologies fit together;
          2. To introduce security as a major issue in secure e-commerce, and to provide an overview of security issues;
          3. To introduce encryption as a means of ensuring security, and to describe how secure encryption can be delivered;
          4. To introduce issues relating to privacy; and
          5. To  introduce auction protocols and negotiation mechanisms as emerging e-commerce technologies

          Learning Outcomes

          Upon completing this module, a student will:

          1. understand the main technologies behind e-commerce systems and how these technologies interact;
          2. understand the security issues which relate to e-commerce;
          3. understand how encryption can be provided and how it can be used to ensure secure commercial transactions;
          4. understand implementation aspects of e-commerce and cryptographic systems;
          5. have an appreciation of privacy issues; and
          6. understand auction protocols and interaction mechanisms.
        • 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 OutcomesUnderstand the key problems driving research and development in contemporary software engineering (eg the need to develop software for embedded systems).

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

          ​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).

          ​Be able to present, analyse, and give a reasoned critique of articles in the software engineering research literature. ble to read and understand articles in the research literature of software engineering.

          ​Be able to read and understand articles in the research literature of software engineering.

        • Introduction to Computational Game Theory (COMP323)
          Level3
          Credit level15
          SemesterFirst Semester
          Exam:Coursework weighting80:20
          Aims
        • to introduce the student to the notion of a game, its solutions concepts, and other basic notions and tools of game theory, and the main applications for which they are appropriate, including electricity trading markets;

        • ​to formalize the notion of strategic thinking and rational choice by using the tools of game theory, and to provide insights into using game theory in modeling applications;

        • ​to draw the connections between game theory, computer science, and economics, especially emphasizing the computational issues;

        • ​to introduce contemporary topics in the intersection of game theory, computer science, and economics;

        • Learning Outcomes

          ​Given a real world situation a student should be able to identify its key strategic aspects and based on these be able to connect them to appropriate game theoretic concepts;

          A student will understand the key connections and interactions between game theory, computer science and economics;

          ​A student will understand the impact of game theory on its contemporary applications, and be able to identify the key such application areas;

        • Complex Information and Social Networks (COMP324)
          Level3
          Credit level15
          SemesterSecond Semester
          Exam:Coursework weighting80:20
          Aims
          1. 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.
          2. To understand the application development possibilities offered by social networks environments like Facebook.
          3. 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

          Explain the most common metrics and techniques of complex network analysis and classification.

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

          ​Identify the main issues, techniques, and tools needed for the development of applications in the area of 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

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

          ​Ability to quantify the inefficiency of equilibria.

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

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

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

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

          2) 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.

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

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

          Learning Outcomes

          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.

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

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

        • Robotics and Autonomous Systems (COMP329)
          Level3
          Credit level15
          SemesterFirst Semester
          Exam:Coursework weighting0:100
          Aims
          1. To introduce the student to the concept of an autonomous agent;
          2. To introduce the key approaches developed for decision-making in autonomous systems;
          3. To introduce a contemporary platform for programming agents and multiagent systems;
          4. To introduce the key issues surrounding the development of autonomous robots;
          5. To introduce a contemporary platform for experimental robotics.
          Learning Outcomes

          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;

          ​identify the key issues associated with constructing agents capable of intelligent autonomous action;

          ​describe the main approaches taken to developing such agents;

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

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

          ​program and deploy autonomous robots for specific tasks.

        • Optimisation (COMP331)
          Level3
          Credit level15
          SemesterFirst Semester
          Exam:Coursework weighting75:25
          Aims
          1. ​To provide a foundation for modelling various continuous and discrete optimisation problems.
          2. ​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.
          3. ​To review the links and interconnections between optimisation and computational complexity theory.  
          4. 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

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

          The ability to formulate optimisation models for the purpose of modelling particular applications.The ability to use appropriate algorithmic paradigms and techniques in context of a particular optimisation model. ​
        • Communicating Computer Science (COMP335)
          Level3
          Credit level15
          SemesterWhole Session
          Exam:Coursework weighting0:100
          Aims

          The aim of this modules are to:

          • Provide key transferable skills to undergraduates including: communication, presentation, team-working
          • Provide undergraduates with educational expertise and first-hand experience in educational settings involving Computing teaching
          • Encourage and inspire a new generation of Computing teachers
          • Provide role models for pupuls within schools located in areas of high deprivation and increase the University of Liverpool widening participation activities in the area

          Learning Outcomes

          ​Have an understanding of the UK educational system and relevant teaching and learning styles

          ​Have an understanding of the widening participation agenda

          ​Be able to apply the relevant protocols and safeguarding practice when delivering within a school setting

          ​Be able to apply practical knowledge of effective delivery styles when engaging with primary or secondary aged pupils

          ​Reflect on and evaluate the effectiveness of the delivery

          ​Have experience of planning and delivery of a project

          ​Have experience of team working

          ​Have experience of sicence communication in a variety of situations

        • 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

          ​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.

          ​After successful completion of the module, the student should have:

          • An understanding of the standard methods of image manipulation, representation and information extraction.

        • 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 OutcomesLearning  the advantages and main characteristics of neural networks in relation to traditional methodologies. Also, familiarity with different neural networks structures and their learning mechanisms.​

          ​​​​​​​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.

        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.