Fall 2026 DS701 Syllabus

“Data is the new oil.””

– Clive Humby, former CEO of Tesco

“Data is just like crude. It’s valuable but if unrefined it cannot really be used.”

– Michael Palmer, blog

“The goal is to turn data into information, and information into insight.”

– Carly Fiorina, former CEO of HP

“People … operate with beliefs and biases. To the extent you can eliminate both and replace them with data, you gain a clear advantage.”

Michael Lewis, Moneyball

Preface

Welcome to Tools for Data Science!

These are lecture notes for DS701, Tools for Data Science, as taught at Boston University.

This course has evolved from CS 506, which had major contributions from Evimaria Terzi, George Kollios, and Lance Galletti.

If you are taking the course, read this syllabus carefully and then review the Course Overview

Format

This site is built using the Quarto technical publishing system.

We provide the lecture notes in Jupyter notebook form to make it easier to follow along and experiment. Demos and most figures are included as executable Python code. The notebooks are provided in the Course Materials repository on GitHub. You can run the notebooks in your own Python environment.

When you see this badge, , at the beginning of the chapter, you will also be able to open the Jupyter notebook in Google Colab.

The lecture slides are also provided in HTML format and as PDFs as links at the top of each lecture page.

Course Abstract

This course is a Master’s level introduction to data science, focusing on proficiency in working with and analyzing data. The course emphasizes practical skills in working with data, while introducing students to a wide range of techniques that are commonly used in the analysis of data, such as clustering, classification, regression, and network analysis.

Logistics

Lecture Section A1 (also DS690 Q1)

Meeting Place: 665 Commonwealth Avenue (CDS), Room 263

Meeting Time: Mondays, Wednesdays 12:20PM - 2:05PM, 105-minute sessions

Instructor: Thomas Gardos

  • Office: CCDS 1623
  • Office Hours: See Piazza Staff Resource Page
  • Office Hours Location: CCDS 1623
  • Email: tgardos <at> bu <dot> edu

Teaching Fellow

  • Farid Karimli (faridk <at> bu <dot> edu)

Spark Program Staff

  • TBA

Discussion Sections

Weekly 50-minute discussion sections meet on Fridays and are reserved for your class project team meetings, oral exams and your own work time. The midterm and final project oral examinations take place in your discussion section, which is why project teammates must share a section (see below). When there’s no scheduled activity for discussion, you are free to meet with your class projet teammates in the discussion section or other location at the same time. Section times and rooms are posted on MyBUStudent.

If you are registered in DS690, please see the instructor about getting a discussion section assignment.

Overview of the Course

This course is a Master’s level introduction to data science, focusing on proficiency in working with and analyzing data. The course emphasizes practical skills in working with data, while introducing students to a wide range of techniques that are commonly used in the analysis of data, such as clustering, classification, regression, and network analysis. The goal of the class is to provide to students a hands-on understanding of data analysis techniques and to develop proficiency in applying these techniques in a modern programming language (Python).

Lectures will present the fundamentals of each technique; focus is on both the theoretical fondations of the methods as well as to understand the practical settings in which these methods are useful. Class discussion will study use cases and will go over relevant Python packages that will enable the students to perform hands-on experiments with their data.

Course Format (Flipped Classroom)

Starting Fall 2026, DS701 uses a flipped-classroom format. For each content session:

  • Before class: watch the pre-recorded lecture and complete a few knowledge-check questions, due before class starts. Watching ahead of time lets you absorb the material at your own pace, take notes, and ask AI tools to explain concepts you find unclear.
  • In class (105 minutes):
    • a ≤30-minute recap of the highlights, with Q&A and cold-call questions (answer or pass — answering earns credit even if incorrect; passing earns none),
    • an extended small-group activity, typically a Jupyter notebook applying the day’s technique and then pushing one step past the lecture. Core parts are autograded; open-ended parts are graded for participation. Course staff circulate among the tables and ask you about your work — those check-ins count toward the cold-call component. You may use AI assistance on activities, but you must be able to justify your solution and demonstrate comprehension when asked.
    • Quiz days: 60 minutes are allotted for a ~40-minute quiz and you are dismissed afterward (except the last quiz day, which continues into a course-synthesis exercise).
  • Weekly: a short theory homework (participation-graded) prepares you for the quizzes.

The first few in-class activities are tutorials on data science Python libraries. We assume you have proficiency in basic python as described in the Python Refresher. Probability/statistics and linear algebra refresher material is woven into the lectures where it is first needed rather than taught as standalone sessions.

