Manage data: users able to sort the data fields to select course
Although your question is quite general, you should be able to achieve that with a combination of 


Content type for the course with relevant fields added.
Comments enabled on the course nodes for the visitor reviews
Views to list courses ( exposed filters for user filtering, table display provides column click sort options )
You may also want something like fivestar or rate for user voting.