This project implements subdivision surfaces using the Loop subdivision algorithm. The directed-edge data structure is used assuming that the input mesh is a manifold. It performs the subdivision and the directed-edge data structure re-computation in linear time.