Plan

Aims and schedule

In this part of the course, we set ourselves a very specific goal:

TipGoal

We want to realise a Github repository containing a C++ project with Python frontend to simulate a simple particle-based simulation.

We will have five sessions to reach this target.

This journey will allow you to build your coding skills in C++, connect them to your Python knowledge and apply them to a realistic modelling problem.

Final product

The final product of the simulation is a visualization of the Vicsek model, an elementary model to represent the flocking behaviour of birds, fish and various other agents. An example animation is here below.

Animation of the Vicsek model

This is an interesting model for various reasons:

  1. It is a simple example of pattern formation: the model demonstrates how simple local interactions lead to complex, emergent structures, resembling phenomena in biological and chemical systems.

  2. It illustrates nonequilibrium dynamics: it captures collective behavior in far-from-equilibrium systems, relevant to understanding self-assembly, active matter, and reaction-diffusion processes.

  3. It produces visually striking simulations, linking numerics to computer graphics.

Assessment

During the project you will acquire a number of skills, primarily in two areas:

  • Software engineering (e.g. version control with git)
  • Object-oriented programming (in C++ and Python)

The Test 2 assessment in Week 17 will probe your understanding of both via a dedicated and self-contained exercise, distinct from the product of this module. This means that the final product mentioned here is not assessed. It is, however, a constitutive part of your learning trajectory.