CS584-Final