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 Ed 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
Kate O'Hanlon cco9@duke.edu
Pranay Jain, Ghazal Khalighinejad, Yupei Liu, Rahul Raychaudhury, Chihui Shao, Grayson York, Sida Zhu
Eric Carlson, Kevin Feng, Jake Heller, Felix Hu, Louis Hu, Adam Hufstetler, Felix Jiang, Vincent Li, Arron Liu, Jacob Liu, Michael Liu, Yuxi Long, Kerry Lu, William Luqiu, Havish Malladi, Tejas Srinivasan, Amr Tagel-Din, Cynthia Wang, Matthew Wang, Samia Zaman, Cristal Zhu, Xingyu Zhu, Yuncong Zuo
Omar Al-Sughayer, Yalu Cai, Qishen Wang
Asymptotic and Worst-case Analysis
Divide and Conquer
Greedy Algorithms
Dynamic Programming
Graph Representations
Graph Traversal and Applications
Shortest Path
Minimum Spanning Tree
Matching
Monte Carlo and Las Vegas Algorithms
Hashing
Design of Linear Programs
Solving Linear Programs (basics)
Linear Programming Duality
NP-completeness
Polynomial-time Reductions