Data Science Tools and Applications
Supplemental material can be found on YouTube
Getting Started Checklist
- Join Discord
- Create a GitHub account
- Create a Kaggle account
- Fill out this form (requires BU email) with your GitHub and Kaggle account username
- Install Python and Jupyter Notebook
- Join Gradescope (code: X8E22N)
About the Course
This course is about understanding how models work, not just memorizing definitions and equations.
Real understanding takes work. A big part of that work is learning to stress-test what you think you understand: try an idea, look for where it breaks, figure out why, and then improve it.
That process can be uncomfortable. Being confused or discovering that your explanation was wrong can feel like a setback, but those are often the moments where the most learning happens. They are also a big part of how research works: new ideas often come from finding the limits of old ones.
Throughout the course, we will follow this process repeatedly:
build an idea -> test it -> break it -> understand why -> improve it
What You Should Know
You will be expected to understand the mechanics behind the tools we cover well enough to reason about them in new situations.
On exams, I may change part of a familiar model, put it in a different setting, or show you something we never directly covered and ask you to work out how it should behave.
Because of that, memorizing definitions or equations will not be enough. Practice should involve trying to break your own understanding and finding the places where it is still incomplete.
The goal is that you leave the course with more than a set of machine-learning tools. You should also leave knowing how to think about those tools: how to question them, adapt them to new problems, recognize their limitations, and potentially use the same reasoning to develop new ideas of your own.
This is not a Python (or introduction to programming) course, so self-study is expected for anyone who does not already know the language.
There is no required textbook; all course material will be made available online.
Prerequisites
Students taking this class must have some prior familiarity with programming at the level of CS 105, 108, or 111, or equivalent. CS 132 or equivalent (MA 242, MA 442) is required. CS 112 is also helpful.
Workload
There are a number of components to this course:
- Weekly labs
- Written Midterm 1 (cumulative)
- Written Midterm 2 (cumulative)
- Written Midterm 3 (cumulative)
- An applied midterm
- A final project
- Participation
Labs
Labs are where you should actively test your understanding, not just complete steps. Labs will be graded, attendance will be recorded, and the lowest lab score will be dropped.
Participation
You can earn participation by attending class and answering in class polls as well as being active on the course’s discord server.
Written Midterms
In-class, closed-notes exams focused on reasoning and model behavior.
The three written midterms are cumulative and are designed to reward growth:
- Midterm 1 (Foundations): distance/similarity, clustering basics, K-means/K-means++, hierarchical/density-based ideas, soft clustering.
- Midterm 2 (Foundations + New Models): everything from Midterm 1, plus SVD/dimensionality reduction, classification (KNN, trees, Naive Bayes), evaluation basics, and model tradeoffs.
- Midterm 3 (Full Course): everything from Midterms 1-2, plus SVMs, linear/logistic regression, and neural network fundamentals with emphasis on transfer to unfamiliar settings.
Cumulative Exam Scoring Policy
Written midterms are cumulative and scored to reward learning over time.
- If your score on the next written midterm is higher, the earlier midterm score is replaced by the higher score.
- If your score on the next written midterm is not higher, we keep a weighted average to still value later performance.
- Weights used for roll-forward averaging: previous score = 40%, new score = 60%.
This means improving later can recover from an earlier poor performance, while consistency is still rewarded.
Applied Midterm
The applied midterm will be a Kaggle data science competition among students in the class with a live leaderboard. You will submit predictions based on a training dataset and meet benchmarks to earn points.
Final Project
The final project can be done as an individual or a group of up to 5 students.
A project proposal will need to be submitted at the end of the first month of the semester. Details will be provided at the start of the semester.
You can select among a number of BU Spark curated projects or you can create your own. You can find a list of projects here
At the end of the semester, some teams will be selected to present a poster of their project on Demo Day (details to follow) and add your project video and/or code to the BU Spark website.
Spark also host “Syntax & Snax” every Thursday 4-7 in CDS.
Grading
- 5% participation
- 10% labs
- 45% written midterms (cumulative policy across Midterms 1-3)
- 15% applied midterm
- 25% final project
Letter Grades may be curved depending on class performance. We will never curve down.
Re-Grades
If you notice an issue with a grade you’ve received, please don’t email the teaching staff. Instead, please submit a regrade on Gradescope within 48h of receiving the grade. Anything beyond 48h will not be accepted for a re-grade.
Emails
If emailing the CS506 staff, please always CC or include the instructor, and all TAs.