Overview

This course builds on DS110 (Python for Data Science) by expanding on programming language, systems, and algorithmic concepts introduced in the prior course. The course begins by exploring the different types of programming languages and introducing students to important systems level concepts such as computer architecture, compilers, file systems, and using the command line. It then moves to introducing a high performance language (Rust) and how to use it to implement a number of fundamental CS data structures and algorithms (lists, queues, trees, graphs etc). Then it covers how to use Rust in conjunction with external libraries to perform data manipulation and analysis.

Prerequisites: CDS 110 or equivalent

A1 Course Staff

Section A1 Instructor: Thomas Gardos
Email: tgardos@bu.edu
Office hours: Tuesdays, 3:30-4:45pm @ CCDS 1623

If you want to meet but cannot make office hours, send a private note on Piazza with at least 2 suggestions for times that you are available, and we will find a time to meet.

A1 TAs

  • Zach Gentile

    • Email: zgentile@bu.edu
    • Office Hours: Mondays, 1:30-3:30pm
    • Location: CDS 15th Floor (Office Hours Area)
  • Emir Tali

    • Email: etali@bu.edu
    • Office Hours: Wednesdays, 11:30am - 1:30pm

A1 CAs

  • Ting-Hung Jen

    • Email: allen027@bu.edu
    • Office Hours: Fridays 3:30-5:30
    • Location: CDS 15th Floor (Office Hours Area)
  • Matt Morris

    • Email: mattmorr@bu.edu
    • Office Hours: Mon/Wed 12:15-1:15

B1 Course Staff

Section B1 Instructor: Lauren Wheelock
Email: laurenbw@bu.edu
Office hours: Wed 2:30-4:00 @ CCDS 1506 Coffee slots: Fri 2:30-3:30 @ CCDS 1506

If you want to meet but cannot make office hours, send a private note on Piazza with at least 2 suggestions for times that you are available, and we will find a time to meet.

B1 Teaching Assistant

  • TA: Joey Russoniello
    • Email: jmrusso@bu.edu
    • Office Hours: Thursdays, 10am-12 noon
    • Location: CDS 15th Floor (Office Hours Area)

B1 Course Assistants |

  • Ava Yip

    • Email: avayip@bu.edu
    • Office Hours: Tuesdays 3:45-5:45
    • Location: CDS 15th Floor (Office Hours Area)
  • Pratik Tribhuwan

    • Email: pratikrt@bu.edu
    • Office Hours: Fridays 12:00-2:00
    • Location: CDS 15th Floor (Office Hours Area)

Lectures and Discussions

A1 Lecture: Tuesdays, Thursdays 2:00pm-3:15pm (LAW AUD)

Section A Discussions (Wednesdays, 50 min):

  • A2: 12:20pm – 1:10pm, CDS B62, (led by Zach) Note new location!!
  • A3: 1:25pm – 2:15pm, IEC B10, (led by Zach)
  • A4: 2:30pm – 3:20pm CGS 311, (led by Emir)
  • A5: 3:35pm – 4:25pm CGS 315, (led by Emir)

B1 Lecture: Mondays, Wednesdays, Fridays 12:20pm-1:10pm (WED 130)

Section B Discussions (Fridays, 50 min):

  • B2: Tue 11:00am – 11:50 (listed 12:15pm), 111 Cummington St MCS B37 (led by Joey)
  • B3: Tue 12:30pm – 1:20 (listed 1:45pm), 3 Cummington Mall PRB 148 (led by Joey)
  • B4: Tue 2:00pm – 2:50pm (listed 3:15pm), 665 Comm Ave CDS 164
  • B5: 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.

Note: There are two sections of this course, they cover the same material and share a piazza and course staff but the discussion sections and grading portals are different. These are not interchangeable, you must attend the lecture and discussion sessions for your section!

