algorithms term project