ROUGH COURSE OUTLINE (More detail will be given here)
Methods for expressing and comparing complexity
of algorithms: worst and average cases, lower bounds, and asymptotic analysis.
Searching, sorting. Lower bounds for comparison-based sorting; binsort and radix sort.
Divide and conquer. Fast integer multiplication; recurrences; the master theorem; mergesort; randomized median and selection algorithms; quicksort; fast matrix multiplication.
Graph search algorithms. Graphs representations; depth first search; topological search; strongly connected components. Breadth first search and layered DAGs.
Greedy algorithms. Spanning trees and cuts, union-find and path compression; minimum spanning tree (MST) algorithms; randomized algorithms.
Shortest Paths (SPs) in digraphs. Single-source SPs for nonnegative edge weights; priority queues and Dijkstra's; SPs in DAGs; single-source SPs for general edge weights.
Dynamic programming. Paradigm of SPs in DAGs; longest increasing subsequence; (approximate) string matching; integer and (0,1) knapsack problems; chain matrix multiplication; single-pair reliable SPs, all-pairs SPs; independent sets.
Network flows. Max flow min cut theorem; bipartite matching; Menger's theorem and disjoint dipaths. Global minimum cuts.
Elements of NP-completeness and problem reductions.
NP-hard problems. Approximation algorithms.
0.20 (HW & Quizzes) + maximum of two scores:
0.20 MIDTERM I + 0.20 MIDTERM II+ 0.40 FINAL and 0.25
MIDTERM II + 0.55 FINAL NOTE: Class and recitation
attendance will be recorded. These with class participation will be taken into account in
Midterm I : February 18 ;
(Spring break: Sat March 14 -
Sun March 22)
Spring break: Sat March 14 -
Sun March 22
Midterm II (incremental) : March 27
(cumulative) TBA, **:00 AM - **:00 AM, Place, Campus.
Homeworks and Supplementary Notes
NOTE: Homeworks are due each Friday in the lecture.