Appearance
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