CS345 semester project