DS210 Course Overview
About This Module
This module introduces DS-210: Programming for Data Science, covering course logistics, academic policies, grading structure, and foundational concepts needed for the course.
Overview
This course builds on DS110 (Python for Data Science). That, or an equivalent is a prerequisite.
We will cover
- programming languages
- computing systems concepts
- shell commands
And then spend the bulk of the course learning Rust, a modern, high-performance and more secure programming language.
Time permitting we dive into some common data structures and data science related libraries.
New This Semester
We've made some significant changes to the course based on observations and course evaluations.
Question: What have you heard about the course? Is it easy? Hard?
Changes include:
- Moving course notes from Jupyter notebooks to Rust
mdbook- This is the same format used by the Rust language book
- Addition of in-class group activites for almost every lecture where you
can reinforce what you learned and practice for exams
- Less lecture content, slowing down the pace
- Homeworks that progressively build on the lecture material and better match exam questions (e.g. 10-15 line code solutions)
- Elimination of course final project and bigger emphasis on in-class activities and participation.
- ...
Teaching Staff and Contact Information
Section A Instructor: Thomas Gardos
- Email: tgardos@bu.edu
- Office hours: Tuesdays, 3:30-4:45pm @ CCDS 1623
Section B Instructor: Lauren Wheelock
- Email: laurenbw@bu.edu
- Office hours: Wednesday, 2:30-4:00pm @ CCDS 1506
| Teaching Assistants | Course Assistants |
|---|---|
| TA: Zach Gentile Email: Office Hours: Mondays, 1:20-3:20pm | CA: Ting-Hung Jen Email: |
| TA: Joey Russoniello Email: Office Hours: Thursdays, 10am-12 noon | CA: Matt Morris Email: |
| TA: Emir Tali Email: Office Hours: Wednesdays, 11:30am - 1:30pm | CA: Pratik Tribhuwan Email: |
| CA: Ava Yip Email: |
Course Logistics
Lectures:
(A) Tue / Thu 2:00pm - 3:15pm, 765 Commonwealth Ave LAW AUD (B) Mon / Wed / Fri 12:20pm - 1:10pm, 2 Silber Way WED 130
Lectures and Discussions
A1 Lecture: Tuesdays, Thursdays 2:00pm-3:15pm (LAW AUD)
Section A Discussions (Wednesdays, 50 min): Led by TAs
A2: 12:20pm – 1:10pm, SAR 300, (Zach)
A3: 1:25pm – 2:15pm, IEC B10, (Zach)
A4: 2:30pm – 3:20pm CGS 311, (Emir)
A5: 3:35pm – 4:25pm CGS 315, (Emir)
B1 Lecture: Mondays, Wednesdays, Fridays 12:20pm-1:10pm (WED 130)
Section B Discussions (Fridays, 50 min??): Led by TAs
(listed as 75 minutes for technical reasons but actually meet for 50)
- B2: Tue 11:00am – 10:50 (listed 12:15pm), 111 Cummington St MCS B37 (Joey)
- B3: Tue 12:30pm – 1:20 (listed 1:45pm), 3 Cummington Mall PRB 148 (Joey)
B4: Tue 2:00pm – 2:50pm (listed 3:15pm), 665 Comm Ave CDS 164B5: Tue 3:30pm – 4:20 (listed 4:45pm), 111 Cummington St MCS B31
Note: Discussion sections B4 and B5 are cancelled because of low enrollment. Please re-enroll in B2 or B3 if you were previously enrolled in B4 or B5.
Course Websites
See welcome email for Piazza and Gradescope URLs.
-
Piazza:
- Lecture Notes
- Announcements and additional information
- Questions and discussions
-
Gradescope:
- Homework
- Gradebook
-
GitHub Classroom: URL TBD
Course objectives
This course teaches systems programming and data structures through Rust, emphasizing safety, speed, and concurrency. By the end, you will:
- Master key data structures and algorithms for CS and data science
- Understand memory management, ownership, and performance optimization
- Apply computational thinking to real problems using graphs and data science
- Develop Rust skills that transfer to other languages
Why are we learning Rust?
- Learning a second programming language builds CS fundamentals and teaches you to acquire new languages throughout your career
- Systems programming knowledge helps you understand software-hardware interaction and write efficient, low-level code
We're using Rust specifically because:
- Memory safety without garbage collection lets you see how data structures work in memory (without C/C++ headaches)
- Strong type system catches errors at compile time, helping you write correct code upfront
- Growing adoption in data science and scientific computing across major companies and agencies
More shortly.
Course Timeline and Milestones
- Part 1: Foundations (command line, git) & Rust Basics (Weeks 1-3)
- Part 2: Core Rust Concepts & Data Structures (Weeks 4-5)
- Midterm 1 (~Week 5)
- Part 3: Advanced Rust & Algorithms (Weeks 6-10)
- Midterm 2 (~Week 10)
- Part 4: Data Structures and Algorithms (~Weeks 11-12)
- Part 5: Data Science & Rust in Practice (~Weeks 13-14)
- Final exam during exam week
Course Format
Lectures will involve extensive hands-on practice. Each class includes:
- Interactive presentations of new concepts
- Small-group exercises and problem-solving activities
- Discussion and Q&A
Because of this active format, regular attendance and participation is important and counts for a significant portion of your grade (15%).
Discussions will review and reinforce lecture material through and provide further opportunities for hands-on practice.
Pre-work will be assigned before most lectures to prepare you for in-class activities. These typically include readings plus a short ungraded quiz. The quizz questions will reappear in the lecture for participation credit.
Homeworks will be assigned roughly weekly before the midterm, and there will be 2-3 longer two-week assigments after the deadline, reflecting the growing complexity of the material.
Exams 2 midterms and a cumulative final exam covering theory and short hand-coding problems (which we will practice in class!)
The course emphasizes learning through practice, with opportunities for corrections and growth after receiving feedback on assignments and exams.
In-class Activities
Syllabus Review Activity (20 min)
In groups of 2-3, review the course syllabus and answer the following questions:
Concrete:
- Add your names to a shared worksheet
- How are assignments and projects submitted?
- What happens if you submit work a day late?
- If you get stuck on an assignment and your friend explains how to do it, what should you do?
- What would it take to get full credit for attendance and participation?
- If you have accomodations for exams, how soon should you request them?
- When and how long are discussion sections?
Open-ended:
- What parts of the course policies seem standard and what parts seem unique?
- Identify 2-3 things in the syllabus that concern you
- What strategies could you use to address these concerns?
- Identify 2-3 things you're glad to see
- When do you plan to submit your first assignment / project? What do you think it will cover?
- List three questions about the course that aren't answered in the syllabus
AI use discussion (20 min)
Think-pair-share style, each ~6-7 minutes, with wrap-up.
See Gradescope assignment. Forms teams of 3.
Round 1: Learning Impact
"How might GenAI tools help your learning in this course? How might they get in the way?"
Round 2: Values & Fairness
"What expectations do you have for how other students in this course will or won't use GenAI? What expectations do you have for the teaching team so we can assess your learning fairly given easy access to these tools?"
Round 3: Real Decisions
"Picture yourself stuck on a challenging Rust problem at midnight with a deadline looming. What options do you have? What would help you make decisions you'd feel good about?"
More course policies
See syllabus for more information on:
- deadlines and late work
- collaboration
- academic honesty
- AI use policy (discussed below)
- Attendance and participation
- Absences
- Accommodations
- Regrading
- Corrections
AI use policy
You are allowed to use GenAI (e.g., ChatGPT, GitHub Copilot, etc) to help you understand concepts, debug your code, or generate ideas.
You should understand that this may may help or impede your learning depending on how you use it.
If you use GenAI for an assignment, you must cite what you used and how you used it (for brainstorming, autocomplete, generating comments, fixing specific bugs, etc.).
You must understand the solution well enough to explain it during a small group or discussion in class.
Your professor and TAs/CAs are happy to help you write and debug your own code during office hours, but we will not help you understand or debug code that is generated by AI.
For more information see the CDS policy on GenAI.
Intro surveys
Please fill out the intro survey posted on Gradescope.