Course Websites

  • Piazza

    • Lecture Recordings
    • Announcements and additional information
    • Questions and discussions
  • Course Notes (https://ds210-fa25-private.github.io/):

    • Syllabus (this document)
    • Interactive lecture notes
  • Gradescope

    • Homework, project, project proposal submissions
    • Gradebook
  • GitHub Classroom: URL TBD

Course Content Overview

  • 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

For a complete list of modules and topics that will be kept up-to-date as we go through the term, see Lecture Schedule (MWF) and Lecture Schedule (TTH).

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 lecture material, provide homework support, and will adapt over the semester to the needs of the class. We will not take attendance but our TAs make this a great resource!

Pre-work will be assigned before most lectures to prepare you for in-class activities. These typically include readings plus a short ungraded quiz. We will also periodically ask for feedback and reflections on the course between lectures.

Homeworks will be assigned roughly weekly at first, and there will be longer two-week assignments later, reflecting the growing complexity of the material.

Exams Two 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.

Course Policies

Grading Calculations

Your grade will be determined as:

  • 15% homeworks (~9 assignments)
  • 20% midterm 1
  • 20% midterm 2
  • 25% final exam
  • 15% in-class activities
  • 5% pre-work and surveys

I will use the standard map from numeric grades to letter grades (>=93 is A, >=90 is A-, etc). For the midterm and final, we may add a fixed number of "free" points to everyone uniformly to effectively curve the exam at our discretion - this will never result in a lower grade for anyone.

We will use gradescope to track grades over the course of the semester, which you can verify at any time and use to compute your current grade in the course for yourself.

Homeworks

Homework assignments will be submitted by uploading them to GitHub Classroom. Since it may be possible to rely on genAI tools to do these assignments, against the course policy, our grading emphasizes development process and coding best practices in addition to technical correctness.

Typically, 1/3 of the homework score will be for correctness (computed by automated tests for coding assignments), 1/3 for documenting of your process (sufficient commit history and comments), and 1/3 for communication and best practices, which can be attained by replying to and incorporating feedback given by the CAs and TAs on your work.

Exams

The final will be during exam week, date and location TBD. The two midterms will be in class during normal lecture time.

If you have a valid conflict with a test date, you must tell me as soon as you are aware, and with a minimum of one week notice (unless there are extenuating  circumstances) so we can arrange a make-up test.

If you need accommodations for exams, schedule them with the Testing Center as soon as exam dates are firm. See below for more about accommodations.

Deadlines and late work

Homeworks will be due on the date specified in gradescope/github classroom.  

If your work is up to 48-hours late, you can still qualify for up to 80% credit for the assignment. After 48 hours, late work will not be accepted unless you have made prior arrangements due to extraordinary circumstances.

Collaboration

You are free to discuss problems and approaches with other students but must do your own writeup. If a significant portion of your solution is derived from someone else's work (your classmate, a website, a book, etc), you must cite that source in your writeup. You will not be penalized for using outside sources as long as you cite them appropriately.

You must also understand your solution well enough to be able to explain it if asked.

Academic honesty

You must adhere to BU's Academic Conduct Code at all times. Please be sure to read it here. In particular: cheating on an exam, passing off another student's work as your own, or plagiarism of writing or code are grounds for a grade reduction in the course and referral to BU's Academic Conduct Committee. If you have any questions about the policy, please send me a private Piazza note immediately, before taking an action that might be a violation.

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 generated by AI.

For more information see the CDS policy on GenAI.

Attendance and participation

Since a large component of your learning will come from in-class activities and discussions, attendance and participation are essential and account for 15% of your grade.

Attendance will be taken in lecture through Piazza polls which will open at various points during the lecture. Understanding that illness and conflicts arise, up to 4 absences are considered excused and will not affect your attendance grade.

In most lectures, there will be time for small-group exercises, either on paper or using github. To receive participation credit on these occasions, you must identify yourself on paper or in the repo along with a submission. These submissions will not be graded for accuracy, just for good-faith effort.

Occasionally, I may ask for volunteers, or I may call randomly upon students or groups to answer questions or present problems during class. You will be credited for participation.

Absences

This course follows BU's policy on religious observance. Otherwise, it is generally expected that students attend lectures and discussion sections. If you cannot attend classes for a while, please let me know as soon as possible. If you miss a lecture, please review the lecture notes and lecture recording. If I cannot teach in person, I will send a Piazza announcement with instructions.

Accommodations

If you need accommodations, let me know as soon as possible. You have the right to have your needs met, and the sooner you let me know, the sooner I can make arrangements to support you.

This course follows all BU policies regarding accommodations for students with documented disabilities. If you are a student with a disability or believe you might have a disability that requires accommodations, please contact the Office for Disability Services (ODS) at (617) 353-3658 or access@bu.edu to coordinate accommodation requests.

If you require accommodations for exams, please schedule that at the BU testing center as soon as the exam date is set.

Re-grading

You have the right to request a re-grade of any homework or test. All regrade requests must be submitted using the Gradescope interface. If you request a re-grade for a portion of an assignment, then we may review the entire assignment, not just the part in question. This may potentially result in a lower grade.

Corrections

You are welcome to submit corrections on homework assignments or the midterms. This is an opportunity to take the feedback you have received, reflect on it, and then demonstrate growth. Corrections involve submitting an updated version of the assignment or test alongside the following reflections:

  • A clear explanation of the mistake
  • What misconception(s) led to it
  • An explanation of the correction
  • What you now understand that you didn't before

After receiving grades back, you will have one week to submit corrections. You can only submit corrections on a good faith attempt at the initial submission (not to make up for a missed assignment).

Satisfying this criteria completely for any particular problem will earn you back 50% of the points you originally lost (no partial credit).

Oral re-exams (Section B only)

In Section B, we will provide you with a topic breakdown of your midterm exams into a few major topics. After receiving your midterm grade, you may choose to do an oral re-exam on one of the topics you struggled with by scheduling an appointment with Prof. Wheelock. This will involve a short (~10 minute) oral exam where you will be asked to explain concepts and write code on a whiteboard. This score will replace your original score on the topic, with a cap of 90% on that topic.