Pre/Co-requisites

Prerequisite: Students taking this class must have proficiency in python, at the level of an undergradute python programming course such as DS110 or equivalent. If you are not confident in your python skills, we recommend you take one of many online courses.

Corequisite: Most of the techniques we will cover in this course are based on linear algebra and probability. Having a strong foundation in these subjects will serve you well in this course. We will cover the basics of linear algebra and probability, but we strongly encourage you take DS722: Mathematics for Data Science at the same time as this course if you feel you don’t have a strong foundation in these areas.

Learning Outcomes

Students who successfully complete this course will be proficient in data acquisition, manipulation, and analysis. They will have good working knowledge of the most commonly used methods of clustering, classification, and regression. They will also understand the efficiency issues and systems issues related to working on very large datasets.

Textbook and Slides

The notes used in the course are published at https://tools4ds.github.io/ds701/. This online text will evolve as the course progresses, but we will work to keep it up-to-date.

For all the lectures with python code, we also add the Open in Colab link so you can open the page directly from the Course Notes web page and execute the python cells that way.

Feel free to fork and clone the Course Materials repository and execute on your own computer. You can modify them any way you’d like, play around with them, experiment, etc. If you find a bug, feel free to submit a pull request.

Some of the lectures were previously based on Introduction to Data Mining1. This might be a good place to go for more detail if some methodological aspect is not clear. For up-to-date reference on Pandas, scikit-learn, or any of the other software tools we use, there is no substitute for online resources.

Tools and Platforms

We will use:

  1. Piazza for questions
  2. Github for Jupyter notebooks and some homeworks and assignments
  3. Gradescope for grading and grade management

You should already be signed up for Gradescope and Piazza, if not see the enrollment codes in the course welcome email or contact an instructor.

You will need an account on Github. Please also add your real name to your GitHub account profile so we can easily associate you with your GitHub username.

If you don’t have an up to date Python installation, take care of that right away. We recommend Python 3.12 or later.

Spark! Events

The Spark! Initiative holds regular tech talks Wednesdays 6-7:30pm on the 2nd floor of the CDS building. We strongly recommend you attend these talks, especially ones that give tutorial on Git, GitHub and other useful tools.

Also on Wednesdays is Cookie O’Clock from 3-4pm where you can take a break, play some games and grab a cookie.

And from 4-6:30pm is Spark’s Tech Innovation Hours, where you can get technical help from the Spark! team on your Spark! project or any other technical questions you have.

Information is regularly posted on the Spark! Events website at https://www.bu.edu/spark/events/.

Piazza

We will be using Piazza for class discussion. The system is really well tuned to getting you help fast and efficiently from classmates, the teaching fellows, and the instructor. Rather than emailing questions to the teaching staff, we encourage you to post your questions on Piazza. Our class Piazza page is at: https://piazza.com/bu/fall2026/ds701.

When someone posts a question on Piazza, if you know the answer, please go ahead and post it. However please don’t provide answers to homework questions on Piazza. It’s OK to tell people where to look to get answers, or to correct mistakes in the assignment; just don’t provide actual solutions to homework questions.

Programming Environment

We will use Python as the language for teaching and for assignments that require coding. Instructions for installing and using Python are at https://www.python.org/.

Check that you have at least Python 3.12 but preferably 3.14 or later. Also be comfortable with virtual environments and package managers like venv, pip, and miniconda.

We’ll also be using Jupyter notebooks and Google Colab environments.

Course and Grading Administration

Assignments will be submitted using Gradescope and sometimes GitHub. Please pay attention to the instructions for submitting homeworks on the assignment in Gradescope as well as any additional instructions in Piazza. See the Homeworks section below for deadlines and the late policy.

NOTE: Knowledge checks are due before the start of the class they belong to and cannot be submitted late — their purpose is to prepare you for that day’s session. The lowest three are dropped.

Final grades will be computed based on the following:

Percentage Category
5% Lecture pre-work / knowledge checks (completion-graded; lowest 3 dropped)
5% Cold-call Q&A (lecture and activity; credit for answering, even if incorrect)
10% In-class activities (autograded parts + participation)
5% Weekly theory homework (participation-graded)
20% Quizzes — 3 in-class, paper-and-pencil, closed notes (see below)
15% Midterm team project with oral exam
20% Final team project with oral exam
20% Spark! group project, presentation and Demo Day

The exact cutoffs for final grades will be determined after the class is complete.

Note: There’s a small chance that the category percentages may be adjusted as the course progresses. We announce any changes on Piazza, in class and of course on this page.

