Skip to content
On this page

CompSci 330: Design & Analysis of Algorithms

Spring 2026

Time: Tu/Th 11:45-1:00
Location: Gross Hall 107

Course Synopsis

This undergraduate course covers techniques for designing and analyzing algorithms and data structures for a wide range of problems. Topics include:

Design techniques
  • Divide-and-conquer, dynamic programming, greedy algorithms, parallel algorithms, randomized algorithms

Graph algorithms
  • Graph traversal, shortest path, minimum spanning tree, max flows and minimum cuts, matching

Intractability
  • Easy and hard problems, decision problems, NP-Completeness, reducibility

Large scale computing
  • Clustering, hashing, sketching, streaming, approximation algorithms

Prerequisites

Courses: CPS 201 and CPS 230 (or an approved substitute).

This course requires undergraduate background in data structures as well as a certain amount of mathematical sophistication. See more details about prerequisites and getting started.

Textbooks

  • [DPV] S. Dasgupta, C. Papadimitriou, and U. Vazirani, Algorithms, McGraw Hill, 2006.
  • [Er] J. Erickson, Algorithms, 2019.

You do not need to purchase a hardcopy of either textbook for our course. A draft of [DPV] can be found on Canvas. Jeff's book, along with additional lecture notes, can be accessed here.

Reference Books

  • [CLRS] T. Cormen, C. Leiserson, R. Rivest, and C. Stein. Introduction to Algorithms, MIT Press, 2009.
  • [KT] J. Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2005
  • [Ph] J. Phillips, Mathematical foundations for data analysis, Springer, 2021.

Grading

Exams Part 1: 25%
  • Computed from your scores on the midterm and first part of the final.
  • See the Exam policy for full details.
Exams Part 2: 25%
  • Computed from your scores on the late-term exam and second part of the final
  • See the Exam policy for full details.
Assignments: 35%
  • 10 total, graded S/U/I, 2 drops
Lecture Exercises: 9%
  • 6 drops
Recitation Participation: 5%
  • 3 drops
Course Surveys: 1%
  • 2 total