MA934: Module Resources
Lecturer: Radu CimpeanuLink opens in a new window
The information below is relevant to the 2022/2023 iteration of the module, and will be updated in due course for the 2023/2024 academic year.
Graduate teaching assistant: Oscar HolroydLink opens in a new window
MS Teams group: can be accessed here (for questions, links and miscellaneous communications)
MA934 is five weeks long and runs from week 1 to week 5 (inclusive) of the Autumn term.
Lectures
Mondays 1000 - 1200 in D1.07 (CDT Seminar Room, Floor 1, Zeeman Building) unless otherwise advised
Tuesdays 1000 - 1200 in D1.07 (CDT Seminar Room, Floor 1, Zeeman Building) unless otherwise advised
Classes
Mondays 1300 - 1500 in D1.07 (CDT Seminar Room, Floor 1, Zeeman Building) unless otherwise advised
Tuesdays 1300 - 1500 in D1.07 (CDT Seminar Room, Floor 1, Zeeman Building) unless otherwise advised
Assessment:
Oral viva examination (40%)
Written class test (40%)
Coursework (20%)
Notes:
Complementing your Introduction to Computing workshops, 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 practice problems should you wish to attempt them ahead of (or during) the term for additional practice.
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 1
- 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. Logistics, 1. Computer arithmeticLink opens in a new window, 2. Divide-and-conquer algorithmsLink opens in a new window, 3. Recursion and sortingLink opens in a new window, 4. Data structuresLink opens in a new window
- Extra reading: Beyond floating-point arithmeticLink 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 window), matrix-matrix multiplication timelineLink 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).
Week 2
- 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 window, 2. Finite difference method primerLink opens in a new window
- Extra reading: Lagrange polynomial interpolation exampleLink opens in a new window, spline interpolation (section 3.2)Link opens in a new window, finite difference methodLink opens in a new window (and some useful examplesLink opens in a new window), upwinding schemesLink opens in a new window (advanced material), root finding tutorialLink opens in a new window.
Week 3
- 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 window, 3. Convex optimisation and linear programmingLink opens in a new window
- Extra reading: MA398 Matrix Analysis and Algorithms NotesLink opens in a new window (skim Lectures 2-4, 20-25), the SuperLU solver (user guideLink opens in a new window and presentationLink opens in a new window), Painless conjugate gradientLink opens in a new window (and associated Jupyter notebooksLink opens in a new window), Stochastic gradient descentLink opens in a new window (see Chapter 14 in particular), linear programming tutorialLink opens in a new window and simplex algorithm walkthroughLink opens in a new window.
Week 4
- Notes 7Link opens in a new window: Dynamic programming and Dijkstra's algorithm
- Notes 8Link opens in a new window: Solving differential equations and Fourier transforms
- Jupyter notebooks: 1. Solving differential equationsLink opens in a new window, 2. Fourier transformsLink opens in a new window
- Extra reading: Dijkstra's algorithm implementationLink opens in a new window, Stiff differential equationsLink opens in a new window explainer, Grid adaptivityLink opens in a new window in the wild, scipy FFT tutorialLink opens in a new window, signal processing walkthroughLink opens in a new window
Problem sheets:
Jupyter notebooks containing homework problems will be made available through the website and our Microsoft Team at the start of each week.
- Week 1 Problem SheetLink opens in a new window (unassessed)
- Week 2 Problem SheetLink opens in a new window (assessed)
- Week 3 Problem SheetLink opens in a new window and sketchLink opens in a new window (unassessed)
- Week 4 Problem SheetLink opens in a new window (assessed)
Deadlines:
- Deadline for submission of 1st assignment is 12:00 noon on Thursday 20th October (week 3) - to be discussed in class.
- Deadline for submission of 2nd assignment is 12:00 noon on Thursday 3rd November (week 5) - to be discussed in class.
- 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.
- The class test will be held on Monday 31st October 2022 at 10am. The complete set of notes can be found hereLink opens in a new window as a single .pdf document (which may be useful for revision). Example problemsLink opens in a new window are also available (solutions made available by Friday in order to give you a chance to try them out).
- Vivas will be held on Tuesday 1st November 2022 (the final timetable can be found hereLink opens in a new window). Please consult the provided list of topics and sample questionsLink opens in a new window as preparation.