The course
Are you drawn to the practical power and potential of computing and the beauty and logic of the mathematics behind it?
Computing has always relied on mathematical models and algorithms but mathematics also relies heavily on computers for exploring concepts, modelling ideas, problemsolving and even generating proofs. Both mathematics and computer science inform almost every aspect of our modern lives and this threeyear joint honours programme allows you to immerse yourself in both and combine abstract concepts and fascinating theories with handson practical experience.
Our progressive curriculum is delivered by inspiring mathematicians and computer scientists and informed by input from industry. You will gain a solid grounding in all the fundamentals of pure and applied mathematics, whilst learning about computer programming, software engineering, algorithms and complexity. In computer science our focus is on contemporary technologies such as Web 2.0 and distributed and embedded systems. You will have the chance to experiment in wellequipped laboratories with cuttingedge technologies that are transforming the way we live and work. You will also gain transferrable skills such as project management, time management, team working, data handling, research and presentation. The programme's modular structure means you can tailor your studies to your own interests, whilst maintaining an equal split between the two disciplines.
Our Mathematics and Computer Science departments are highly respected for the quality of their research and teaching. They offer friendly and supportive learning environments with excellent facilities. We are one of only seven computer science departments in the UK to hold the Athena SWAN bronze award for increasing female participation in computer science. We offer shortterm summer work placements and a dedicated personal adviser to guide you through your studies. You will also be welcome to join our thriving Computing Society.
Course structure
Core Modules
Year 1
Objectoriented Programming
In this module you will develop an understanding of programming and objectorientation concepts. You will learn about program basics, control flow, data structures, objects, exceptions, and file input and output. You will consider how to solve basic programming tasks and the need for program documentation, testing, readability and modifiability.

Calculus
In this module, you will develop an understanding of the key concepts in Calculus, including differentiation and integration. You will learn how to factorise polynomials and separate rational functions into partial fractions, differentiate commonly occurring functions, and find definite and indefinite integrals of a variety of functions using substitution or integration by parts. You will also examine how to recognise the standard forms of firstorder differential equations, and reduce other equations to these forms and solve them.

Functions of Several Variables
In this module you will develop an understanding of the calculus functions of more than one variable and how it may be used in areas such as geometry and optimisation. You learn how to manipulate partial derivatives, construct and manipulate line integrals, represent curves and surfaces in higher dimensions, calculate areas under a curve and volumes between surfaces, and evaluate double integrals, including the use of change of order of integration and change of coordinates.

Number Systems
In this module you will develop an understanding of the fundamental algebraic structures, including familiar integers and polynomial rings. You will learn how to apply Euclid's algorithm to find the greatest common divisor of two integers, and use mathematical induction to prove simple results. You will examine the use of arithmetic operations on complex numbers, extract roots of complex numbers, prove De Morgan's laws, and determine whether a given mapping is bijective.

Matrix Algebra
In this module you will develop an understanding of basic linear algebra, in particular the use of matrices and vectors. You will look at the basic theoretical and computational techniques of matrix theory, examining the power of vector methods and how they may be used to describe threedimensional space. You will consider the notions of field, vector space and subspace, and learn how to calculate the determinant of an n x n matrix.

Software Engineering
In this module you will develop an understanding of software engineering techniques and the managerial discipline required to work as part of a team. You will look at basic objectoriented concepts and consider the need for effective program documentation, testing, readability, and modifiability. You will consider the tools used to support software development, such as version controllers, debuggers, and code style checkers, and see how these are integrated into an industrystandard development environment (IDE). You will deliver a smallscale project using testdriven development.

Algorithms and Complexity
In this module you will develop an understanding of the design of algorithms, with a focus on time and space complexity. You will examine basic algorithms, looking at the implementation and analysis of linear search, binary search, and basic sorting, including insertion sort, selection sort, merger sort, quick sort, and heap sort. You will consider alternative data structure representations, such as binary search trees, hash tables, and binary heaps, and will gain an insight into the basics of graph algorithms.

Team Project
In this module you will develop an understanding of the role of the computer professional, gaining practical experience in developing medium scale software as part of a team using Scrumbased Agile development. You will apply managerial discipline and learn about the software lifecycle, team development, standard industrial software engineering, project management, use of version control, and integrated development environments (IDEs). You will see why project cost and effort is hard to estimate, and consider why project quality is hard to prescribe.

