This course introduces the concepts, applications, algorithms, programming, and design of recommender systems--software systems that recommend products or information, often based on extensive personalization. Learn how web merchants such as Amazon.com personalize product suggestions and how to apply the same techniques in your own systems!
Recommender systems have changed the way people find products, information, and even other people. They study patterns of behavior to know what someone will prefer from among a collection of things he has never experienced. The technology behind recommender systems has evolved over the past 20 years into a rich collection of tools that enable the practitioner or researcher to develop effective recommenders. We will study the most important of those tools, including how they work, how to use them, how to evaluate them, and their strengths and weaknesses in practice.
The algorithms we will study include content-based filtering, user-user collaborative filtering, item-item collaborative filtering, dimensionality reduction, and interactive critique-based recommenders. The approach will be hands-on, with six two week projects, each of which will involve implementation and evaluation of some type of recommender.
In addition to topical lectures, this course includes interviews and
guest lectures with experts from both academia and industry.
Two Ways to Take this Course:
This course is designed to support two different types of students and educational goals:
Programming Track: Designed for students with significant programming and mathematics experience (see below), the programming track combines a conceptual and mathematical understanding of recommender systems with experience programming six different recommender systems projects. Students completing this travel will gain the skills needed to implement basic recommenders from scratch, and to use software libraries and tools to implement more advanced recommenders.
Students who are not experienced programmers, or who are primarily
interested in understanding the concepts and techniques of recommender
systems, without learning to program them, can choose to focus on the
conceptual and mathematical content, skipping the programming projects
and associated lecture content. Students in the concepts track are
still expected to have significant familiarity with computing systems
and college-level mathematics, but need not be accomplished programmers.
We expect this track to be useful for tech-savvy marketing and
business leaders, as well as engineering managers who may oversee but
not directly develop recommender systems. We also hope it will be
useful to those looking to understand recommender systems concepts
without the workload associated with programming those systems.
For the Concepts Track students should have a basic familiarity with college-level algebra and a general understanding of computer systems concepts.For the Programming Track students should have significant skill in Java programming, basic data structures, college-level algebra, and the ability to install and manage sophisticated software development tools and libraries. Programming track students will install and use significant open-source software tools. Therefore, a special lecture in the first week of class will identify the tool and installation options for various computing platforms.
content will consist of lecture videos (with PDFs of used slides
available), online resources including review and research articles, and
online discussion forums. Additionally, we will be recording live
Q&A and discussion sessions held with students enrolled for credit
at the University of Minnesota; at those sessions, we will be addressing
many of the top-scoring questions from the class forums.
evaluation will include three components: written assignments,
quizzes, and programming assignments (programming track only). While
many assignments will be automatically graded, some will use peer
grading; students must complete peer grading to earn credit for their
Will I get a Statement of Accomplishment for this Course?
Yes, students who complete the course with sufficiently high scores will receive a Statement of Accomplishment signed by the instructors. For the programming track, we will award a certificate of distinguished accomplishment to students who receive 80% or more of the possible points in the course. We will award a certificate of accomplishment to any student who receives 50% or more of the total points possible in the course -- a level that can be achieved by students in the concepts track as well.