Collaborative filtering, content-based recommendation systems, hybrid systems, artificial neural networks, swarm intelligence, evolutionary computing, fuzzy sets, and other methods are some of the many approaches available for building recommendation systems that can be tailored to an individual's needs. These methods will be touched upon in this report, but our main focus will be on the Collaborative Filtering approach and its challenges, including cold start, sparsity, scalability, and others.