Using Algorithms To Solve Complex Problems