Fundamentals: asymptotic analysis,design and analysis of sequential algorithms(average case and amortized analysis, solving recurrences).
Major Design Strategies: divide-and-conquer, greedy method, dynamic programming, backtracking and branch-and-bound.
Analysis of a few sequential and parallel algorithms of interest (sorting, graph, matrix, search algorithms for discrete optimization, dynamic programming, and others).
Computational complexity (space-bounded class, time-bounded class, P-complete problems, NP-complete problems, NP-hard problems, nondeterministic algorithms, etc), and circuit complexity.
Probability and average complexity of algorithms; Heuristic and approximate algorithms.
Introduction to Lower Bound Theory.
Complexity analysis of parallel algorithms.
Models of parallel computation and their limitations.
Space-Time tradeoffs and Memory-Hierarchy tradeoffs.
Students who are auditing this course must attend at least 75% of the class lectures to avoid a grade of F.
[INSTRUCTOR] [HOURS] [PREREQUISITES] [OBJECTIVES] [REQUIREMENTS] [GRADING] [ANNOUNCEMENTS] [OUTLINE]