Quizzes and the Optional Comprehensive Final

There are three in-class quizzes (see the lecture schedule):

  • paper and pencil,
  • no devices,
  • closed notes.

Each targets about 40 minutes of work within a 60-minute allotment; quizzes 1 and 2 have no other class activity and you leave when you finish.

You will not need to memorize formulas: each quiz comes with a reference sheet covering essential material in that quiz’s scope — the formulas, definitions, and algorithm sketches from every lecture in the unit, about two pages. It is written from the lectures, not from the quiz, so it carries no hints about which questions will be asked. We publish it electronically one week before the quiz so you can study with it and learn where things are on it, and we hand out a printed copy on quiz day; only the printed copy may be used during the quiz. Anything a particular question needs beyond that — a data table, a given model output — is printed with the question.

Quizzes are the primary place where theory is graded for correctness; the weekly theory homework is your preparation for them, which is why we ask you to work it by hand.

The optional comprehensive final (during finals week) consists of three 40-minute sections F1–F3, each covering exactly the scope of the corresponding quiz Q1–Q3. Your effective score for each quiz is \(E_i = max(Q_i, F_i)\) — the higher of the quiz and the matching final section. The 20% quiz component is the mean of E1, E2, E3.

Consequences:

  • If you are satisfied with your quiz grades, you can skip the final entirely.
  • Taking the final can never lower your grade.
  • If you miss a quiz with a documented excuse, you take the corresponding final section instead (Ei = Fi).
  • The final’s reference material is exactly the three quiz reference sheets, handed out together — the same pages you already know your way around.

Homeworks

Weekly theory homework assignments help you understand the foundational theory of that week’s topics and are your rehearsal for the quizzes: every problem is the kind of problem a quiz can ask, and each set should take one to two hours without AI assistance. They are graded for participation (a good-faith attempt), not correctness — worked solutions are released after the due date so you can check your own understanding. There are ten sets, released on Mondays and due the following Monday at 11:59 pm (see the schedule); solutions appear the day after each deadline. No set is due on a quiz day.

Homework is distributed as a PDF on Gradescope. Write your answers by hand on paper, then scan and upload them to Gradescope. This is deliberate: the quizzes are handwritten and closed-notes, and the best preparation is to practice in the same medium.

You are expected to work individually on homeworks. Discussing approaches with classmates is fine; writing up together is not.

Separately, we need your GitHub account for project submissions (create one if you don’t already have it) — fill out this form to let us know what it is, and add your full name to your GitHub profile.

NOTE: Late assignments will be accepted up to 48 hours after the deadline with a 10% penalty.

Midterm and Final Team Projects

Twice during the semester (see the lecture schedule) you will complete a project in a team of three (two by exception): an open-ended deeper dive on a dataset, applying techniques covered in the course so far. Several curated datasets are offered and your team chooses. These are separate from, and much smaller than, the Spark! project.

  • Midterm project: assigned Wed Oct 7, due Sun Nov 1, orals Fri Nov 6.
  • Final project: assigned Mon Nov 9, due Wed Dec 2, orals Fri Dec 4.

Teams self-select, with one hard constraint: all members must be in the same Friday discussion section, because the oral examination happens there. Your midterm and final teams may be different. If you cannot find teammates, course staff will match you within your section.

AI assistance is allowed and encouraged — these projects are also practice in directing AI tools productively and justifying what they produce.

Each project is assessed through a team oral examination in your discussion section: a brief team overview, then directed questions to each member individually — about parts you worked on and about how the approach would change under new conditions. Every member answers alone. Your project grade is 70% team (deliverable and presentation) and 30% individual (your own oral performance). A team member who cannot explain their team’s work will receive a low individual score regardless of the deliverable — the oral exists to reward understanding, not polish.

Spark! Group Project

Spark! Collaboration

BU Spark! offers students an opportunity to work on technical projects provided by companies or organizations in the Greater Boston area through our experiential learning lab (X-Lab). For this semester, Spark! has partnered with DS701 to offer a diverse selection of external data science projects scoped to support the course’s learning outcomes and enhance the student experience. To learn more about Spark!, please visit their website.

Your project team will be led by one of the Spark! Project managers. Their role is to support the student team’s work plan, manage client communication and expectations, organize weekly and biweekly meetings, and to weigh in on project deliverable grading.

Spark! projects are a great opportunity for students to get real-world project experience to highlight on their github and CV. These projects have already been curated and will be presented during “Pitch Day”. Project descriptions will be made available at the start of the semester.

