This project is about the implementation of a flocking system based on Craig Reynolds model and was done for the ASD module. It is programmed in C++ and visualised using OpenGL and contains an interactive GUI that can be used to change the state of the boids and their movement. The basic rules of cohesion, alignment and separation are implemented as well as 2 additional rules of tending towards a target and the application of external forces. Interaction with rigid bodies (cube and sphere) is also implemented. Methods to confine the boids include a hard wall, where the boids are prevented from going out of the boundary, and a soft wall, whereby the boids are brought back to the boundary gradually and slowly.