Linear Algebra and Project
In this module you will develop an understanding of vectors and matrices within the context of vector spaces, with a focus on deriving and using various decompositions of matrices, including eigenvalue decompositions and the socalled normal forms. You will learn how these abstract notions can be used to solve problems encountered in other fields of science and mathematics, such as optimisation theory. Working in small groups, you will put together different aspects of mathematics in a project on a topic of your choosing, disseminating your findings in writing and giving an oral presentation to your peers.

Graphs and Optimisation
In this module you will develop an understanding of the basic concepts of graph theory and linear programming. You will consider how railroad networks, electrical networks, social networks, and the web can be modelled by graphs, and look at basic examples of graph classes such as paths, cycles and trees. You will examine the flows in networks and how these are related to linear programming, solving problems using the simplex algorithm and the strong duality theorem.
 All modules are optional
Optional Modules
Year 1 All modules are core
 Introduction to Artificial Intelligence
 Mathematical Methods for Computer Science

Computer and Network Security
In this module you will develop an understanding of computer and network security. You will look at software vulnerabilities, handson hackingoriented attacks, memory errors, and web and network security. You will learn how to identify such vulnerabilities and consider the countermeasures that can mitigate their exploitation. You will also examine malicious software (malware) as a typical consequence of a successful software exploitation.

Humancomputer Interaction
In this module you will develop an understanding of the principles of humancomputer interaction (HCI) and the approaches that can be used to create interfaces matching users' needs and expectations. You will evaluate the usability and suitability of user interfaces, and build simple prototypes using different media and technologies. You will consider how perception and cognition influence HCI, and examine tests, such as web experiments.

Vector Analysis and Fluids
In this module you will develop an understanding of the concepts of scalar and vector fields. You examine how vector calculus is used to define general coordinate systems and in differential geometry. You will learn how to solve simple partial differential equations by separating variables, and become familiar with how these concepts can be appield in the field of dynamics of inviscid fluids.

Statistical Methods
In this module you will develop an understanding of statistical modelling, becoming familiar with the theory and the application of linear models. You will learn how to use the classic simple linear regression model and its generalisations for modelling dependence between variables. You will examine how to apply nonparametric methods, such as the Wilxocon and KolmogorovSmirnov goodnessoffit tests, and learn to use the Minitab statistical software package.

Rings and Factorisation
In this module you will develop an understanding of ring theory and how this area of algebra can be used to address the problem of factorising integers into primes. You will look at how these ideas can be extended to develop notions of 'prime factorisation' for other mathematical objects, such as polynomials. You will investigate the structure of explicit rings and learn how to recognise and construct ring homomorphisms and quotients. You will examine the Gaussian integers as an example of a Euclidean ring, Kronecker's theorem on field extensions, and the Chinese Remainder Theorem.

Real Analysis
In this module you will develop an understanding of the convergence of series. You will look at the Weierstrass definition of a limit and use standard tests to investigate the convergence of commonly occuring series. You will consider the power series of standard functions, and analyse the Intermediate Value and Mean Value Theorems. You will also examine the properties of the Riemann integral.

Probability
In this module you will develop an understanding of the basic principles of the mathematical theory of probability. You will use the fundamental laws of probability to solve a range of problems, and prove simple theorems involving discrete and continuous random variables. You will learn how to forumulate an explain fundamental limit theorems, such as the weak law of large numbers and the central limit theorem.

Ordinary Differential Equations and Fourier Analysis
In this module you will develop an understanding of the concepts arising when the boundary conditions of a differential equation involves two points. You will look at eigenvalues and eigenfunctions in trigonometric differential equations, and determine the Fourier series for a periodic function. You will learn how to manipulate the Dirac deltafunction and apply the Fourier transform. You will also examine how to solve differential equations where the coefficients are variable.

Further Linear Algebra and Modules
In this module you will develop an understanding of the language and concepts of linear algebra that are used within Mathematics. You will look at topics in linear algebra and the theory of modules, which can be seen as generalisations of vector spaces. You will learn how to use alternative matrix representations, such as the Jordan canonical or the rational canonical form, and see why they are important in mathematics.

