Final Exam Review Topics
The Final is 1 - 2:50 PM on Wednesday (12/18). Approximately, 30 % of the test will be
comprehensive (chapters 1 - 6, Appendix B) and the rest will be from chapters 7 - 9.
The test will have a closed-book part followed by an open-book part. The closed-book
part could contain questions from material in any chapter.
You might want to read all of the test questions (even the open-book questions) before
answering any questions. This way you will be able to manage your time better.
Comprehensive Part (chapters 1-6, Appendix B):
1) Algorithm Design: You should understand and be able to apply divide-and-conquer, dynamic
programming, greedy approach, backtracking, and branch-and-bound to simple problems.
2) Algorithm Analysis: You should be able to analysis recursive and non-recursive algorithms to determine their theta notation.
Chapter 7: Computational Complexity of Sorting (Mainly sections: 7.1, 7.6.1, 7.8, 7.9)
An understanding of the computational complexity argument for sorting using comparison
of elements. The results of the analysis.
Understanding of heap sort (don't waste your time memorizing the code, but understand how it
works and its analysis)
Understanding of Radix sort (don't waste your time memorizing the code, but understand how it
works and its analysis)
Chapter 8: Computational Complexity of Searching (Mainly sections: 8.1, 8.4)
An understanding of the worst-case, computational complexity argument for searching using
comparison of elements. The results of the analysis.
Understanding of the general concept of hashing.
Chapter 9. Introduction of the Theory of NP (Mainly sections: 9.1, 9.2, 9.3, 9.4.1, 9.4.2, 9.5.1)
Categories of Problems: P, intractable, and NP
Meaning of NP -- decision problems, polynomial-time nondeterministic algorithm
Meaning and usefulness of NP-Complete concept -- polynomial-time many-one reducible
Existence of NP-Complete problems -- CNF-Satisfiability and Cook's Thm. (Theory 9.2)
Using algorithm reduction/transformation to show a problem NP-Complete
Meaning of NP-hard problems
Handling NP-hard problems -- Backtracking & Branch-and-bound, poly-time algorithm for
a restricted subclass of the problem, approximation algorithms