Duration: Full-time MSc - 12 months
Application deadline: 30 June (international) / 31 August (home/EU)
Entry requirements: First degree (UK 1st or 2:1 or international equivalent) in any academic discipline or a 2:2 in computer science. A level maths (or international equivalent) or one mathematics unit at Bachelor's level.
Language requirements: IELTS 6.5 (at least 6.0 in each of the four components) or equivalent. Applicants narrowly missing this requirement may be eligible for a combined offer.
MSc Computer Science
The MSc in Computer Science is for graduates from a different discipline interested in a career in computer science.
Why study computer science with us?
Computing underpins much of our professional and personal lives. There is a growing need for individuals trained in one discipline who are also skilled in computer science.
If you are a graduate with a non-computing first degree then our MSc will:
- provide you with a sound foundation in practical and theoretical aspects of computer science
- help you change career, with skills desirable to a huge number of industries
- enhance your employability with transferable skills
- prepare you for PhD study
No prior background in computer science is necessary.
What will I learn?
Semester one offers a broad overview of computer science through a series of core units.
Semester two focusses on advanced and emerging areas of computer science. You will have the opportunity to specialise in one or more areas of the discipline.
The final semester is for your dissertation. You will:
- demonstrate the knowledge, skills and reflective insights you have have gained
- apply them to the investigation and/or development of new software systems.
Visit the Department of Computer Science for further information on the department.
At a glance
Semester 1Sept - Jan
Semester 2Feb - May
SummerJune - Sept
|Core taught units (30 credits)
Principles of Programming (6 credits)
Software Engineering (12 credits)
Foundations of Computation (6 credits)
Databases (3 credits)
Research Seminar (3 credits)
|Core taught units (12 credits)
Research Project Preparation (6 credits)
Functional Programming (6 credits)
|Optional taught units (18 credits)
Select three units:
A total of 90 credits are awarded for the year.
Programme units are subject to change. For a short description of the content of each unit, go to the Unit descriptions tab.
The programme covers three semesters.
In the first semester we immerse students in the practical and theoretical foundations of the discipline.
In the second semester we build upon these foundations allowing students to specialise in one or more areas of the discipline.
The third semester is dedicated to a dissertation. Students combine their acquired knowledge to produce a novel software element or conduct novel research and critique their achievements. Please visit our research pages for a an overview of our research.
Principles of Programming
An introduction to a programming language such as Java or Python.
An introduction to program development environments such as eclipse.
Procedural Control: Introduction to procedural system development. Discussion of control structures: sequence, selection, iteration and recursion.
Objects: Introduction to object-oriented system development. Introduction of objects and classes, inheritance and polymorphism. Comparison of procedural and object programming.
Introductions to scope and extent, abstract data types. Design methods for such systems.
Systems engineering and design methods, such as Object/Class diagrams, UML, iterative software development, code reuse and software maintenance.
Testing and debugging: unit testing, tracing by hand, print statements, etc.
Software quality, software evaluations and reviews, metrics
Data Organisation: Basic data structures: lists, stacks and queues. Basic search and sorting algorithms for these data structures. Files and streams. Data handling.
The building blocks of software. Software design paradigms: Waterfall, Iterative, Agile, (for example: Scrum, XP, Kanban), Test-Driven Development (TDD).
Software engineering concepts: abstraction, modularisation, encapsulation, data hiding, reuse, white-box and black-box inheritance, refactoring, smells, mocks, stubs, design patterns, formal verification, automated testing and property-based testing. Principles for engineering complex software systems. The effect of the programming language on design and implementation issues. Team structures. Tie vs. feature boxing. Pair working.
Foundations of Computation
Deterministic and non-deterministic finite automata.
Regular languages. Existence of non-regular languages.
Pushdown automata and context-free grammars and languages. Parsing in context-free languages.
Existence of non-context-free languages via Pumping Lemma.
Turing machines and Church-Turing Thesis.
Universal Turing machine and undecidability of the halting problem.
Non-deterministic Turing machines, complexity classes P and NP.
Data modelling methodologies such as UML and the e-r model.
Relational model, relational algebra, SQL and normalization,
Metadata, the semantic web, data exchange methods and formats such as XML.
Datamining, big data and pattern discovery in large datasets.
Cloud-based, distributed data storage and its professional, legal and ethical implications.
At the start of the semester students will be divided into small groups. Each group will will be assigned a research paper to read and study. The available papers will be from a wide range of computer science areas and present state-of-the-art research.
The content of their assigned research paper is the starting point for students to explore that a particular research stream. For their presentation students will need to demonstrate an understanding of the context of the work, the research methods used in this area of computer science, critique the validity, rigour and the ethical integrity of the paper within the context of its research domain.
Towards the mid/end of the semester this paper and its wider context will be presented to the class. For each presentation, two other groups (who have been assigned different research areas) will be asked to prepare questions for the presenting pair.
In the weeks preceding the presentations, members of the department will be invited to give a talk about their research topic and the types of MSc projects they supervised in the past.
Intro: AI, Computer Science and Cognitive Science. Logical representations in AI. Probabilistic representations & uncertainty in AI.
Search strategies: Antagonistic (mini-max) search strategies. Dynamic programming, greedy approaches, backtracking, branch & bound.
Complexity: Computationally hard problems and how they relate to AI algorithms.
Techniques: Introduction to machine learning (possible examples: Genetic algorithms & genetic programming) Decision trees & analysis, Constraint solving and satisfiability (SAT solving). Logic Programming (under the answer set semantics). Probabilistic model structures, Bayes nets, DAGs, constraint-based reasoning.
Problems: Classic problems: board games, knapsack, travelling salesperson. Advanced problems such as: video-game design, bio-informatics, music composition, social simulation.
Some aspects will be covered in more detail than others.
Coursework implementation to be in a declarative programming language.
History of entrepreneurial thought, finding and developing an idea, market analysis, corporate structure, business funding, hiring, operations, marketing, risk management, legal, social, ethical and professional issues, writing a business plan
Interactive Communication Design
Introduction to participatory design. Understanding of how to model and specify group and communication requirements. Conceptual design models and metaphors. How to elaborate a design model. The unit will involve practical classes through groupwork in the design of communication systems; building exemplars, interface design, communication management design, security access design.
Articulation work and the overhead of collaboration; group decision support systems; the connection between collaboration and formation of common understanding through mediating technologies; theoretical perspectives on participation; social presence; video-mediated interactions; text-based communication; technologies to support mutual awareness within teams; changing physical, social and organisational environments of collaborative computing.
Hypertext and hypermedia: formats and mechanisms; static and dynamic media. Digital media formats; image, sound, video formats and compression. CD technology and the storage of digital media. Web technology and the delivery of digital media. Legal and ethical considerations.
Applications: selected from games, films, special effects, sound.
Theory of Human Computer Interaction
What is usability?
What aspects of humans need to be considered in user centred design?
What is effective, useful and engaging interaction design?
Participatory design and the role of the end user.
Different approaches to evaluation – analytical, discount, formal etc. Evaluating affect, emotion and engagement.
Theories of collaboration and the design of groupware.
Child-computer interaction, accessibility, mobile and pervasive designs, creativity support tools, intelligent and autonomous systems.
Security and Integrity
Philosophical, legal and ethical issues. What is a person? Passwords, user IDs and biometrics. What are authorisation and delegation? What are data? Security against theft, destruction, interception, tampering. Some thoughts on physical security. Data Protection Act, Freedom of Information Act, Regulatory and Investigatory Powers Act. Military/government requirements for security.
Security within a computer. Hardware support for security; states and memory protection, memory mapping, virtual memory and security. The Unix Security model; chown, chgrp, setuid and chroot. Strengths and weaknesses of the Unix security model; common attacks.
The Multics security model. Capabilities
Security within databases. Protection against loss – two phase commit. Protection against statistical queries; Denning’s model
Security within networks. ‘Man in the middle’ attacks. What does the ‘s’ in https signify?
Case studies; internet worm. Power attacks and other covert channels. A chain can be weaker than its weakest link; the Crouch-Davenport attack.
Introduction to the problem: security, privacy, authentication, repudiation, revocation. The key distribution problem: public vs private keys. The mathematics of crytography: Fermat-Euler Theorem, structure of finite fields and elliptic curves. Crytographicalgorithms: Diffie-Hellman, RSAi, El-Gamal. Cryptanalysis: discrete logarithms, factoring. The Coppersmith attack. Elliptic Curve analogues. Private-key algorithms: DES, 3DES and AES. Good hashing algorithms: MD5, SHA-1. Characteristics of safe keys, using cryptography: digital signatures: how to find the public key. Repudiation and revocation, examples in practice: PGP, digital certificates.
Intelligent Control and Cognitive Systems
Why intelligent control is (computationally) hard, outline / review of historic strategies (proof / search based, reactive / dynamic planning, machine learning, hybrids of these). Course structure, introduciton to labs. Sensing: sonar, IR, lazer range finding, vision, touch. strenghts, weaknesses, and approaches to use each.
Action: mechanisms for sequencing, goal arbitration, problem spaces and contexts. Where do action primitives come from, how does morphology do work for you. Redundancy & degrees of freedom.
Perception and Learning: sensor fusion, memory, and learning. The beginings of cognition.
Introduction to agent-based modelling; the impact of concurrency and society; simulations in policy and science; models, simplicity and explanation.
Natural intelligence: Evolution and cognitive control, variation in cognitive strategies found in nature, individual variation in nature; perception and action selection in nature.
Writing for science and engineering: special concerns for conferences, The use & nature of evidence. experiment, proof or argument? Picking conferences, knowing a literature.
Sensing & Action primitives II: Animation and Virtual Reality. Motion capture, segment smoothing. Motion planning and basic AI for games.
Complex planning systems, achieving multiple goals, agents with emotions and personality. Likeability, believeability and engagement.
Ethics and philosophy of AI, can we build consciousness? What should our users believe about our agents?
Director of Studies approved unit
This can be any unit at master or final year undergraduate level offered by the university. This is however subject to director of studies approval.
If you are considering this option, contact your admissions tutor with the unit you are considering together with a motivation of your choice and how you feel this unit sits within your programme of study.
Career opportunitiesOpportunities are extensive and we expect our graduates to move into computing careers in the leading:
- computer companies
- IT consultancy firms
- educational establishments