Complex Variable
In this module you will develop an understanding of the basic complex variable theory. You will look at the definitions of continuity and differentiability of a complex valued function at a point, and how CauchyRiemann equations can be applied. You will examine how to use a power series to define the complex expontential function, and how to obtain Taylor series of rational and other functions of standard type, determining zeros and poles of given functions. You will also consider how to use Cauchy's Residue Theorem to evaulate real integrals.
 Half Unit Project
 Full Unit Project
 Computational Finance
 Intelligent Agents and Multiagent Systems
 Machine Learning
 Semantic Web
 Data Visualisation and Exploratory Analysis
 Advanced Data Communications
 Concurrent and Parallel Programming
 Interconnected Devices
 Applications of Cryptography
 Cyber Security
 Digital Forensics
 Malicious Software
 Smart Cards, RFIDs and Embedded Systems Security
 Humancomputer Interaction
 IT Project Management
 Software Language Engineering
 Bioinformatics
 Compilers and Code Generation
 Computational Optimisation
 Digital Audio and Applications
 Functional Programming and Applications

Mathematics Project
You will carry out a detailed investigation on a topic of your choosing, guided by an academic supervisor. You will prepare a written report around 7,000 words in length, and give a tenminute presentation outlining your findings.

Number Theory
In this module you will develop an understanding of how prime numbers are the building blocks of the integers 0, ±1, ±2, … You will look at how simple equations using integers can be solved, and examine whether a number like 2017 should be written as a sum of two integer squares. You will also see how Number Theory can be used in other areas such as Cryptography, Computer Science and Field Theory.

Quantum Theory 1
In this module you will develop an understanding of quantum theory, and the development of the field to explain the behaviour of particles at the atomic level. You will look at the mathematical foundations of the theory, including the Schrodinger equation. You will examine how the theory is applied to one and three dimensional systems, including the hydrogen atom, and see how a probabilistic theory is required to interpret what is measured.

Electromagnetism
In this module you will develop an understanding of the elementary ideas of electromagnetism. You will learn how to calculate electric fields and electric potentials from given fixed charge distributions and how to calculate magnetic fields and vector potentials from given steady current distributions. You will examine the magnetic effects of currents, including electromagnetic induction and displacement currents, and analyse the BiotSavart law and Ampere's law. You will examine Maxwell's equations, and the properties of electromagnetic waves in free space, as well as electric and magnetic dipoles and the electromagnetism of matter.

NonLinear Dynamic Systems
In this module, you will develop an understanding of nonlinear dynamical systems. You will investigate whether the behaviour of a nonlinear system can be predicted from the corresponding linear system, and see how dynamical systems can be used to analyse mechanisms such as the spread of disease, the stability of the universe, and the evolution of economic systems. You will gain an insight into the 'secrets' of the nonlinear world and the appearance of chaos, examining the significant developments achieved in this field during the final quarter of the 20th Century.

Inference
In this module you will develop an understanding of the main priciples and methods of statstics, in particular the theory of parametric estimation and hypotheses testing.You will learn how to formulate statistical problems in mathematical terms, looking at concepts such as Bayes estimators, the NeymanPearson framework, likelihood ratio tests, and decision theory.

Time Series Analysis
In this module you will develop an understanding of some of the descriptive methods and theoretical techniques that are used to analyse time series. You will look at the standard theory around several prototype classes of time series models and learn how to apply appropriate methods of times series analysis and forecasting to a given set of data using Minitab, a statistical computing package. You will examine inferential and associated algorithmic aspects of timeseries modelling and simulate time series based on several prototype classes.

Channels
In this module you will develop an understanding of the mathematics of communication, focusing on digital communication as used across the internet and by mobile telephones. You looking at compression, considering how small a file, such as a photo or video, can be made, and therefore how the use of data can be minimised. You will examine error correction, seeing how communications may be correctly received even if something goes wrong during the transmission, such as intermittent wifi signal. You will also analyse the noiseless coding theorem, defining and using the concept of channel capacity.

Mathematics of Financial Markets
In this module you will develop an understanding of how financial markets operate, with a focus on the ideas of risk and return and how they can be measured. You will look at the random behaviour of the stock market, Markowitz portfolio optimisation theory, the Capital Asset Pricing Model, the Binomial model, and the BlackScholes formula for the pricing of options.

Combinatorics
In this module you will develop an understanding of some of the standard techniques and concepts of combinatorics, including methods of counting, generating functions, probabilistic methods, permutations, and Ramsey theory. You will see how algebra and probability can be used to count abstract mathematical objects, and how to calculate sets by inclusion and exclusion. You will examine the applications of number theory and consider the use of simple probabilistic tools for solving combinatorial problems.

