Plan
Aims and schedule
In this part of the course, we set ourselves a very specific goal:
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. We will proceed in steps:
Date | Topic |
---|---|
Week 13 - 13/01/2025 | Learn how to use git to perform version control and interact with Github |
Week 14 - 20/01/2025 | Recall the notion of Object-Oriented programming (OOP) and design the (OOP) structure of our simulation. |
Week 15 - 27/01/2025 | Implement the essential OOP structure of your simulator in C++ and with minimal Python visualisation tools |
Week 16 - 03/03/2025 | Introduce pybind11 to interface the C++ code with Python |
Week 17 - 10/02/2025 | Wrapping in Python and improvements to the code |
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.
This is an interesting model for various reasons:
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.
It illustrates nonequilibrium dynamics: it captures collective behavior in far-from-equilibrium systems, relevant to understanding self-assembly, active matter, and reaction-diffusion processes.
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:
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.