Welcome to DS701

Course overview

Welcome to Fall 2026 DS701 Tools for Data Science.

This course is a Master’s level introduction to data science.

In this course you will:

  • develop proficiency in working and analyzing data
  • work with a wide range of data analysis techniques and tools

Instructor

Thomas Gardos

  • Office Hours: see the Piazza Staff Resource Page
    • and by appointment (email me to schedule)
  • Office Location: CCDS 1623
  • Email: tgardos <at> bu <dot> edu

Course staff

Teaching Fellow — Farid Karimli

Spark! program staff: TBA

Course Meeting Times

Lecture (A1, also DS690 Q1)

  • Mondays and Wednesdays, 12:20–2:05 PM (105-minute sessions)
  • 665 Commonwealth Avenue (CDS), Room 263

Discussion Sections

  • Weekly 50-minute sections on Fridays — times and rooms are on MyBUStudent
  • Your time for project team meetings and team work
  • Midterm and final project orals happen here — teammates must share a section

Please attend the discussion section you signed up for.

Registered in DS690? See me about a discussion-section assignment.

Learning outcomes

The goal of the class is to:

  • give you a hands-on understanding of classical (but still useful!) data analysis techniques (although we cover neural networks too!)
  • help you gain proficiency in applying these techniques in a modern programming language (Python)

Broadly speaking, the course breaks down into three main categories of approaches:

  1. unsupervised methods
  2. supervised methods
  3. methods for structured (e.g. tabular) data

Lectures present the fundamentals of each technique.

Focus is not on the theoretical analysis of the methods, but rather on helping students understand the practical settings in which these methods are useful.

Class activities will study use cases and cover relevant Python packages to enable the students to perform hands-on experiments with their data.

We’ll Cover

  • Introductory material (probability and linear algebra refreshers, pandas and scikit-learn)
  • Clustering techniques (k-means, hierarchical clustering, gaussian mixture models)
  • Classification and regression with decision trees
  • Linear and logistic regression
  • Hands-on neural networks
  • Recommendation systems
  • Causal inference
  • Networks/Graphs

With lots of hands-on practice!

You’ll be using

  • Python
  • Jupyter notebooks
  • numpy
  • pandas
  • scikit-learn
  • statsmodels
  • matplotlib
  • scipy
  • networkx
  • pytorch
  • and others…

Course webpage

Syllabus, lecture schedule, and course notes can be found on this webpage

This online text will evolve as the course progresses.

Bookmark this page!

Course Notes Source

You have a few ways to follow along with the course lectures/notes:

  1. Open the Colab version of the lecture and save to your own Google Drive when you see the see the badge .
  2. Fork and clone the repository and run the Jupyter notebooks version of the lectures locally.

For lectures with python code, you can experiment with the code yourself.

Each lecture page also links the slides, as HTML and as a PDF, from badges at the top — the same deck used in class, for reviewing or annotating.

In general, you’ll want to have your laptop computer with you at the lectures to follow along and participate in in-class activities.

Tools and platforms

We will use:

  1. Piazza for questions
  2. Github for homeworks, midterm, lectures.
  3. Gradescope for grading and grade management

You should already be signed up for Gradescope (if not, enroll using code sent via welcome email).

You can add yourself to Piazza if you are not already enrolled (again, use the code sent via welcome email).

You will need an account on Github. Please tell us your Github user name on this form.

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

Piazza

We will be using Piazza for class discussion.

You can use Piazza to get help fast and efficiently from classmates, the TAs, and the professors.

I encourage you to post your questions on Piazza.

Our class Piazza page is at

Piazza Etiquette

Please be respectful on Piazza.

Do

  • Ask questions about course material, logistics, etc.
  • Answer posted questions when you know the answer (not homework)
  • Tell people where to look for answers

Don’t

  • Provide solutions to homework questions.

Programming environment

We will use Python as the language for teaching and for assignments that require coding.

We have a chapter on installing python and a brief recap of some python fundamentals.

If you are don’t feel proficient in python, you should review the chapter, or even better, complete a more comprehensive on-line course on python.

Check that you have at least Python 3.12, preferably 3.14 or later, and get comfortable with virtual environments and package managers — venv, pip, miniconda. We also use Jupyter notebooks and Google Colab.

Grading

Final grades will be computed based on the following:

  • 5% lecture pre-work / knowledge checks (completion; lowest 3 dropped)
  • 5% cold-call Q&A (credit for answering, even if incorrect)
  • 10% in-class activities (autograded + participation)
  • 5% weekly theory homework (participation-graded)
  • 20% quizzes (3 in-class, paper and pencil, closed notes)
  • 15% midterm team project + oral exam
  • 20% final team project + oral exam
  • 20% Spark! group project

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

Quizzes and Optional Final

  • 3 in-class quizzes: paper and pencil, no devices, closed notes
    • ~40 minutes of work in a 60-minute slot; for quizzes 1 and 2 there is no other class activity and you leave when you finish (quiz 3 is followed by a course-synthesis exercise)
    • no formula memorization: a reference sheet per quiz covering the whole unit (~2 pages, written from the lectures, not the questions) — shared electronically a week ahead, printed copy handed out on quiz day
  • Weekly theory homework is your quiz prep — quizzes are where theory is graded for correctness
  • Optional comprehensive final (finals week): three 40-minute sections, each matching the scope of one quiz — with the three quiz reference sheets as its reference material
  • Your effective quiz score is the higher of the quiz and the matching final section: \(E_i = \max(Q_i, F_i)\)
    • Happy with your quiz grades? Skip the final.
    • Taking the final can never lower your grade.

Spark! Project Grading