Cipher Systems
In this module you will develop an understanding of how error correcting codes are used to store and transmit information in technologies such as DVDs, telecommunication networks and digital television. You will look at the methods of elementary enumeration, linear algebra and finite fields, and consider the main coding theory problem. You will see how error correcting codes can be used to reconstruct the original information even if it has been altered or degraded.

Applications of Field Theory
In this module you will develop an understanding of Field Theory. You will learn how to express equations such as X^{2017}=1 in a formal algebraic setting, how to classify finite fields, and how to determine the number of irreducible polynomials over a finitie field. You will also consider some the applications of fields, including ruler and compass constructions and why it is impossible to generically trisect an angle using them.

Dynamics of Real Fluids
In this module you will develop an understanding of how the theory of ideal fluids can be used to explain everyday phenomena in the world around us, such as how sound travels, how waves travel over the surface of a lake, and why golden syrup (or volcanic lava) flows differently from water. You will look at the essential features of compressible flow and consider basic vector analysis techniques.

Mathematics in the Classroom
In this module you will develop an understanding of a range of methods for teaching children up to Alevel standard. You will act act as a role model for pupils, devising appropriate ways to convey the principles and concepts of mathematics. You will spend one session a week in a local school, taking responsibility for preparing lesson plans, putting together relevant learning aids, and delivering some of the classes. You will work with a specific teacher, who will act as a trainer and mentor, gaining valuable transferable skills.

Computational Number Theory
In this module you will develop an understanding of a range methods used for testing and proving primality, and for the factorisation of composite integers. You will look at the theory of binary quadratic forms, elliptic curves, and quadratic number fields, considering the principles behind stateofthe art factorisation methods. You will also look at how to analyse the complexity of fundamental numbertheoretic algorithms.

Principles of Algorithm Design
In this module you will develop an understanding of efficient algorithm design and its importance for handling large inputs. You will look at how computers have changed the world in the last few decades, and examine the mathematical concepts that have driven these changes. You will consider the theory of algorithm design, including dynamic programming, handling recurrences, worstcase analysis, and basic data structures such as arrays, stacks, balanced search trees, and hashing.

Applied Probability
In this module you will develop an understanding of the probabilistic methods used to model systems with uncertain behaviour. You will look at the structure and concepts of discrete and continuous time Markov chains with countable stable space, and consider the methods of conditional expectation. You will learn how to generate functions, and construct a probability model for a variety of problems.

Quantum Information and Coding
In this module you will develop an understanding of how the behaviour of quantum systems can be harnessed to perform information processing tasks that are otherwise difficult, or impossible, to carry out. You will look at basic phenomena such as quantum entanglement and the nocloning principle, seeing how these can be used to perform, for example, quantum key distribution. You will also examine a number of basic quantum computing algorithms, observing how they outperform their classical counterparts when run on a quantum computer.

Advanced Financial Mathematics
In this module you will develop an understanding of the role of mathematics and statistics in securities markets. You will investigate the validity of various linear and nonlinear time series occurring in finance, and apply stochastic calculus, including partial differential equations, for interest rate and credit analysis. You will also consider how spot rates and prices for Asian and barrier exotic options are modelled.

Error Correcting Codes
In this module you will develop an understanding of how error correcting codes are used to store and transmit information in technologies such as DVDs, telecommunication networks and digital television. You will look at the methods of elementary enumeration, linear algebra and finite fields, and consider the main coding theory problem. You will see how error correcting codes can be used to reconstruct the original information even if it has been altered or degraded.

Public Key Cryptography
In this module you will develop an understanding of public key cryptography and the mathematical ideas that underpin it, including discrete logarithms, lattices and elliptic curves. You will look at several important public key cryptosystems, including RSA, Rabin, ElGamal encryption and Schnorr signatures. You will consider notions of security and attack models relevant for modern theoretical cryptography, such as indistinguishability and adaptive chosen ciphertext attack.

Groups and Group Actions
In this module you will develop an understanding of the algebraic structures known as groups. You will look at how groups represent symmetries in the world around us, examining examples that arise from the theory of matrices and permutations. You will see how groups are ubiquitous and used in many different fields of human study, including mathematics, physics, the study of crystals and atoms, public key cryptography, and music theory. You also will also consider how various counting problems concerning discrete patterns can be solved by means of group actions.

