CM Programme overview
This is a degree programme which involves roughly 50% mathematics and 50% computer science. Students who graduate with it are typically qualified to take postgraduate course units in either subject. Note that it my be possible to start a PhD in computer science with just a three year degree, but for one in mathematics you will require a masters degree. Because students learn the fundamentals of both subjects they are eminently employable. Once you have the basics you should not worry too much about any area not specifically studied - you should be able to teach yourself (but this is a lot easier in computer science than in maths).
In the first year there is little choice. In maths students take four introductory course units with the topics
- calculus (repetition of A-level topics such as limits, sequences, differentiation, integration);
- proofs, sets and functions (an introduction to the question of what a proof is, together with some techniques, and some basic but abstract facts about functions);
- differential equations (introduction to equations between functions and their derivatives);
- linear algebra (introduction to matrices, vector spaces and related concepts).
In computer science students have to take units on
- programming in Java (introduction to programming in a language very popular in industry);
- first year team project (an introduction to a number of languages and pieces of software which culminates in groups creating their own web application).
In the second semester students get to choose one of three options.
- Fundamentals of AI (an introduction to important concepts from artificial intelligence, with a big emphasis on understanding probabilities).
- Fundamentals of Computation (an introduction to important concepts from theoretical computer science, half of which concentrates on being able to deal with texts (be they programs or something else), and half of which looks at the correctness and complexity of programs, while also asking whether there are questions the answer to which cannot be computed).
- Fundamentals of Distributed Systems (an introduction to systems of computers, such as the web).
It doesn't matter too much which of these students choose, but if they want to do more AI (in particular machine learning) they have to do the AI unit.
There is more choice in the second year. In maths students have to take course units in
- analysis (this puts calculus on a proper footing as a mathematical theory, giving rigorous definitions of concepts mostly centered around the notion of limit);
- algebraic structures (this covers mostly a structure known as a `group')
- complex analysis (analysis becomes a very different theory if one builds on the complex rather than the real numbers).
In the first semester there is a straightforward choice between
- partial differential equations (which is about more complicated systems) and
- probability (this is a first year course unit that introduces the basic laws of probability).
In the second semester there is considerable choice. In order to decide what you want to do you should read my article on the subject. Note that it is possible to take some Level 2 course units while you are in Year 3.
In computer science you have to do two twenty credit course units
- software engineering (which is an area concerned with organizing projects which might have thousands of people working on them) and
- algorithms and imperative programming (concerned with studying principles underlying various algorithms while also teaching you a new programming language, C).
Students have choices for picking one course unit each in first and second semester, subject to having the necessary pre-requisites. Third year course units tend to not have too many requirements but students in Year 2 are encouraged to look ahead to ensure that they are not planning to take something in Year 3 that relies on them having taken a particular subject in Year 2.
Student may do between 50 and 70 credits in either subject for a total of 120 credits, with the following rules:
In maths they have to take 40 credits of Level 3 and at least another 10 credits of Level 2 or Level 3 course units. Consult this document for an overview of what's available.
In computer science students have to complete a 30 credit project and do all their remaining CS course units (at least 20 credits) at Level 3.
The course units you have picked according to these rules must add up to 120 credits. What the rules therefore allow you is to
- place a greater emphasis on either subject area by picking 70 credits from that area and
- picking some second year course units in Year 3.
Other course units
Because students graduate from this programme with `half' a degree in mathematics and `half' a degree in computer science there is very limited scope for allowing students to do course units outside these two areas. Over their three years students may take one ten credit course unit in a different subject area (in Years 2 or 3) provided that they can get the agreement of the CM Tutor to do so. In order to get this agreement students need to be able to explain.
- Why their choice makes sense for them
- What course units they intend to pick subsequently, to demonstrate that they have a sensible plan despite missing a particular course unit they are meant to take.