MA934: Module Resources
Lecturer: Radu CimpeanuLink opens in a new window
The information below highlights some of the relevant structure for the 23/24 academic year, with the lecture notes each week being made available the week before the content is to be covered, and additional resources enhancing some of the materials to be added during each week based on our discussions and the interests of the module takers.
Graduate teaching assistant: Oscar HolroydLink opens in a new window
MA934 is five weeks long and runs from week 6 to week 10 (inclusive) of the Autumn term.
Lectures
Mondays 10:00 - 12:00 in D1.07 (CDT Seminar Room, Floor 1, Zeeman Building) unless otherwise advised
Thursdays 10:00 - 12:00 in D1.07 (CDT Seminar Room, Floor 1, Zeeman Building) unless otherwise advised
Classes
Mondays 13:00 - 15:00 in D1.07 (CDT Seminar Room, Floor 1, Zeeman Building) unless otherwise advised
Thursdays 13:00 - 15:00 in D1.07 (CDT Seminar Room, Floor 1, Zeeman Building) unless otherwise advised
Assessment:
Coursework (60%), with one formative assessment, and four graded problem sheets worth 15% each. The afternoon classes will provide opportunities to engage with this material during each week.
Oral viva examination (40%).
Notes and resources:
Complementing any induction sessions and materials received prior to the start of the module, you may also find some of the MA124 Mathematics by ComputerLink opens in a new window content useful. The module switched from Matlab to Python in 2021 and contains a helpful starter kit (Installing Anaconda, Running JupyterLab for the first time), which includes some of the environments and tools you have become acquainted with already, plus a few exercises should you wish to attempt them ahead of (or during) the term for additional practice. You can find other excellent resources on these environments such as the Project Jupyter page (the installation and documentation pages in particular) and the classical Python tutorial (familiarity with sections 1-4 will be helpful, elements from section 5 onwards are part of the subject matter of the module itself), and in general do not hesitate to explore the wider landscape as you either familiarise yourselves for the first time or explore topics of interest in which you may already have some experience more deeply.
Below are the key topics we will cover during the coming weeks. The notes (in .pdf format) will be uploaded here as we start navigating through the materials. Please let me know about any errors or typos which you find.
For Jupyter notebooks the images which occasionally appear in each sheet can be found hereLink opens in a new window. Please retain the same relative paths for them to work (you should keep the .ipynb's in a folder, with files/images/ as a subfolder therein).
Week 6
- Notes 1Link opens in a new window: Finite precision arithmetic, algorithms and computational complexity
- Notes 2Link opens in a new window: Recursive functions and data structures
- Jupyter notebooks: 0. LogisticsLink opens in a new window, 1. Computer arithmeticLink opens in a new windowLink opens in a new window, 2. Divide-and-conquer algorithmsLink opens in a new windowLink opens in a new window, 3. Recursion and sortingLink opens in a new windowLink opens in a new window, 4. Data structuresLink opens in a new window.
- Extra reading: Beyond floating-point arithmeticLink opens in a new windowLink opens in a new window, approximation disastersLink opens in a new window (see also Matt Parker's book Humble pi: when math(s) goes wrong in the real worldLink opens in a new windowLink opens in a new window), matrix-matrix multiplication timeline aLi link opens in a new window.((aLink opens in a new window(beyond StrassenLink opens in a new window, and the very latest contributionLink opens in a new window from just last year), sorting and interview questionsLink opens in a new window, Gillespie algorithm notes and code (source 1Link opens in a new window and source 2Link opens in a new window), Data Science for Social GoodLink opens in a new window.
Week 7
- Notes 3Link opens in a new window: Interpolation and numerical derivatives
- Notes 4Link opens in a new window: Numerical integration and root finding
- Jupyter notebooks: 1. Lagrange polynomial interpolationLink opens in a new windowLink opens in a new window, 2. Finite difference method primerLink opens in a new window
- Extra reading: Lagrange polynomial interpolation exampleLink opens in a new windowLink opens in a new window, Neville's algorithm in actionLink opens in a new window, spline interpolationLink opens in a new window (section 3.2)Link opens in a new window, the finite difference methodLink opens in a new windowLink opens in a new window (and a useful calculatorLink opens in a new window, see the How does it work? section too!Link opens in a new window), upwinding schemesLink opens in a new windowLink opens in a new window (advanced material), Romberg integrationLink opens in a new window, root finding tutorialLink opens in a new windowLink opens in a new window.
Week 8
- Notes 5Link opens in a new window: Numerical linear algebra
- Notes 6Link opens in a new window: Optimisation
- Jupyter notebooks: 1. Linear system solving building blocksLink opens in a new window, 2. Nonlinear optimisationLink opens in a new windowLink opens in a new window, 3. Convex optimisation and linear programmingLink opens in a new window
- Extra reading: MA398 Matrix Analysis and Algorithms notesLink opens in a new windowLink opens in a new window (skim Lectures 2-4, 20-25), the SuperLU solver (user guideLink opens in a new windowLink opens in a new window and presentationLink opens in a new window), painless conjugate gradientLink opens in a new window Link opens in a new window (and associated Jupyter notebooksLink opens in a new windowLink opens in a new window), stochastic gradient descent theoryLink opens in a new windowLink opens in a new window (see Chapter 14 in particular) and implementation highlightsLink opens in a new window.
Week 9
- Notes 7Link opens in a new window: Dynamic programming and Dijkstra's algorithm
- Notes 8Link opens in a new window: Solving differential equations
- Jupyter notebooks: 1. Solving differential equationsLink opens in a new windowLink opens in a new window
- Extra reading: Linear programming tutorialLink opens in a new window and simplex algorithm walkthroughLink opens in a new window, Dijkstra's algorithm implementationLink opens in a new window, stiff differential equationsLink opens in a new window explainer (with a few extra notesLink opens in a new window), grid adaptivityLink opens in a new window in the wild.
Week 10
- Session 9Link opens in a new window: Fourier transforms, deep dives and review
- Session 10: Oral examinations
- Jupyter notebooks: 1. Fourier transformsLink opens in a new window
- Extra reading: scipy FFT tutorialLink opens in a new window, signal processing walkthroughLink opens in a new window, the FFTWLink opens in a new window (and a nice blog postLink opens in a new window on its usage, as well as some more advanced benchmarking notesLink opens in a new window as comprehensive database for alternatives). Deep dive: automatic differentiation for neural networksLink opens in a new window (and a different perspectiveLink opens in a new window). Other topics of (potential) interest: on the agile approachLink opens in a new window to software engineering, UKRI reponsible research innovationLink opens in a new window.
Problem sheets:
Jupyter notebooks containing homework problems will be made available through this website.
- Week 6 Problem SheetLink opens in a new window (unassessed), due at 5pm on Friday week 7 (optional, for feedback).
- Week 7 Problem SheetLink opens in a new window (assessed), due at 5pm on Friday week 8.
- Week 8 Problem SheetLink opens in a new window (assessed), due at 5pm on Friday week 9. The image required to compile the notebook can be found hereLink opens in a new window.
- Week 9 Problem SheetLink opens in a new window (assessed), due at 5pm on Friday week 10.
- Week 10 Problem SheetLink opens in a new window (assessed), due at 5pm on Friday week 11. An extra support session will be held on Monday week 11 (2pm-3pm, room D1.07), everyone is welcome but the class is optional.
Deadlines and assessment notes:
- The deadlines for the problem sheets are highlighted above, with this section being updated with relevant dates as we navigate each week.
- In line with broader university policy, the penalty for late submission of work, where no formal extension has been granted, is a reduction in marks of 5 percentage points per working day. "Marks" refer to point scores on a percentage scale. A late piece of work that would have scored 65% had it been handed in on time would be awarded 60% if it were up to one day late, 55% if up to two days late and so on. A day is counted as a 24-hour period from the original published deadline. Penalties only accrue on University working days (not on weekends or public holidays).
- Assignments will be submitted (as a .zip archive containing both code and a readable .pdf version of the solution) via this online webformLink opens in a new window. Please also ensure that you carefully read and complete the online declaration when submitting a piece of assessed work.
- Vivas will be held during Wed 6th December - Fri 8th December 2023 (the final timetable will be circulated via email at least at a week prior to the examination). Please consult the provided list of topics and sample questionsLink opens in a new window as preparation, with questions being drawn randomly from the respective list on the day, and (answer-dependent) follow-up questions also to be expected. As oral examinations have a particular assessment, please see the university marking schemeLink opens in a new window for PGT students in the Faculty of Science.
- The complete set of notes can be found hereLink opens in a new windowLink opens in a new window as a single .pdf document (which may be useful for revision). Consulting the associated content as part of the provided Jupyter notebooks (many of which contain relevant theoretical content alongside practical exercises) is also highly encouraged.
- Please consider filling in the module feedback formLink opens in a new window. The feedback is anonymous and your thoughts will help improve future iterations of the module.