Computer science MSc curriculum structure

The Computer Science online MSc curriculum is made of 13 units totalling to 180 credits. Each unit teaches you the technical skills to develop a digital career.

Students have between two years and three months and five years to successfully complete all of the units, including a final research-based project. Students in receipt of a Postgraduate Loan must complete the course in three years. Each 10 credit unit is 8 weeks in duration, and the units are run consecutively. Over the year, there are three short breaks – in December, April, and August.    

The course begins with an induction to help you get to know the faculty team, your fellow students and the virtual online environment.

Occasionally we make changes to our programmes in response to, for example, feedback from students, developments in research and the field of studies, and the requirements of accrediting bodies. You will be advised of any significant changes to the advertised programme, in accordance with our Terms and Conditions.

Computer science online course units

Click on each unit in the computer science course list to view a brief description and learning outcomes.


Principles of programming (10 credits)

Find out about the development of computer software, including problem analysis, establishing requirements, designing, implementing and evaluating. You will be provided with the terminology and concepts of programming, irrespective of the language being used. You will gain practical skills in terms of reading and writing programs and producing programs to solve real-world problems. You will gain confidence in the programming languages we teach, and confidence in your ability to learn different programming languages and styles of programming.

You’ll learn to:

  • Describe the design of a computer program separately from its implementation
  • Explain the basic concepts of procedural and object-orientated programming in the design and implementation of computer programs
  • Explain debugging and testing methods and how they contribute to robust code
  • Design, construct and evaluate simple data structures and algorithms
  • Plan, organise and implement program code to support reuse and maintainability of the software
  • Provide a critical review of software in terms of quality, design, reuse and robustness, and offer solutions to correct issues encountered
Software engineering 1 (10 credits)

Understand how the principles behind software development are much more important than the chosen programming language, and how specification, design choices and development methodology may have a major impact on the correctness and suitability of the final software solution. Develop a systematic understanding of software development paradigms for complex software system building.

You’ll learn to:

  • Identify issues and appropriate solutions for the design and implementation of complex software problems
  • Perform evaluations of design solutions to determine if they are fit for purpose
  • Demonstrate an understanding of the principles of software development paradigms and their relationship to the appropriateness of an eventual software solution
Foundations of computation (10 credits)

An introduction to formal models of computation: finite automata, pushdown automata, Turing machines, and the corresponding classes of formal languages (regular, context-free, semi-decidable). You will learn how to design algorithms for concrete computational problems within these models of computation, and the dichotomy between deterministic and non-deterministic computation will be introduced.

You will gain an appreciation of the limits of computation, including methods of proving undecidability and specific examples of undecidable problems. The concept of computational complexity and complexity classes will be introduced.

You’ll learn to:

  • Demonstrate an understanding of the fundamental models of computation and the corresponding classes of formal grammars and languages
  • Design algorithms for specific computational problems as automata of appropriate types
  • Demonstrate the practical application of grammars and language within the context of parsing algorithms
  • Prove mathematically that some computational problems are undecidable within a particular class of computational models
  • Put theory into practice by creating a parser for a specific language
Software engineering 2 (10 credits)

Develop skills in critically analysing problems for appropriate software solutions. You’ll also learn how to compare and contrast various software development paradigms.

You’ll learn to:

  • Critically evaluate contemporary software engineering paradigms for defined software engineering problems, given a set of relevant development constraints
  • Compare and contrast the roles, responsibilities, benefits and drawbacks of different team organisation structures for software development, given a set of relevant development constraints
  • Design software solutions in object-oriented programming languages
Databases and cloud (10 credits)

Gain a systems-based understanding of data, data modelling, storage, access, retrieval and protection.

You’ll learn to:

  • Understand the nature of data
  • Capture data, provide formal descriptions and represent data and its processing
  • Be conversant with emerging data exchange and database developments, such as big data, data mining, meta data and the semantic web
  • Critically review the migration towards cloud-based data storage in the context of its professional, legal and ethical implications
  • Practically demonstrate how programs and users can interact with databases through query languages
Functional programming (10 credits)

Explore how the logical and semantic foundations of programming languages are translated into usable programming languages. You will gain practical experience of using a functional programming language.

You’ll learn to:

  • Define and explain the syntax and semantics of the lambda calculus, and its role as a model of computation
  • Demonstrate the difference between reduction orders and explain their relationship with call-by-name, call-by-value and call-by-need evaluation
  • Define and explain the simply-typed lambda calculus, Hindley–Milner polymorphism, and type inference
  • Write programs over structured datatypes in a typed higher-order functional programming language
  • Formally reason about and proof properties of functional programs using the formalism of the typed lambda calculus