The project counts for 20% of the course grade, computed as a group grade scaled by an individual apportionment multiplier:

  • Group grade: the final presentation (graded by course staff) and the project deliverable (assessed by the client).
  • Individual multiplier: at the end of the semester, every team member rates the contribution share of each teammate and of themselves.
    • For a 4-person team, your multiplier is 0.25 × your self-rating + 0.75 × the average of your teammates’ ratings of you, clamped to the range [0.85, 1.10] of the group grade.
    • For a 5-person team, the multiplier is 0.20 × your self-rating + 0.80 × the average of your teammates’ ratings of you, clamped to the range [0.80, 1.15] of the group grade.
    • This ensures that everyone contributes and is recognized for their work.

Once every student has a Spark project, every team will need to upload a SCRUM file to the final project repository every week which gives a short report on the status of their project. SCRUM is an agile method used in many software companies. Fast and concise, it is a short report answering the following questions:

  • What have I worked on?
  • What will I be working on next?
  • Have I run into any issues? Do I need help?
  • Have I talked to the client recently? When are we meeting with them next?

Spark! Project Expectations

  • All team members should contribute equally and proactively to project work; we will evaluate team contributions through a peer evaluation at the end of the semester and this will be factored into your grade.
  • You / your team lead should make yourself available to speak with your client on a bi-weekly basis (depends on client availability)
  • You / your team lead should meet with your Spark PM on a weekly basis
  • You should meet with your team every other day (can / should be a short meeting)
  • For any team communication issues, please let your spark PMs know asap - they are here to help. If the problem persists please email me with a description of the situation.

All Spark! project teams consist of three roles:

  • Project Managers: These are the project leads and will communicate with the client directly, they will assist with administrative support (meeting scheduling, agenda setting), and will be a point of contact for project questions / concerns.
  • Team Lead: These students will assist the Project Manager in attending client meetings, organizing team questions, and facilitating team meetings.
  • Team Members: These students work collaboratively with each other on the project goals.

Accommodations for Students with Disabilities

If you have a disability and have an accommodations letter from the Disability & Access Services office, We encourage you to discuss your accommodations and needs with us as early in the semester as possible. We will work with you to ensure that accommodations are provided as appropriate. If you suspect that you may have a disability and would benefit from accommodations but are not yet registered with BU Disability & Access Services, we encourage you to find more information at https://www.bu.edu/disability/.

Generative AI Assistance (GAIA) Policy

We’re in a unique period of time where AI tools are advancing rapidly and becoming indispensable to how we work. In fact proficiency with these tools is already expected of new-hires and you are one of the first to go through a degree program as “AI natives.” We highly encourage you to make full use of AI assistive tools for:

  • getting clarifications and explanations while watching pre-recorded lectures
  • getting assistance in working on in-class activities and projects

But you will need to be able defend the output of AI tools and why you think it is valid, explain ways you can verify it, and how you might improve it.

On the other hand, we also want to make sure you are learning the foundational concepts and skills that will be expected of you in your future career. For foundational concepts, we want you to practice in the homeworks with minimal AI assistance and then demonstrate your understanding in the paper-and-pencil quizzes. Similarly, that is why we are cold calling during lecture recaps and in-class activities, and probing with oral examinations of the projects.

Feel free to review the CDS GAIA Policy as well, but the guidance above overrides any conflicting statements in that policy.

Academic Honesty

You may discuss homework assignments with classmates, but you are solely responsible for what you turn in. Collaboration in the form of discussion is allowed, but all forms of cheating (copying parts of a classmate’s assignment, plagiarism from books or old posted solutions) are NOT allowed. We – both teaching staff and students – are expected to abide by the guidelines and rules of the Academic Code of Conduct (which is at http://www.bu.edu/academics/policies/academic-conduct-code/).

Graduate students must also be aware of and abide by the GRS Academic Conduct code at http://www.bu.edu/cas/students/graduate/forms-policies-procedures/academic-discipline-procedures/.

For homeworks, spend some time struggling and trying alternatvie approaches before looking up solutions or asking AI. If you’ve answered a homework question and want to see if your answer is correct, don’t simply search for the answer online but rather think about ways you could verify your answer, perhaps by alternate approaches or just thinking about whether the answer makes sense.

University conduct policies:

This syllabus provides a general plan for the course; deviations may be necessary depending on the progress of the class.

Back to top

Footnotes

  1. Tan et al, Introduction to Data Mining, Pearson, 2019, https://www-users.cse.umn.edu/~kumar001/dmbook/index.php↩︎