Mining Massive Data Sets
Winter 2015

Course Information

Meeting Times and Locations

Tuesday & Thursday 9:30AM - 10:45AM in NVidia Auditorium, Jen-Hsun Huang Engineering Center

In the first two weeks of the class, we will also hold 2 recitation sessions that will serve as refreshers on important course material:

Course description

The course will discuss data mining and machine learning algorithms for analyzing very large amounts of data. The emphasis will be on Map Reduce as a tool for creating parallel algorithms that can process very large amounts of data.

Topics include: Frequent itemsets and Association rules, Near Neighbor Search in High Dimensional Data, Locality Sensitive Hashing (LSH), Dimensionality reduction, Recommendation Systems, Clustering, Link Analysis, Large scale supervised machine learning, Data streams, Mining the Web for Structured Data, Relation extraction and Web Advertising.

CS246 is the first part in a two part sequence CS246--CS341. CS246 will discuss methods and algorithms for mining massive data sets, while CS341: Project in Mining Massive Data Sets will be a project-focused advanced class with an unlimited access to a large MapReduce cluster.

For students who want to learn more about Hadoop we are also offering CS246H: Mining Massive Data Sets: Hadoop Labs. In CS246H Hadoop will be covered in depth to give students a more complete understanding of the platform and its role in data mining.

Course outline

Tentative list of topics to be covered. These topics may change as the quarter progresses.

See Handouts for a list of topics and reading materials.

Important Dates: Assignments

Out on
Due on
Hadoop tutorial
Sun, January 4
Tue, January 13
Assignment #1
Thu, January 8
Thu, January 22
Assignment #2
Thu, January 22
Thu, February 5
Assignment #3
Thu, February 5
Thu, February 19
Assignment #4
Thu, February 19
Thu, March 5
Alternate Final exam
Mon, March 16, 7-10 PM
Final exam
Fri, March 20, 12:15-3:15 PM

See FAQ for information on how to submit assignments and other work.

Important Dates: Gradiance quizzes

Gradiance quizzes are out on Friday afternoon and due exactly a week later. Note that we cannot under any circumstances extend the quiz deadline. Once the deadline has passed students will not be able to submit their quizzes.

Gradiance quiz
Out on
Due on (11:59pm Pacific time)
Quiz 0
Tue, January 6
Fri, January 9
Quiz 1
Fri, January 9
Fri, January 16
Quiz 2
Fri, January 16
Fri, January 23
Quiz 3
Fri, January 23
Fri, January 30
Quiz 4
Fri, January 30
Fri, February 6
Quiz 5
Fri, February 6
Fri, February 13
Quiz 6
Fri, February 13
Fri, February 20
Quiz 7
Fri, February 20
Fri, February 27
Quiz 8
Fri, February 27
Fri, March 6
Quiz 9
Fri, March 6
Fri, March 13


Students are expected to have the following background:

The recitation sessions in the first weeks of the class will give the overview of the expected background.

Course materials

Lecture notes and slides will be posted on-line. Readings have been derived from the book Mining of Massive Datasets by Jure Leskovec, Anand Rajaraman, and Jeff Ullman.

You can see earlier versions of the notes and slides for the Winter 2014 version of the course. Note there may be a slight change in the topics covered this year.

Course handouts and other reading materials can be downloaded here.

Course work and grading

The coursework for the course will consist of:

Gradiance quizzes

With regard to the weekly quizzes on Gradiance. Here are the instructions:

You can try the work as many times as you like, and we hope everyone will eventually get 100%. The secret is that each of the questions involves a "long-answer" problem, which you should work. The Gradiance system gives you random right and wrong answers each time you open it, and thus samples your knowledge of the full problem. While there are ways to game the system, we group several questions at a time, so it is hard to get 100% without actually working the problems. Also notice that you have to wait 10 minutes between openings, so brute-force random guessing will not work.

Solutions appear after the problem-set is due. However, you must submit at least once, so your most recent solution appears with the solutions embedded.

Gradiance quizzes are generally out on Friday afternoon and due exactly a week later (Friday 11:59pm Pacific time). Note that we cannot under any circumstances extend the quiz deadline. Once the deadline has passed students will not be able to submit their quizzes.


Four biweekly homeworks that will involve programming, working with Hadoop, as well as regular numerical/algebraic theory problems.

Questions: We try very hard to make questions unambiguous, but some ambiguities may remain. Ask (i.e., post a question on Piazza) if confused or state your assumptions explicitly. Reasonable assumptions will be accepted in case of ambiguous questions.

Honor code: We strongly encourage students to form study groups. Students may discuss and work on homework problems in groups. However, each student must write down the code and solutions independently, and without referring to written notes from the joint session. In other words, each student must understand the solution well enough in order to reconstruct it by him/herself. In addition, each student should write on the problem set the set of people with whom she/he interacted.

Since we occasionally reuse problem set questions from previous years, we expect students not to copy, refer to, or look at the solutions in preparing their answers. It is an honor code violation to intentionally refer to a previous year's solutions. This applies both to the official solutions and to solutions that you or someone else may have written up in a previous year.

Finally, we consider it an Honor Code Violation to post your homework solutions to a place where it is easy for other students to access it. This includes uploading your solutions to publicly-viewable repositories like on GitHub.

The standard penalty for a first offense includes a one-quarter suspension from the University and 40 hours of community service. And the standard penalty for multiple violations (e.g. cheating more than once in the same course) is a three-quarter suspension and 40 or more hours of community service. Stanford Office of community standards has more information.

Late assignments: Each student will have a total of two late periods to use for homeworks, reaction papers and project proposals. One late period expires at the start of every class. (This means that if the assignment is due on Thursday then the first late period expires on the following Tuesday.) Once late periods are exhausted, any assignments turned in late will be penalized 50% per late period. However, no assignment will be accepted more than one late period after its due date.

Assignment submission: See the F.A.Q.

Regrade policy: We take great care to ensure that grading is fair and consistent. Since we will always use the same grading procedure, any grades you receive are unlikely to change significantly. However, if you feel that your work deserves a regrade, please submit a written request within a week of receiving your grade. In your request, indicate which components of your submission you would like regraded, and prepare a clear and concise argument why you feel we should regrade those components.

Regrades should be mailed to the course staff mailing list.

However, note that we reserve the right to regrade the entire assignment. Moreover, if the regrade request is unjustified and thus not honored, then every future unsuccessful regrade request will be penalized 5 points.

Hadoop in a Virtual Machine

Most assignments will require some level of programming in Hadoop. Hadoop is the open source implementation of MapReduce distributed data processing environment for mining large data sets across clusters of computers.

You will be running Hadoop jobs on your local laptop/desktop. However, since installing and setting up Hadoop is non-trivial we prepared a Linux virtual machine with Hadoop already installed. We will post the instructions and the VM soon.

Recitation sessions

Two recitation sessions will be held:

The recitation sessions are only intended to be refreshers; it is expected that you have already taken courses that include this material.

Previous versions of the course

The previous version of the course is CS345A: Data Mining which also included a course project. CS345A has now been split into two courses CS246 (Winter, 3 Units, homeworks, final, no project) and CS341 (Spring, 3 Units, project focused).

CS246 was first offered in Winter 2011. Here is the course webpage with all the materials.


General course questions should be posted Piazza.

If you need to reach the course staff, you can reach us at cs246-win1415-staff@lists.stanford.edu (consists of the TAs and the professor).