CS 210 Fall 2026 Undergraduate

Data Structures & Algorithms

Fundamental data structures, algorithm design paradigms, and complexity analysis with hands-on programming labs.

Course overview

This is the department’s core algorithms course, covering the data structures and algorithmic paradigms that underpin the rest of the computer science curriculum. The course pairs formal complexity analysis with weekly hands-on programming labs, and includes a “live debugging” session each week where a real bug is diagnosed collaboratively in class.

Topics covered

  • Arrays, linked lists, stacks, queues, trees, and graphs
  • Sorting and searching algorithms and their complexity
  • Divide-and-conquer, dynamic programming, and greedy algorithms
  • Graph algorithms: traversal, shortest paths, minimum spanning trees
  • Proof techniques: induction, loop invariants, amortized analysis

Prerequisites

An introductory programming course (any language). Comfort with basic discrete mathematics is helpful but not required — a review is provided in week one.

Grading

  • 30% — Weekly programming labs
  • 25% — Two midterm exams
  • 25% — Final exam
  • 20% — Reflective process write-ups accompanying each major assignment