A course on computing aimed at the PhD students at the London School of Geometry and Number Theory. The course teaches computing using advanced examples from geometry and number theory. The aim is to teach a variety of programming styles and to show how computing can be used as part of research.
We won't assume that you know how to program on the course, but we'll definitely assume you are good at maths and a quick learner. So if you've never programmed before you might, you might want to have a go before the course starts.
It's best to learn to program by solving problems rather than just by reading. Ideally, you would solve a maths problem that interests you, but for ideas Project Euler is an online resource containing maths problems that typically need a computer to solve them. If you can already program, solve the problems in the language of your choice. If you can't program you might want to try to start teaching yourself a language. Just learn as much as you need to solve the problems. Python is a good choice because there are lots of online tutorials, for example this non-programmer's introduction to Python 3.
The other language we cover in the course is Mathematica. The online tutorials aren't as many and as varied as for Python, but you might try their Fast Introduction for Math Students.
Introduction/Motivation/Getting started with Mathematica. Slides.
Functional Programming/Cubic surfaces. Slides.
Functional Programming/Schlafli Graph. Slides. 27 Lines Notebook
Functional Programming Slides.
Data Structures/Differential Geometry/Exercises. Mathematica Notebook.
Mathematica Cheat Sheet (not by me)
Procedural programming in Python. Slides. Solutions.
Flow of control.Slides. Code and Solutions.
Object oriented Python. Elliptic Curve Cryptography Slides. Code and Solutions.
Python Cheat Sheet (not by me)
Remote desktop environment nmslabrdp1.nms.kcl.ac.uk
Location of anaconda "/opt/anaconda3/bin/python"