This course focuses on understanding of algorithm design process. We present a range of design and analysis techniques such as greedy method, divide and conquer, and dynamic programming for problems that rise in various computational applications, such as shortest paths, network flow, and minimum spanning trees. We will also look into intractability and NP-completeness
List of topics . Please note that this list is subject to chang wihtout prior notice
We will be using Piazza for this course. All materials, homeworks, slides, and discussion will be there.
Tentative, subject to change
Class participation will be counted as extra credit. All grades will be posted on Blackboard.