Marco Serafini - Homepage

Systems for Data Science (COMPSCI 590S)

In this course, students will learn the fundamentals behind large-scale systems in the context of data science. We will cover the issues involved in scaling up (to many processors) and out (to many nodes) parallelism in order to perform fast analyses on large datasets. These include locality and data representation, concurrency, distributed databases and systems, performance analysis and understanding. We will explore the details of existing and emerging data science platforms, including map-reduce and data analytics systems like Hadoop and Apache Spark.

Class meetings: Tuesday/Thursday 2:30pm-3:45pm, Integrated Science Building (ISB) 221

TA: John Fallon (; Office hours: Tuesday 11 am - 1 pm @ CS311, Cube 2

Piazza (for Q&A):

Paper review site:

Prerequisites: COMPSCI 311, COMPSCI 345, and COMPSCI 377.

Credits: 3

Required Texts: This is an emerging topic so we will read and review recent technical papers.

Course Format

The course consists of two meetings per week. Each meeting includes a lecture. Readings will be assigned as preparation for each class meeting. Two projects will be assigned during the course. The projects provide students with an opportunity to explore the topics in more depth and in a specialized domain. A midterm exam and a final exam will be given. Grades will be determined by a combination of projects, exam scores, and class participation.

Course grades will be distributed as follows (subject to change):

In order to pass the exam, you will need to show to show sufficient performance in all these activities.


Before each class, you will have to read and review the paper(s) associated with the lecture and post a review in this review submission site. You need to receive an invitation to access the system. Please contact me if you have not yet received it. Reviews must be entered before the class associated with the paper. The deadline is 11 pm on the day before the class.

Advice on writing systems reviews (for conferences) is available here.


There will be two coding projects assigned. You can discuss with your colleagues about high-level topics (understanding the requirements of the assignment) and low-level technical details (how to use certain language constructs, e.g. threads), but not about the specifics of the assignment (how to design the system required by the assignment).

We will employ reliable tools for detecting plagiarism in the code. These tools are robust to things like variable renaming and reordering of instructions.

The exams will include questions on the technical details of the projects. These questions will be difficult to answer if you have not written the code yourself. Unsatisfactory answers to these questions will reflect in a lower score for the project assignments.


Midterm: October 25, 7-9 PM in GOES 20

Final: December 20, 3:30-5:30 PM in Goessmann Lab. Add rm 64

Course Schedule (subject to change)