Artificial intelligence (10 credits)

Gain a detailed introduction to formal artificial intelligence (AI) and a practical understanding of intelligence and computation as strategies for problem solving. You will also learn about the nature of the problems associated with various established strategies and approaches.

You’ll learn to:

  • Understand a wide range of AI techniques, their advantages and disadvantages
  • Appreciate AI as a mechanism to deal with computationally difficult problems in a practical manner
  • Understand the concepts of formal AI and put them into practice
  • Write small to medium-sized programs for aspects of artificial intelligence
  • Critically evaluate state-of-the-art AI applications
Entrepreneurship (10 credits)

Develop a critical understanding of different schools of entrepreneurial thought and the importance of entrepreneurship in turning an invention or process into a solid business proposition. You’ll acquire key skills in business and operational planning and gain a systematic understanding of key business risk. You will develop key skills in the development of a business idea from initial concept to business plan.

You’ll learn to:

  • Identify and analyse market opportunities
  • Develop business strategies to take advantage of opportunities
  • Critically consider key operational issues
  • Investigate alternative funding and financial strategies
  • Identify and address key intellectual property, legal, social, ethical and professional issues
  • Locate and use entrepreneurial resources
  • Develop a business plan
Theory of human computer interaction (10 credits)

Acquire an advanced level of understanding of current theoretical, methodological and practical research issues and trends in human computer interaction (HCI). It will raise your awareness of usability and how it can be achieved and measured. You’ll also gain relevant knowledge and skills related to usability design and evaluation. Plus you’ll have the opportunity to research advanced HCI topics, summarising the current state of the art, undertaking a relevant study and presenting the results.

You’ll learn to:

  • Understand HCI theory
  • Be aware of interaction design issues and able to carry out different types of evaluation
  • Challenge and recognise advances in state-of-the-art human–computer interaction research
  • Develop research programmes to overcome problems in usability research, development and evaluation
Cybersecurity (10 credits)

Gain an understanding of the difficulties of security and investigate why everyone wants it but no-one can define it. You will develop the ability to analyse the security threats to a proposed design. You will also discover how to propose realistic counter-measures, where available.

You’ll learn to:

  • Describe common security models
  • Discuss what it means for a given system to be 'secure'
  • Identify security weaknesses in proposed systems
  • Understand the principles and application of cryptography
Intelligent control and cognitive systems (10 credits)

Gain an in-depth knowledge of practical artificial intelligence (AI) and how AI controls real-time autonomous systems, including autonomous robots, scientific simulations, and virtual-reality characters. You’ll develop fundamental vocational skills in constructing the three types of intelligent system covered. You’ll also acquire an understanding of intelligence in nature, so you can critically evaluate and compare natural and artificial intelligence systems. You will develop research and information retrieval skills so that you can write short conference papers, taking advantage of cutting-edge research and disseminating findings.

You’ll learn to:

  • Evaluate available options for mechanical real-world perception
  • Critically evaluate and recommend appropriate technologies for informing robotic control
  • Compare and evaluate mechanisms for sequencing actions, and implement appropriate mechanisms of action selection on a variety of platforms
  • Form predictions of the consequences of simple actions being performed by a large number of agents
  • Identify and evaluate intelligent control algorithms from journal and conference literature
  • Communicate your knowledge by writing short conference-style publications
Research Project Preparation (10 credits)

By introducing you to research in computer science, you’ll be able to place your studies in a wider context, and prepare you for when it comes to choosing your research project.

You’ll learn to:

  • Summarise and critique computer science research papers
  • Distinguish various research themes in computer science and highlight broad research aims
  • Determine which research area you would like to work in for your project
  • Critically analyse and review previous work in a chosen subject area
  • Undertake and document a detailed literature review in a chosen area of computer science research
  • Understand the principles of structuring a research project
Independent research project (60 credits)

Finish the course by producing a unique research project using techniques learned throughout the year.

The research project can be taken over 3 months, 8 months, or 12 months. Students choosing the shorter pathways may have a substantially higher workload per week.

After completing the research you will be able to:

  • Identify the tasks to be completed, plan a scheme of work and complete the project to a professional standard
  • Assemble and create the necessary analysis, design and development tools
  • Solve the technical problem and evaluate the effectiveness of the solution against quality standards
  • Demonstrate successful completion of tasks in a coherently written dissertation, including a discussion of the research outcomes and future directions
  • Evaluate and critique the project

This degree will give me the foundations I need in multiple areas to be able to build upon when new technology comes out. Should I wish to move from web development into security or artificial intelligence then I will already have a background in those areas to get me started and give me a jumpstart into that part of the technology industry.

Jess Crees