Splitting methods involve systems of particles that move around in space and time and have the possibility to die out or split into multiple particles at certain times. Such systems can be used to solve complicated estimation and optimization problems. This project aims to (1) create new and faster splitting algorithms; (2) improve the implementation of splitting algorithms, e.g., via distributed computing; (3) find new applications for optimization and estimation that are well-suited to be solved by splitting methods.