Welcome to CS500!

This course will cover the basics of how to design and analyze data structures and algorithms. This course aims to:

  • Develop your ability to think algorithmically. (What does this even mean? The answer will emerge gradually during the course.)
  • Ensure that you understand some well-established techniques, algorithms, and methods of analysis.
  • Give you some technical tools to predict for a given computational problem what kind of performance is possible.
  • Hone your ability to reason rigorously about computational problems and algorithms and quantities such as running time.

Tweets

  • Undergraduate at Rutgers disproves a 40-year-old conjecture about the limits of hashing (see here)
  • Claire Mathieu, the scientist interviewed in this video, might be teaching Brown CS’s next-level algorithms course, CS 1570, in a year or two.
  • As mentioned in class, a faster algorithm has been discovered for the problem addressed by Bellman-Ford, the problem of finding single-origin shortest paths in a graph with cycles when the lengths are allowed to be negative. The first algorithm was published in 2022. Here is a more recent and more complete article about the algorithm; the article appeared in 2025. In follow-up research, some other computer scientists, who referred to the first algorithm as a “breakthrough result”, came up with a somewhat faster algorithm using the same approach and published a paper in 2023. Here is a version of that paper. I mention these as further evidence that research in algorithms continues to uncover new and exciting results.

Course Info

Lectures

TopicDateNotesRecording
Arithmetic and Algebraic Algorithms I1/22
Sorting & Selection1/27
Arithmetic and Algebraic Algorithms II1/29
Revisiting Mult/Mod/Div, BigFloat, Intro-ing Approx Reciprocal2/3
Approximate Reciprocal2/5
Comparison-Based Sorting2/10
Hashing2/12
More Hashing2/19
Priority Queues and Heaps2/24
Binary Search Trees2/26
Range Search + Range Aggregation Queries3/3
Treaps3/5
Matching3/10
Matching, continued3/12
Boolean Formulas in Conjunctive Normal Form, and Satisfiability3/17
Satisfiability of 2SAT Instances with Acyclic Graphs; Topological Sorting3/31
Shortest paths and distances in graphs, algorithm for distances in directed acyclic graphs, application to longest common subsequences4/2
Shortest paths and distances in directed graphs that have cycles: Bellman-Ford and Dijkstra and Dijkstra-Johnson4/7
Completing the proof of correctness of Dijkstra’s algorithm; Bottleneck paths; Minimum-cost spanning tree; Traveling salesperson problem4/9
Polynomial time, Decision Problems, and Karp reductions4/14
Reducing 3SAT to Vertex Cover, and introduction to the reduction to Three-Dimensional Matching4/16

Assignments

Labs

LabOutDueHandout
Sorting1/271/30
BigPrime2/62/9
BigPrime22/102/13
Hashing2/242/27
Heaps3/13/9
BST3/33/6
Treaps3/103/13
Bipartite Matching3/173/19
Single Origin Shortest Path4/74/9
Traveling Salesperson Problem4/144/16

Calendar

Staff

Philip Klein

Philip Klein | Professor | pklein

Akash Singirikonda

Akash Singirikonda | HTA | asingir1

Oscar McNally

Oscar McNally | HTA | omcnally

Hannah Beakley

Hannah Beakley | UTA | hbeakley

Ethan Park

Ethan Park | UTA | epark73

Jake Schmidman

Jake Schmidman | UTA | jschmidm

Kevin Luo

Kevin Luo | UTA | khluo