Algorithms are a cornerstone of the computational sciences and the need for efficient algorithms is ubiquitous in modern technology. However, the primary goals of algorithm design, the resources that need to be optimized, and even the model of computation varies widely between application areas. In this course, we will study some of the fundamental principles of algorithm design that appear in multiple areas and have had broad impact. In addition, we will focus on the mathematical tools that are frequently used in the theoretical analysis of algorithms, and study how such analysis, in turn, influences algorithm design. The course will be at an undergraduate level.
The email address to reach the course staff is compsci330-staff@cs.duke.edu We prefer that you use this email address or Piazza unless your query/request is specifically for one of the members of the course staff. In the latter case, please use the relevant email address(es) below.
Debmalya Panigrahi debmalya@cs.duke.edu
Kate O'Hanlon cco9@duke.edu
Juncheng Dong jd420@duke.edu
Shao-Heng Ko sk684@cs.duke.edu
Mo Zhou mozhou@cs.duke.edu
Dorian Barber dpb20@duke.edu
Christina Chen christina.y.chen@duke.edu
Mariusz Derezinski-Choo mnd14@duke.edu
Erie Seong Ho Han eh174@duke.edu
Jerry Huang jh603@duke.edu
Felix Jiang fj32@duke.edu
Jane Li jl752@duke.edu
Steven Li sl561@duke.edu
Charles Lyu ll289@duke.edu
Natalie Novitsky nen4@duke.edu
Rahul Ramesh rr202@duke.edu
George Wang zw176@duke.edu
Xin Wang xw128@duke.edu
Andy Wu ayw11@duke.edu
History of Algorithms
Asymptotic and Worst-case Analysis
Divide and Conquer
Greedy Algorithms
Dynamic Programming
Graph Representations
Graph Traversal and Applications
Shortest Path
Minimum Spanning Tree
Network Flows
Monte Carlo and Las Vegas Algorithms
Hashing
Design of Linear Programs
Solving Linear Programs (basics)
Linear Programming Duality
NP-completeness
Polynomial-time Reductions
Approximation Algorithms