The Spark! group project counts for 20% of the course grade:

  • Group grade = final presentation (course staff) + deliverable (client assessment)
  • Individual apportionment multiplier: everyone rates the contribution share of each teammate and themselves
    • 4-person team: 0.25 × self-rating + 0.75 × teammates’ average, clamped to [0.85, 1.10] of the group grade
    • 5-person team: 0.20 × self-rating + 0.80 × teammates’ average, clamped to [0.80, 1.15] of the group grade
    • everyone contributes, and everyone is recognised for what they contribute

Homeworks

Weekly theory homework prepares you for the quizzes — every problem is quiz-shaped, and each set should take 1–2 hours without AI.

Graded for participation (a good-faith attempt), not correctness — worked solutions are released after the due date.

Handwritten on paper, then scanned and uploaded to Gradescope. The quizzes are handwritten and closed-notes; practice in the same medium.

Ten sets, released Mondays and due the following Monday at 11:59 pm; solutions appear the day after each deadline, and no set is ever due on a quiz day.

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

You are expected to work individually on homeworks.

Midterm and Final Team Projects

Two projects in teams of three (two by exception): an open-ended deeper dive on a dataset, applying techniques covered so far. Separate from Spark!.

  • Midterm: assigned Oct 7, due Nov 1, orals Fri Nov 6
  • Final: assigned Nov 9, due Dec 2, orals Fri Dec 4
  • Teams self-select — all members in the same Friday discussion section (orals happen there); midterm and final teams may differ
  • Multiple curated datasets — your team picks one
  • AI assistance allowed and encouraged — and you must be able to justify it
  • Team oral exam in section: brief team overview, then directed questions to each member individually — everyone answers alone
  • Grade = 70% team (deliverable + presentation) + 30% individual (your own oral) — the oral rewards understanding, not polish

Spark! Project

Alongside the midterm and final team projects, you will work all semester with BU Spark! on a real data-science problem for an external client — a company, non-profit, or institution.

  • The projects are already curated and will be pitched to you on Sep 9; you will rank your preferences afterwards
  • A Spark! Project Manager leads your team: client communication, scheduling, and grading the deliverables
  • Real-world experience worth putting on your GitHub and CV

Two different things, easy to confuse: Spark! = one client project, all semester. The midterm and final team projects are short, use curated datasets, and are examined orally in your discussion section.

Spark!: weekly SCRUM

Every team uploads a SCRUM file to the project repository each week — a fast, concise status report answering:

  • 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?

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 students are expected to abide by University conduct policies as detailed in the following links:

Spark! project teams

All Spark! project teams have the following structure:

  • Project Managers (Spark! provided): 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. Project Managers are also responsible for grading all Spark! project deliverables .
  • 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.

Spark! Collaboration

BU Spark! offers students an opportunity to work on technical projects provided by companies or organizations in the Greater Boston area through its experiential learning lab (X-Lab). Spark! has partnered with DS701 to offer a selection of external data science projects scoped to support the course’s learning outcomes.

Learn more at bu.edu/spark.

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)
    • absorb at your own pace, take notes, ask AI to explain unclear concepts
  • In class (105 min):
    • ≤30-minute recap with Q&A and cold-call questions
    • extended small-group activity, typically a Jupyter notebook
  • Weekly: short theory homework to prep for quizzes

Participation and Cold Calls

Cold calls keep you engaged and give you practice “thinking on your feet”: random selection, during both the recap and the activity.

  • You can always answer or pass
  • Answering earns credit even if your answer is wrong
  • Passing earns no credit — but there’s no penalty beyond that

In-Class Activities are small-group challenges reinforcing the day’s lecture. Autograded parts count for correctness; open-ended parts for participation. You may use AI — but be ready to justify your solution and demonstrate comprehension when staff check in.

Thoughts on GenAI

GenAI is a powerful tool that can help you learn and be more productive and undoubtedly will be part of your workflow going forward. We will use it!

But, would you…

(a) …build strength by having a robot left weights for you?
(b) …increase your fitness by having a robot jog for you?
Figure 1: Via ChatGPT – And yes, I’m aware of the irony.

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.

Note

For foundational concepts, as are taught in this course, it is in your best interest and worth it to struggle some in creating your answers and solutions. It is just as important to learn what doesn’t work, and which paths are dead ends, as it is to learn what does work.

Academic honesty

You may collaborate and discuss homework assignments with classmates, but you are solely responsible for what you turn in.

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.

Graduate students must also be aware of and abide by the GRS Academic Conduct code.

  • If you are looking online for an answer because you don’t know how to start thinking about a problem, talk to your Professors or TAs, who may be able to give you pointers to get you started. Piazza is great for this – you can usually get an answer in an hour if not a few minutes.
  • If you are looking online for an answer because you want to see if your solution is correct, ask yourself if there is some way to verify the solution yourself. Usually, there is. You will understand what you have done much better if you do that. So … it would be better to simply submit what you have at the deadline (without going online to cheat) and plan to allocate more time for homeworks in the future.

Before next class

Our next meeting is Wednesday, September 9 — there is no class on Labor Day.

  • We will have Spark! project pitches and open up the project preferences survey.
  • Watch the first pre-recorded lecture and complete its knowledge check before class — this is the flipped format starting for real.
  • Bring your laptop and have python installed as well as VS Code and/or Cursor.

And fill out the intro survey and indicate so in Gradescope.

In-Class Activity

Make sure you are set up with the following:

    • venv and pip
    • miniconda
    • uv

Ensure you have all these. Ask us for help or come to office hours.

When you are done, indicate so on Gradescope.

Back to top