What is this course about? [Info Handout]

    The course will discuss data mining and machine learning algorithms for analyzing very large amounts of data. The emphasis will be on MapReduce and Spark as tools 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, Web Advertising.

    Previous offerings

    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 and CS341.

    You can access class notes and slides of previous versions of the course here:


    Students are expected to have the following background:

    • Knowledge of basic computer science principles and skills, at a level sufficient to write a reasonably non-trivial computer program (e.g., CS107 or CS145 or equivalent are recommended).
    • Good knowledge of Java and Python will be extremely helpful since most assignments will require the use of Spark.
    • Familiarity with basic probability theory (CS109 or Stat116 or equivalent is sufficient but not necessary).
    • Familiarity with writing rigorous proofs (at a minimum, at the level of CS 103).
    • Familiarity with basic linear algebra (e.g., any of Math 51, Math 103, Math 113, CS 205, or EE 263 would be much more than necessary).
    • Familiarity with algorithmic analysis (e.g., CS 161 would be much more than necessary).

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

    Reference Text

    The following text is useful, but not required. It can be downloaded for free, or purchased from Cambridge University Press.
    Leskovec-Rajaraman-Ullman: Mining of Massive Dataset