CS 41: Algorithms, Fall 2026
Please note Some information on this website is subject to change. Please check back for the most up-to-date information.
Course Info
- Lecture Time
- Tuesday and Thursday 1:15pm–2:30pm in Science Center 204
- Lab A
- Monday 1:05pm–2:35pm in Martin 213
- Lab B
- Monday 2:45pm–4:15pm in Martin 213
- Instructor
- Nathaniel Grammel
- ngrammel at cs.swarthmore.edu
- Office Hours
- Wednesday 1:30–3:30pm in Martin 336
- Textbook
- Algorithm Design by Kleinberg and Tardos
Also useful: Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein - Discussion
- EdSTEM
There will be no required readings this semester. However, each week there will be suggested readings from the Kleinberg and Tardos book. The book should be available from the bookstore and is also on reserve at the library. If you have any difficulties accessing the textbook, please come talk to your professor. CLRS is not required but is a useful reference.
Welcome to CS41! This class explores algorithmic design and analysis in a more formal approach than CS21 or CS35. Algorithmic problems arise in many diverse areas of computer science. Often, one must take open ended, abstract, real-world problems and extract a clean mathematical problem that can be approached algorithmically. Designing a solution requires knowing the rules and common techniques of the model of computation used. Multiple models represent various abstractions of real computer systems and may result in very different solutions. Regardless of the model however, good algorithmic design requires careful analysis of complexity and proofs of correctness. Topics covered include asymptotic notation, graph algorithms, greedy algorithms, divide and conquer, dynamic programming, NP-completeness, approximation algorithms, and randomized algorithms.