Topology
In this module you will develop an understanding of geometric objects and their properties. You will look at objects that are preserved under continuous deformation, such as through stretching or twisting, and will examine knots and surfaces. You will see how colouring a knot can be used to determine whether or not it can be transformed into the unknot without any threading. You will also consider why topologists do not distinguish between a cup and a donut.
Teaching & assessment
The programme has a flexible, modular structure and you will take a total of 12 course units at a rate of four, 30credit modules per year. Most of our individual course units are worth 15 credits each. In addition to our compulsory courses in each discipline you will be free to choose between a range of optional modules.
We use a variety of teaching methods and there is a strong focus on small group teaching. You will mostly learn through lectures, small group tutorials, practical sessions and problemsolving classes, supervised computing laboratory work, group work and coursework. Our programming and software engineering teaching is very hands on, allowing you to learn at your own pace, whatever your previous level of experience. You will also be expected to complete private study and revision, worksheets, team work and independent project work outside of class time, with access to a wide range of resources including Moodle, the University’s comprehensive elearning facility.
For lecturebased courses, assessment is usually by two or threehour examination at the end of the year in which the course is taken. Many of our courses also involve an element of coursework, which might be examined through project reports, essays or oral presentations.
Entry requirements
A Levels: AABABB
Required subject: Mathematics at grade A.
Preferred subjects: Further Mathematics or Physics or Computer Science.
At least five GCSE passes at grade A*C or 94 including English and Mathematics.
Where an applicant is taking the EPQ alongside A  levels, the EPQ will be taken into consideration and result in lower Alevel grades being required. Socio  economic factors which may have impacted an applicant's education will be taken into consideration and alternative offers may be made to these applicants.
Other UK Qualifications
International & EU requirements
English language requirements
All teaching at Royal Holloway is in English. You will therefore need to have good enough written and spoken English to cope with your studies right from the start.
The scores we require
 IELTS: 6.5 overall. No subscore lower than 5.5.
 Pearson Test of English: 61 overall. Writing 54. No subscore lower than 51.
 Trinity College London Integrated Skills in English (ISE): ISE III.
For more information about countryspecific entry requirements for your country please visit here. For international students who do not meet the direct entry requirements, we offer an International Foundation Year, run by Study Group at the Royal Holloway International Study Centre. Upon successful completion, students can progress on to selected undergraduate degree programmes at Royal Holloway, University of London.
Your future career
By combining Computer Science and Mathematics you will equip yourself with an enviable skillset that is required by business and organisations in all sectors, right around the world. You will learn how to operate large and complex systems, solve technical problems, analyse data, and apply logic and critical reasoning. You will also gain transferrable skills such as project management, time management, team working, data handling, research and presentation skills. We work closely with partners in industry who advise us on our curriculum, to make sure it keeps abreast of the latest market needs and trends.
Our graduates are among the most employable in the UK and, in recent years they have entered a wide range of careers, from network systems design and engineering, web development and programming to business management, finance, accountancy, the civil service, research, teaching and engineering. They work for organisations as diverse as: Logica, British Telecom, British Aerospace, Microsoft, Amazon.com, American Express, Sky and Orbis Technology, KPMG, Ernst & Young, the Ministry of Defence, Barclays Bank, Lloyds Banking Group, the Department of Health, McLaren and TowersWatson. Find out more about what some of our mathematics graduates are doing here, and our computer science graduates, here.
We run jobs fairs and a shortterm work placement scheme, and your personal adviser and the campus Careers team will be on hand to offer advice on career opportunities. We maintain strong links with our alumni, who can often provide advice, contacts and networking opportunities.
Fees & funding
Home and EU students tuition fee per year*: £9250
International students tuition fee per year**: £17900
Other essential costs***: There are no single associated costs greater than £50 per item on this course.
How do I pay for it? Find out more about funding options, including loans, scholarships and bursaries.
^{*}The tuition fee for UK and EU undergraduates is controlled by Government regulations, and for students starting a degree in the academic year 2018/19 will be £9,250 for that year, and is shown for reference purposes only. The tuition fee for UK and EU undergraduates has not yet been confirmed for students starting a degree in the academic year 2019/20.
^{**}Fees for international students may increase yearonyear in line with the rate of inflation. The policy at Royal Holloway is that any increases in fees will not exceed 5% for continuing students. For further information see fees and funding and our terms and conditions.
^{***}These estimated costs relate to studying this particular degree programme at Royal Holloway. Costs, such as accommodation, food, books and other learning materials and printing etc., have not been included.