Syllabus
Introduction
Welcome to DSCI 221, where we study the fundamental data structures and algorithms that power modern computing. Building on your foundation in discrete mathematics, you’ll learn to analyze algorithms rigorously, prove correctness, and understand the tradeoffs between different approaches to organizing and processing data. Along the way, you’ll implement classic data structures in Python and see how these ideas apply to problems in data science.
Instructor Information
Prof: Cinda Heeren 📧 cheeren@cs.ubc.ca ⏰ Mon 2–4pm · 🏢 ICCS 233 ·
TA: Oscar Cheng 📧 oscar.cheng@ubc.ca ⏰ Thu · 🏢 ICICS x150 DLC table 6
Communication
- Piazza: piazza.com/ubc.ca/winterterm22025/dsci221 — Use Piazza for all course-related questions. You’ll get faster responses here than via email, and your classmates benefit from seeing the answers too.
- Canvas: canvas.ubc.ca/courses/182082 — Grades, announcements, and course materials.
- Email: Reserve email for private matters (accommodations, personal circumstances). For course content questions, use Piazza.
Course Description and Learning Objectives
By the end of this course, students will be able to:
Define and articulate the functionality of classic data structures such as Stacks, Queues, Dictionaries, Priority Queues, etc. by their Abstract Data Type (ADT).
Design algorithms and structures to implement novel ADTs based on properties of the data and intended use of the data, using object-oriented problem decomposition.
Implement classic and novel data structures in modern Python, based upon lists, dictionaries, trees, and graphs.
Analyze the efficiency (time and space) of algorithms and data structures using asymptotic notation.
Justify algorithmic choices using iterative and recursive proofs of correctness.
Evaluate asymptotic time and space trade-offs between implementation options.
Identify the structures and algorithms necessary for solving complex problems.
Synthesize and apply algorithmic and analytical design choices to form complete software solutions of classic problems.
Lecture Material and Course Content
DSCI 221 meets officially MWF at 11am in MacMillan 158. After the first week, the schedule shifts:
- Monday: In-person lecture (MCML 158)
- Tuesday: Online video lecture (asynchronous)
- Wednesday: In-person lecture (MCML 158)
- Friday: No class (after week 1)
Class meetings will be a mixture of theoretical narrative, worked examples, and problem-solving exercises. You will learn about algorithmic efficiency, correctness proofs, and the design of data structures—applying these ideas to problems that arise in data science contexts.
Course Requirements
Deliverables for the course include the following components:
Programming Assignments (PAs) — Three significant programming projects where you’ll implement data structures and algorithms. Due approximately every 4-5 weeks.
Homework (HWs) — Three written assignments focusing on algorithm analysis, correctness proofs, and problem-solving. Due approximately every 4-5 weeks.
Labs — Ten weekly lab exercises providing hands-on practice with the concepts from lecture. Labs are completed on PrairieLearn.
Examlets — Five 50-minute assessments completed in the Computer-Based Testing Facility (CBTF). These are self-scheduled within a window and cover both conceptual and coding questions.
Final Exam — A comprehensive exam, self-scheduled in the CBTF during the final exam period.
Grading
| Item | Weight |
|---|---|
| Programming Assignments | 6% (2 × 3%) |
| Homework | 6% (2 × 3%) |
| Labs | 5% (10 × 0.5%) |
| Examlets | 55% (5 × 11%) |
| Final Exam | 28% |
You must pass the final exam (50%) to pass the course.
Accessibility
If you have a disability or ongoing medical condition that may require accommodations, please contact the UBC Centre for Accessibility accessibility@ubc.ca to determine your eligibility and receive an accommodation letter.
If you have a specific concern about accessing course materials or if you would like to suggest improvements to the accessibility of this course, please do not hesitate to speak with me.
Academic Misconduct
All instances of academic misconduct will be handled in a manner consistent with UBC policies. This includes reporting to the appropriate Associate Head and Faculty Associate Dean. No credit will be given for any assignment completed with inappropriate collaboration.
Land Acknowledgement
UBC’s Point Grey Campus is located on the traditional, ancestral, and unceded territory of the xʷməθkʷəy̓əm (Musqueam) people. The land it is situated on has always been a place of learning for the Musqueam people, who for millennia have passed on their culture, history, and traditions from one generation to the next on this site.