Final Exam Topics

Required Questions

  1. Loop Correctness Proofs

  2. Divide-and-Conquer Algorithms

    • Design principles - recursion
    • Analysis of running times - recursion trees, substitution, Master Theorem
    • Examples
  3. Dyanmic & Greedy Algorithms

    • Design principles - recursion, memoization, top-down / bottom-up, greedy choice
    • Proofs - optimal substructure, overlapping subproblems, greedy choice property
    • Examples - rod cutting, LCS, acitvity scheduling, Dijkstra

Select two problems from the following:

  1. Additional Question on Dymanic & Greedy Algorithms

  2. Sorting

    • Partition and Quicksort
    • Merge Sort, Selection Sort, Insertion Sort
    • Linear-time Sorting
  3. Multithreaded Algorithms

    • Design principles - nested parallelism and parallel loops
    • Analysis - work, span, parallelism, parallel slackness, Tp
    • Race conditions
  4. Computability and Complexity

    • Turing machines - fundamentals (state diagrams and configurations), high-level descriptions
    • Diagonalization, the non-decidability of A_{TM}
    • Relationship among single-tape, multitape, and nondeterministic TMs for (i) computability and (ii) time complexity
    • Definitions of P and NP; show that a language is in P or NP by providing a high-level description of an appropriate Turing machine
    • The importance of P vs. NP and the role of NP-complete languages