Dissertation for Stage 3 Computer Science at Newcastle University