My Github is here.

It features my favourite tools for solving numerical problems in physics. Built over the last few years, they use basic techniques like adaptive Runge-Kutta, adaptive numerical integration, and Monte Carlo.

Example: 2D Ising Model

For example, for my statistcal mechanics course, I built a Jupyter Notebook to analyze the 2D Ising Model (lattice of spins where each spin's direction is influenced by the 8 spins closest to it). Here are some of the results.

Magnetization overtime of constant-temperature 2D Ising model, using Monte Carlo.
Magnetization of this same system versus temperature, at a given time.
Energy/spin of this same system versus temperature, at a given time.

Example: Brownian Motion

In this exercise, I investigate discrete Brownian path of a penguin with randomized velocity at each time step (sometimes physics professors have a little fun with assignment problems). In the Notebook, I generate the bath and investigate that the average correlation between velocities at different times is proportional to the exponential of the time difference.

The generated path of the penguin.
Average correlation of velocities at different times.
Checking the theoretical expectation that average velocity correlation goes exponentially with time difference between the velocities.