algorithm course project