Computing for Geometry and Number Theory

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.

Optional - Preparing for the Course

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.

Part 1 - Mathematica

Lecture 1

Introduction/Motivation/Getting started with Mathematica. Slides.

Lecture 2

Functional Programming/Cubic surfaces. Slides.

Lecture 3

Functional Programming/Schlafli Graph. Slides. 27 Lines Notebook

Lecture 4

Functional Programming Slides.

Lecture 5

Data Structures/Differential Geometry/Exercises. Mathematica Notebook.

Mathematica Cheat Sheet (not by me)

Part 2 - Python

Lecture 6

Procedural programming in Python. Slides. Solutions.

Lecture 7

Flow of control.Slides. Code and Solutions.

Lecture 8 - Won't happen!

Object oriented Python. Elliptic Curve Cryptography Slides. Code and Solutions.

Python Cheat Sheet (not by me)

Links and Notes

Remote desktop environment nmslabrdp1.nms.kcl.ac.uk

Location of anaconda "/opt/anaconda3/bin/python"