Computational Physics

Figure: A simulation of vinegar-oil separation after mixing. This uses the Cahn-Hilliard partial differential equation to model the diffusive dynamics of a two-phase system.

Computing has become central to virtually all research and development in academia and industry, and with the advent of Machine Learning and High-Performance Computing this dominance is set to continue.

Computational physics encompasses a wide number of areas including materials modelling, particle physics simulations, protein structure prediction and plasma modelling. In fact, it is possible to find a computational branch for every major field in physics.

The focus of this course is to equip with you with knowledge and skills needed to model a range of physical systems using numerical methods. You will also gain a number of transferable skills which can be applied across in a range of computational disciplines.

This course is split into three sections - Getting started, Getting results and Getting it out there. In the first part of the course, Getting started, we will recap the basic programming concepts and Python libraries that are applicable to a wide range of research and industry. In the middle section of the course, which is called Getting results, we will combine our Python knowledge with mathematical numerical methods to model various physical systems using differential equations. In the final unassessed section of the course, Getting it out there, we will use modern software engineering techniques to document, test and share our code.

How does this course relate to experimental physics?

The first part of this course recaps the basic skills needed for processing experimental data using Python. At the end of Getting started you will be able to read in experimental data from a plain text file, clean the data, apply basic statistical analysis and plot. We very much encourage you to apply the tools outlined in this course to your experimental analysis.

Do I need to attend the in-person labs?

We will aim to publish all course materials on this website however a large component of this course is based on the verbal explanations whilst writing code (a.k.a, “live coding”) and class discussion. It will all make much more sense if you attend the sessions in the computer lab. The computer labs will not be recorded.

Why do you use a website?

Blackboard collaborate is widely used at Northumbria University for teaching. However in the computational sciences (and in software engineering) Blackboard collaborate is not widely used. The aim here is to teach and learn using the tools that are already used in research and industry - hence building the course resources around the Github service. Also, the code can be nicely formatted using Markdown/html (rather than blackboard), making it easier for students to read and understand.

Blackboard collaborate will be used for posting assessments, monitoring attendance and for course announcements.

Can I contribute to the website?

Why yes!

There are two ways you can suggest improvements to the website or highlight/fix mistakes in the text:

  1. If you cannot fix it yourself, visit the Github repository for this course and raise an issue.

  2. If you can fit it yourself, you can visit the Github repository for this course and issue a pull request. This is a little bit more involved but has one significant advantage: once your pull request is merged into the website, you will be an official contributor to an open source project 🎈. There is a short video below outlining the steps required to fix a typo on one of the website pages and raise a pull request.