The mathematics courses at Warwick offer a wide variety of optional modules — there are no compulsory modules in the third year — but this can make it difficult to choose which modules to take. Below, you can find a collection of reviews of various maths modules to help you make your decision.
If you would like to contribute a module review to this page, please open a pull request on our github, or otherwise contact .desync
on the WMS/WMX Discord servers.
Note that only the most popular optional external modules have been listed below: if you would like to have a module added, please also get in touch!
Year 1
Maths Modules
This is a 100% coursework coding introductory Java course, with a maths module code but taught by the DCS. The module assessment consists of three programming assignments, worth 25%, 35% and 40% of the module mark respectively — these assignments are harder than anything in MA124 Maths by Computer, but are very doable if you put in the time and don't leave them until the night before they are due! The assignments are mainly focused on using Java to solve computational maths problems, rather than programming in Java for its own sake.
For anyone who has already coded in Java (or has any significant programming experience) I would absolutely recommend this module more than any other first year optional: its 100% coursework nature means that it is very possible to get almost all, if not full, marks and it is one less exam to worry about in the summer.
Second years can also take this module, so if you are confident in Java you might want to save it for then to increase the degree credit you get from it (as second year is worth more than first). I'd still recommend it to anyone who hasn't done much programming but enjoyed MA124 in term 1, provided you are prepared to put in the time to learn Java and do the assignments alongside your other modules. The lectures for this module are entirely online and have PowerPoints that you can read through too, there are also in-person drop in labs run by TAs too — personally I found the latter a lot more helpful, but both are potentially useful resources. In the end though, like maths, coding is not a spectator sport — you'll get the most out of this module by putting in the time and trying the assignments!
External Modules
review here
CS141 features a fast-paced introduction to the programming language Haskell and functional programming concepts (via lectures & labs), two courseworks (weighted 15% and 25% respectively) which change topic every year, and an exam (weighted 60%). Despite references to abstract algebra and category theory, previous knowledge of semigroups, monoids, functors, and monads is not required. Despite references to computational theory, previous knowledge of the lambda calculus and turing completeness is not required.
I would recommend this to anyone with experience (and an interest) in programming; it is possible to keep up with no programming experience if you are well-suited to logic and don't mind putting in a few hours of extra study (outside of lectures/labs/coursework). Even those with experience in programming (and none in functional languages) will find it challenging as functional programming is quite different from procedural programming and requires you to reprogram your brain.
Regardless of the difficulty of the content, it is very well taught and the lectures notes and labs (by Alex Dixon) are extremely well-made. In addition, you can find supplemental resources on the webpage (I would recommend Learn You A Haskell). The content is highly rewarding and there is huge scope to delve further into functional programming than is necessary for the marks; the last couple weeks of lectures are essentially optional (won't be examinable) though are very interesting and will develop your understanding of functional programming greatly.
The module is generous with marks (provided you keep pace). It is feasible to get 100% in the courseworks if you complete the tasks to a high standard, and also go above and beyond the specification. The exam has 6 questions ranging in content from the basics of Haskell to the complex content at the end of the module; you answer 4 questions. This allows students who wish for easier marks to go for the questions examining harder content (which should be simple provided you understand the content) as opposed to the questions examining easier content (which will be less leniently marked and feature harder problem solving). Even without trying especially hard on the module or understanding a lot of the harder content, it is not hard to obtain a high grade.
Learning functional programming will also make you a better programmer, prime you for computational projects, and provide you with 2 courseworks to add to your CV.
review here
review here
PX157 consists of two parts: Electricity (Weeks 1-6), and Magnetism (Weeks 7-10). The module is 100% assessed by exam, but 10 problem sheets are available for practice. Weeks 1-6 cover elementary electrostatics as well as important results such as electrostatics, surface/volume integrals, Gauss’ Law, Coulomb’s Law, dielectrics, and capacitors. The remaining weeks serve as an introduction to magnetism and ‘fitting it in’ with electricity through concepts like magnetostatics, Ampère’s Law, Faraday’s Law, and LRC circuitry. Any future physics modules reliant on electrodynamics and electromagnetism (such as PX384: Electrodynamics) will naturally require a strong foundation in both electricity and magnetism, making this module an effective prerequisite. The module has strong synergies with Modelling 2 and Classical Mechanics (PX155).
I highly recommend this module to any student with an interest in physics. The lecture notes are excellent, featuring highly detailed derivations, examples and equation tables to aid revision. The content covered is more mathematically heavy than in other physics modules, and techniques learned in MA modules will come into play. Students who have not taken PX155 may be unfamiliar with concepts that physics students are typically comfortable with, such as the work-energy theorem or parts of rotational mechanics, but this is a minor disadvantage if you are willing to put in effort to keep up.
Each assignment typically only has 2 assessed questions, but they are a step-up in difficulty from typical weekly assignments and take time to work through carefully. This helps prepare for the exam, which usually has a 60% pass rate and features a ‘differentiator’ question that is noticeably harder than the rest. Revision lectures were held in the final week of the module, during which past papers were discussed and common mistakes/misconceptions were noted. Despite the difficulty of the exams, they are structured well, and there is only a small subset of questions that can realistically be asked.
Overall, PX157 is a well-designed and enjoyable module that anyone interested in physics or is simply curious enough should consider taking.
review here
review here
Year 2
Maths Modules
This module is split into two parts: the first half covers the basics of enumerative combinatorics, up to and including a short section on generating functions; and the second half covers some basic extremal graph theory, mostly on vertex and edge colourings and Kuratowski's theorem on minimal forbidden subgraphs.
In the first half, we learn about bijective proof techniques, using them to count the classical problem of placing balls into boxes (or counting functions between two discrete sets, or other equivalent formulations) up to various symmetries, which leads into integer partitions, Stirling numbers of the second kind, Catalan numbers, and a brief introduction to generating functions.
The second half of the module pairs well with CS137 Discrete Maths 2, CS254 Algorithmic Graph Theory, and to a lesser extent, with MA252 Combinatorial Optimisation, but serves well as a first course on graph theory alone. Graph traversal problems (Eulerian/Hamiltonian graphs) are introduced, followed by graph packing problems (independent sets, matchings, etc.), before covering some chromatic problems. The very last portion of the module covers some Ramsey theory and introduces some probabilistic proofs, similar to those from CS137 Discrete Maths 2.
The notes are well written and readable, though somewhat slow-paced, and the lecturer is also engaging and responsive throughout the course. The assignments and exam questions are also all interesting and require some amount of thought and creativity rather than mechanically applying rules and theorems.
Overall, the module is certainly on the easier side, and a high grade can be expected without too much hassle. Getting to grips with combinatorial thinking and theorems, as well as graph theory, is also greatly important, particularly in algebra, topology, geometry, and probability theory, as many results in these areas are combinatorial in nature. The main focus of this module is on enumerative combinatorics, but the second half of the module introduces some existential or extremal combinatorics as well, and you will find that these ideas pop up more and more as you progress through other modules.
review here
review here
The first half of this module is occupied with an introduction to asymptotic notation and Landau symbols, with some basic algorithm analysis, up to and including the Master theorem for recursive algorithms. Next, graphs are introduced, and we explore algorithms for solving various classic graph theory problems, such as graph traversals, minimum spanning trees, and shortest path. Networks and flows are then introduced, leading up to the Ford-Fulkerson algorithm, the max-cut min-flow theorem, and flow decomposition. Then, we cover the graph-theoretic version of Hall's condition/Hall's theorem and algorithms for stable matchings.
The second half of the module covers linear programming; converting linear programs to standard form, and transforming various graph optimisation problems into linear programs, before covering the geometric and tabular simplex methods.
In the year I took this module, the notes were handwritten and nigh unreadable, and the lectures were dull and unengaging; on some occasions, mistakes would be found near the end of an example, upon which the lecturer would erase the board and then repeat the last 20 minutes of the lecture with the mistake amended. The notes and lecturer have changed (improved) in the 23/24 academic year, but the content has remained largely unchanged, so the above summary is still applicable. Overall, the content in this module seems somewhat disjointed and incomplete: the only reason you should take this module would be to fill in extra MA2-coded modules for the second year MMath requirement — because if you are interested in this kind of mathematics, there are far better module options to take.
In particular, if you are interested in algorithms and graph theory, which the bulk of this module concerns itself with, you would be better off taking CS260 Algorithms and CS254 Algorithmic Graph Theory; and if you are interested in complexity theory (NP-hardness, complexity classes, matroids, etc. which used to be in this module before being replaced with linear programming), then I recommend taking CS301 Complexity of Algorithms, or alternatively for computability theory, C259 Formal Languages, PH345 Computability Theory, and PH349 Logic III: Incompleteness & Undecidability.
This optional module is a great choice for anyone who liked and did well in previous analysis modules and Modelling 1! It also goes well with the core MA260 Norms, Metrics & Topologies that takes place in the same term. There is a decent balance between proof and computation — the module begins more proof orientated, proving results such as the contraction mapping theorem and Picard theorems (all of which are also seen at the end of MA260) and later is more computational, such as determining the stability of fixed points and drawing their phase portraits. There are also sections on Lyapunov functions, Hamiltonian systems, Lotka-Volterra equations and the Stable Manifold Theorem, which will interest those who enjoy physics and multivariable analysis.
The notes are initially dense, but are well written with lots of worked examples in the later sections. They are supported by the accompanying worksheets which are good for understanding the material — the notes explicitly signpost to specific questions on these sheets throughout. The lectures are on the fast side but are engaging and complement the notes, the lecturer is also enthusiastic and good at answering questions both in the lectures and on forums/over email. The 23/24 exam for this module favoured computation, but this was the first year it was taught by the current lecturer so future papers might be more balanced. The content hasn't changed much under the new curriculum, so most past papers are still useful.
As someone who likes analysis and modelling, I enjoyed this module and would recommend it to anyone who found themselves asking under what circumstances we can guarantee a well-posed solution to the initial value problems from Modelling 1, as well as to those considering exploring 3rd/4th year modules in analysis, dynamical systems, physics and mathematical biology!
This module covers a large range of topics which come under the umbrella of mathematical biology. Each week the lecturer covers a small number of these topics, which are arranged in increasing scale, beginning with enzymes and diffusion, then moving through electrophysiology and cellular communication, and finishing with population and disease modelling. For me, it felt that time was disproportionately weighted towards electrophysiology and cellular communication, possibly because it aligned with the lecturer’s research interests.
Lectures were enjoyable to attend, and he was encouraging of student participation. They were not recorded although, instead he provided video summaries of the lecture in which he annotated his handwritten notes. The lecture notes were provided weekly and also included roughly 3 questions for each week. They were written in LaTeX and very readable. The questions were a mixture of theory and also some coding, which we would then go through in the weekly support class. One should be aware that lots of diagrams, especially phase planes, would only be provided in lectures and would not appear in the recap videos or lecture notes. Similarly, in some cases, the explanations provided in the notes and videos for certain derivations/calculations would be a lot briefer than in the lectures.
Having not learnt any Biology since taking GCSEs, I did not feel to be at any disadvantage compared to people who had studied it further than that. Any knowledge of biology was thoroughly explained and felt intuitive.
In preparation for the exam, the lecturer dedicated week 10 to revision, provided a mock paper (we did not have any available relevant past papers), and also ran a revision session in term 3. The exam itself felt fair, with lots of marks for bookwork.
I would strongly recommend this module for anyone with interests in applied maths. Other modules which I felt went nicely with this one are Theory of ODEs, and Intro to PDEs.
This optional module continues directly on from the number theory seen in Foundations, but without the focus on cryptography and more that of a general introduction. The first half mostly recaps number theory seen in Foundations, so joint degree students who did Sets & Numbers will not be at a disadvantage. There is some non-Foundations content on quadratic residues and Legendre notation towards the end of this half. The second half is about Diophantine equations, introducing results like Minkowski's theorem and the two, three and four square theorems. There is also some overlap with Algebra 3 with Gaussian primes and unique factorisation in the Gaussian integers. The end of the module also looks at Waring's problem and results in Diophantine approximation such as the Dirichlet approximation theorem, which you may have seen in Analysis 1.
The notes are short and concise, relative to other second year modules; cover material well, and have lots of brief mentions of extension material/theorems for those who are keen to explore beyond this module. Many of the exercises seen on the worksheets and assignments are well-known 'classical' proofs and problems, so those who have read around number theory or tried olympiad number theory problems will likely have seen some of them before — but this is far from necessary, and the questions are good practice at developing intuition, applying theorems, and spotting tricks.
The lectures were well-paced and added more detail and useful explanation as the notes were quite short. The exams for this module in 22/23 and 23/24 were nice, with a good mix of computational questions and (mostly) bookwork proofs. The content has not changed much under the curriculum changes from 23/24 onwards, so most past papers are still useful. This module is a great choice for anyone who enjoyed the number theory in Foundations and/or for anyone who has read around number theory in their own time!
This module — optional core for BSc (along with MA266) and (thankfully) core for MMath — is a fantastic choice for anyone who has enjoyed previous courses in analysis, vector calculus, and partial differential equations, and is invaluable for any future analysis, modelling, or applied mathematics modules! The module begins by rehashing some material from Analysis 3 — in particular, the definitions of continuity and differentiability in n-dimensions; a comparison of the directional, frechet and partial derivatives; operator norms; and dual spaces. You are then introduced to the powerful inverse and implicit function theorems, which are proved thoroughly and then are demonstrated in their use with multiple examples. The later half of the module then explores some topics previously seen in Modelling 2, but focusses on proof as well as application: the notion of the Hessian, the commutativity of partial derivatives, the second order Taylor expansion, critical point classification, integrating in higher dimensions (i.e. higher dimensional Riemann integration) and Fubini's theorem, the notion of flux, and the divergence theorem are all studied rigorously and proved. The notion of measure is also first hinted at along the way, with the idea of measure zero sets.
The notes are very well written and make use of a good balance of proofs and examples, and work well with the worksheets — an excellent course text recommended by the lecturer, Calculus on Manifolds by Spivak, also complements these well. The greatest strength of this module however is the lecturer himself, who takes a potentially very difficult subject which you would expect to be unintuitive and makes it not just seem intuitive, but also fascinating and worthy of further exploration — the lectures for this were some of the best I have attended in my 2 years here so far. The 23/24 exam for this module was a very good mix of bookwork and computation, but this was the first year this module has run in its current form, so future papers might be slightly different. While similar, the question style especially is rather different to the prior equivalent of this module, so there might not be many past papers available, but the worksheets are very good for practice. If you are a BSc student or a joint degree at all interested in potentially doing any analysis, partial differential equations, physics, or mathematical modelling that involves vector calculus in third year, it is not just recommended but essential to take this module (it is core for MMath for a reason) and I would thoroughly recommend it!
This module follows the first year linear algebra courses. The module is essentially split into 3 sub-parts. The first few weeks focus on introducing and developing the Jordan canonical form, generalising matrix diagonalisation. A few practical applications then follow. You then move onto bilinear maps and quadratic forms; a second look at the Gram-Schmidt process naturally follows. The module concludes by looking at the dual vector space, as well as tensors and the exterior and symmetric algebras.
On the whole, the module is fairly enjoyable with an okay mix of theory and application. The assignments, however, are almost entirely computational and are a complete pain to do. Several require working with large matrices and frankly feel like a huge waste of time. The final chapter was rushed in lectures and lacks examples/exercise questions. Everything before the final chapter was well explained and the notes are thorough with many examples to help you get to grips with the many algorithms in the module. The module pairs well with Theory of ODEs where much of the work on the Jordan form is applied.
This module, as the name suggests, focusses on two topics. Most people find the first five weeks of the module to be the hardest since at the start, asymptotics can feel a bit like educated guessing. I found that after practicing a bit, this feeling went away and it became relatively intuitive. The latter half of the module focuses on integral transforms, beginning by recapping some complex methods introduced in Analysis 3. These methods, as well as general integration techniques you should know already, are then used to apply Fourier and Laplace transforms. The second half of this module is incredibly fun since it's just messing around with different integrals and differential equations and gives a nice break to the proof based courses you take.
The problem sheets and examples in the notes are great however some can be a bit tedious to work through. Since there is very little content in the module it is easy to revise and doesn't take up much time compared to other second term modules. The exams also follow a similar structure each year so it is an easy module to revise.
I felt like this was one of the easiest and most enjoyable modules I took in second year and really recommend it.
External Modules
review here
This module introduces and explores the notion of a formal language — a set of strings over some alphabet of symbols. These languages can be categorised by (amongst other things) what kinds of automata/models of computation accept them. This module covers most of the languages in the Chomsky hierarchy, excluding context-sensitive languages.
We begin with regular languages accepted by DFA, and prove the equivalence of languages generated by (G)NFA, regular expressions, and strictly left/right linear grammars. The Myhill-Nerode theorem and pumping lemma for regular languages is then proved, allowing us to show that some languages are non-regular.
Next, context-free languages are introduced, along with pushdown automata, parse trees, Chomsky Normal Forms, CYK parsing, and the pumping lemma for context-free languages.
In the last section, we cover Turing machines and introduce Turing-decidable and Turing-recognisable languages. The halting problem and other decidability and computability problems are then explored.
There are no official notes for this module, but the WMX notes available on this site are generally very comprehensive, and the course content has not changed in many years. The lectures are generally useful, particularly near the end of the module. Most of the problems in this module require a fair amount of creativity to solve, and are quite fun to do, and the exam also has a very consistent format. The coursework of designing a basic lexer and parser with JCC is also reasonably interesting, with there being many different ways to implement the function calls.
Overall, I highly recommend this module for anyone interested in computability or complexity theory. This module also ties in well with PH345 Computability Theory, CS260 Algorithms, and CS301 Complexity of Algorithms. The coursework and much of the theory is also relevant to/required for CS325 Compiler Design.
The module closely follows the Kleinberg and Tardos Algorithms textbook. The textbook is clear and well-written, so CS260 references the book in place of official course notes. However, the slides, weekly seminar sheets, solutions, past exam papers, and past class tests are all made freely available for practice. The module requires you to produce rigourous proofs of correctness and runtime analysis, with much less emphasis and importance placed on actual implementation details. This is a good thing! You gain a deeper and more general understanding of problem solving, and no coding knowledge is required. The exam requires very little memorisation and is heavily focused on applying the techniques shown in lectures to unseen problems.
The module is split into two halves. The first half looks at general problem solving methods such as: greedy algorithms, divide and conquer, dynamic programming, graph algorithms, and other classic approaches. Lectures in the first half consist almost entirely of many worked examples of each method, diving straight into their use on specific problems. I found this to be an effective way of actually learning how to apply these approaches to problems. Even if you go into the module with an understanding of what the methods are, the variety of the examples will show you new and interesting applications. However, the examples in lectures are not to be memorised. They are used to build your intuition around the overarching methods, as you will be required to use these techniques on unseen problems. This leads to satisfying and engaging assessed content, where you solve unseen problems using your knowledge bank of similar examples from lectures/the textbook.
The second half looks into complexity classes of algorithms, P, NP, NP-Complete, Np-Hard, and their relationships, providing an understanding of the statement and importance of the P vs NP problem. We study polynomial reductions between algorithmic problems, and the exam/problem sheets will expect you to produce a reduction (and more importantly, a correctness proof) between two unseen problems. Again, many concrete examples and reductions are shown in lecture, covering some of Karp's 21 NP-Complete Problems and Satisfiability. The content is very interesting, and once you get your head around the big idea with reductions and completeness, the module clicks and the content becomes much more approachable.
The module ends with a look into Flow Networks for some reason. I strongly recommend this module; it's a solid and core foundation for the theoretical study of algorithms and of what types of problems are solvable. It's taught well, by knowledgeable lecturers who are approachable and engaging.
The module begins with an introduction to propositional and predicate logic, covering various normal forms and proof techniques like resolution, semantic tableau, and natural deduction. Next, there is a longer section on Boolean satisfiability (SAT), mainly covering the DPLL and CDCL algorithms. Then, the last part of the module covers program verification and Hoare logic.
The coursework involves writing a SAT solver in the logic programming language Prolog. At least one of the questions on the exam is also always on Prolog (e.g. deciphering a given Prolog predicate, writing a short Prolog predicate, etc.) so it is worth spending some time learning Prolog in more detail. Getting good marks in the coursework is relatively easy, but attaining the top scores will likely require many hours of optimisation. The exam is also the same consistent format every year — with one question being able to be skipped — and the logic and Prolog sections are usually easy to score well in, but the satisfiability question is often very difficult if you don't spot the trick.
There are no official notes for this module, but there are some comprehensive student notes available, and the recommended textbooks cover the content well. The module ties in well with CS260 Algorithms with the satisfiability section. Also note that the propositional and predicate logic section in this module is much more rigourous than PH136 Introduction to Symbolic Logic.
review here
review here
This module is 100% coursework, assessed as a series of short assignments followed by a longer project at the end. The module is entirely in Python and also requires very little physics background to complete, though some physics knowledge will likely help with the problem mentioned in the next paragraph.
The assignments are all relatively easy, with most of the difficulty stemming from deciphering what the question is asking; implementation is generally not too much of a problem.
There is a choice of projects at the end, but each one will be more involved than the assignments, and will likely take several cycles of debugging and troubleshooting to complete. Again, much of the time cost of the project is in deciphering the questions. A portion of the marks for the project is also allocated to parallelisation or multiprocessing (note that if you work on the project as a Jupyter notebook, you will need to write to an auxiliary .py file as multiprocessing is not supported on interactive interpreters like Juypter).
Overall, the module is on the easier side, and a high mark can likely be consistently achieved without much issue for anyone with any non-zero amount of programming experience.
review here
This module is a requirement if you want to do further stats modules in years 3 and 4. It begins by recapping most of the usual distributions, as well as one or two new ones I had not seen before. The second half of the module is then applying these distributions with an emphasis on likelihood methods of estimation and testing. The module is primarily focused on applying the content taught and proofs do not form a large part of the syllabus.
I did not find this module enjoyable at all: the lecture notes were not very good and had few useful examples; and the problem sheets were also fairly useless in teaching the content as most were far too convoluted to be of any help when revising. The bi-weekly online assignments were reasonable, if a bit long. The best source of questions for this module are the past papers since the questions tend to be fairly similar.
review here
Year 3
Maths Modules
review here
This is a module where you will very much want to go to lectures — the pace is fairly fast and the Modules half of the module title does a lot of heavy lifting. There is also a fairly long section on division rings, which you may find interesting if you have ever looked at quaternions before.
There are also lots of smaller topics — often just strung together because they are vaguely related. On the other hand, there aren't many long nasty proofs, and if you enjoy following your nose to prove that definitions make sense, you will definitely like this module. I recommend this module for anyone who enjoys learning lots of definitions.
The exam was fairly hard but doable, although this may change with the new lecturer. I suggest trying the past papers well in advance.
review here
review here
review here
review here
review here
review here
I found this module fascinating, but rather disorganised (although that may have changed as Gavin is no longer lecturing). The exam was really great, and the example sheets were also very nice. The main focus of the module is field extensions and using them to do things like proving that there is no general formula for the roots of a quintic; it's a really nice module if you're interested why such things are true. That said, there are a lot of new definitions, and a fair bit of time is spent reviewing stuff from previous modules.
review here
The module starts — as most algebra modules do — with a sweeping review of basic definitions; but after that, it picks up and dives straight into group representations and their characters (these are less scary than they may sound). You will encounter lots of new definitions, but nothing particularly onerous is done with them theoretically; the module is mostly engaged in the practical finding of representations and characters.
The lecture notes are excellent; the lectures were less so, I found — although part of it was that they were either late or early and everyone was tired.
Unlike MA260 Norms, Metrics, and Topologies, this module is not an analysis module, and is in fact the first time students have the opportunity to see any algebraic topology at all. This module covers the fundamental group and roughly follows the second chapter of Hatcher.
The module begins with an introduction to paths and loops, and retractions and free/relative homotopies, before introducing the basic notion of a fundamental group of a pointed space. Covering spaces and lifting are then covered, along with the homotopy and path lifting properties. Functoriality and homotopy invariance of the fundamental group is then proved, followed by the famous Brouwer fixed-point theorem and Borsuk-Ulam theorem. After a short section on fundamental groups of wedge sums and products and on the Galois connection, various forms of the Seifert-van Kampen theorem is introduced.
In this year I took this module, the lectures were highly disorganised and unhelpful, and the typed notes from previous years were partially dispensed with and replaced by handwritten notes full of mistakes. The last part of the module on CW complexes and generators/relators was completely removed and replaced with extra covering space theory. (This also made MA3H3 Algebraic Topology significantly more difficult, as that modules assumes knowledge of CW complexes.) However, the lecturer has since changed, so the quality of this module will likely improve.
review here
review here
review here
review here
review here
review here
This module covers an axiomatic treatment of set theory using ZFC. After introducing some axioms, the majority of the module is spent on encoding various structures in the pure hereditary sets of ZFC, starting with pairs and relations, before constructing numbers. Some time is then spent on the notion of cardinality, finiteness, and well-ordering, as well as exploring the equivalences of various forms of Choice. Finally, cardinals and ordinals are encoded, and some basic results in cardinal and ordinal arithmetic are proved.
The notes are well-written and interesting, with lots of clearly-marked non-examinable extension material for interested readers, and the lectures complemented the notes well. The worksheets and exercises are generally relatively easy, though many of the earlier ones simply involve routine algebraic manipulations with little creativity or thought required.
The course focusses somewhat excessively on construction, and covers relatively little on set theory outside of its use in encoding other mathematical structures — but at the same time, these particular constructions aren't very interesting foundationally, and PH342 Philosophy of Mathematics or PH340 Logic III would be a better pick for those interested in set-theoretic foundations. Aside from this, the module is well-taught and is suitable for students over a wide range of mathematical interests. This module is on the easier side of things, but beware that MA3L1 Topics in Set Theory is much more difficult and involved.
review here
This module is incredibly dense compared to MA3F1 Introduction to Topology, though it should be noted that relatively little from that module is required for this one; MA3F1 is concerned entirely with homotopy theory, while this module covers homology theory. Only the basic notion of a homotopy, and the Seifert-van Kampen theorem are assumed in this course, and these can be learnt separately without much issue. This module roughly covers the third chapter of Hatcher.
The module introduces the idea of homology, beginning with semi-simplicial structures and simplicial homology, before introducing the more general concept of a chain complex, and the more flexible singular homology, which is used for much of the remainder of the course. Two main results in singular homology then take up a large proportion of the middle section of the module: proving Homotopy Invariance with chain homotopies and the prism operator; and the Mayer-Vietoris Long Exact Sequence with barycentric subdivision. Using these results, the Jordan Curve theorem is finally proved, having been mentioned since the foundations notes in first year.
The most difficult parts of the module are then covered: degrees and orientations. Some experience with manifolds and complex analysis may help in these sections. Finally, Euler characteristics, cellular homology, and a proof of the equivalence of the simplicial and singular homology theories is given, along with a very brief introduction to category theory and a short epilogue on generalised (co)homology theories.
The notes are dense and often skip over many details — in particular, many canonical maps are never explicitly given, along with other similar constructions, so some experience with category theory may help here. The lectures are very fast-paced and similarly skip over many details, leaving things as exercises or just marked as "obvious". Many interesting and beautiful results are covered in this module, but the sheer quantity and speed of content asks a lot of the students taking the module: overall, the module is difficult, but rewarding.
review here
This module covers a variety of topics and is very different in flavour from MA241 Combinatorics: this module has a much weaker focus on enumerative combinatorics, instead covering much more general theories of discrete structures — indeed, the first half of the module is simply titled "Patterns" in the notes.
We begin with finite projective planes and a surprising link to Latin squares, before moving to error-correcting codes and Shannon's coding theorem. Next, some discrete and convex geometry is covered, proving the equivalence of polyhedra and polytopes in Euclidean spaces, as well as Radon's lemma, Helly's theorem, and the Colourful Carathéodory theorem. Then, some poset and set systems are covered, where we see Sperner's theorem, Dilworth's theorem, and the Sauer-Shelah lemma.
As is traditional for a combinatorics module, the second half is occupied with graph theory. Brooks' theorem is finally proved, having been stated in various previous combinatorics/graph theory modules, and some chromatic polynomial theory is introduced. Some interesting links to algorithms are also shown in a short section on matroids that covers Rado's theorem, Horn's theorem, and the greedy matroid theorem. The last section covers some random graph theory — in particular, some probabilistic bounds on random graphs with large chromatic number and girth, as well as exploring some limits and bounds on other graph properties like connectedness.
This module links to a variety of other modules: MA243 Geometry with some of the projective geometries; MA3G8 Functional Analysis II with convex geometry; MA3H3 Set Theory with posets and chains; MA3K1 Mathematics of Machine Learning with VC-dimension and the Sauer-Shelah lemma; and MA4M8 Theory of Random Graphs with the entire last section on random graphs.
The notes are generally well-written, and the lecturer is enthusiastic and engaging throughout the term. The module is certainly more difficult than MA241 Combinatorics, but is equally as enjoyable — if not more so — with almost all of the problems encountered in this module requiring some creativity and thought to solve. Many of the proofs covered are also elegant and interesting to read — in particular, the trick at the end of the polytope/polyhedra equivalence proof is not one to be skipped. The exam also involves little bookwork, and focusses much more on problem solving.
The best part of this module for me was Dave. In all seriousness, it is very interesting. If you are expecting a "nice", practical ODEs module, though, this is not it; there is lots of theory and there are several Big Theorems, many of which are helpfully left unproved to make them more difficult to remember.
As the module name suggests, it is split into three sections: bifurcations, catastrophes, and symmetries. Bifurcations are when the number or type of fixed points changes; expect to draw lots of diagrams. In the catastrophes section you will also draw lots of diagrams, but in between the diagrams there is a lot of fairly dense theory. The symmetries section is essentially just some applied group theory, along with bug facts — I suspect it's mostly there so we can talk about bug gaits.
The exam tends to be a fair mix of all three topics and very doable. The papers are not in a strict format but they are usually fairly similar from one year to the next.
review here
review here
review here
This module is concerned almost exclusively with finite groups. Most of the content is in the year 2 algebra module, but is covered in more detail and some proofs omitted in previous modules are covered here. Apart from this, the new material is on soluble groups, composition series and the Jordan-Hölder theorem, and classifying finite groups of small order.
The lectures were good, but the notes, exercises, and general contents are where this module falls short. The notes frequently refer to results scattered throughout the exercise sheets, making them extremely difficult and time consuming to read through. The exercises are dull and uninteresting, and the exam is almost entirely bookwork or otherwise require memorisation of every obscure result from the exercise sheets and are otherwise completely inaccessible. There is very little room for actual problem solving in the module, and all the questions merely require you to regurgitate results and definitions without much user input required.
This module is much easier than most other MA3 modules, with very little new content, and an exam consisting of almost entirely bookwork. However, the content is exceedingly dull and uninteresting (though the lectures are generally very good). Because so many other more interesting algebra modules are available, I find it difficult to recommend this module — though of course, your milage may vary.
review here
review here
review here
review here
review here
review here
review here
External Modules
review here
review here
review here
review here
review here
review here
review here
review here
review here