# Syllabus for CS141 - FINAL

Topics and Sample Questions for FINAL: (Chapters 1,5,6,7,9 of the Textbook, and slides posted on the class homepage)

• Concept of worst-case time-complexity
• Asymptotic notations: big-Oh, big-Theta, big-Omega
• prove or disprove that the following function is big-Oh, big-Theta, big-Omega of ...
• Properties of big-Oh, big-Theta, big-Omega
• prove or disprove that the following property hold ...
• Discrete math
• prove the following statement by induction ...
• Deriving recurrence relations
• derive a recurrence relation from the following pseudo-code ...
• Solving recurrence relations
• solve the following recurrence relation by iterative substitution ...
• solve the following recurrence relation by Master Theorem ...
• prove by induction the correctness of the solution of the following recurrence relation ...
• Greedy method (task scheduling, fractional knapsack, Huffman coding)
• questions on the algorithms mentioned in parenthesis above...
• devise a greedy algorithm for the following problem ...
• show why greedy is a bad choice for the following problem ...
• prove that the greedy choice for the following problem always leads to the optimal solution ...
• Divide and Conquer method (integer multiplication, matrix multiplication/Strassen)
• questions on the algorithms mentioned in parenthesis...
• devise a divide and conquer algorithm for the following problem ...
• Dynamic Programming method (Fibonacci, Pascal's Triangle, 01-knapsack, matrix chain multiplication)
• questions on the algorithms mentioned in parenthesis...
• devise a dynamic programming algorithm for the following problem ...
• given the final table for a dynamic programming algorithm, find all optimal solutions...
• Undirected Graphs (DFS, BFS, connected components, biconnected components)
• questions on definitions
• questions on the graph data structures
• questions on the algorithms mentioned in parenthesis
• questions on the properties of DFS and BFS
• run the O(n+m) time biconnected components on the following graph ...
• Directed Graphs (DFS, strong connectivity, Floyd-Warshall, topological sorting)
• questions on definitions
• questions on the algorithms mentioned in parenthesis
• run the Floyd-Warshall algorithm on the following graph ...
• run the topological sorting algorithm on the following graph ...
• Weighted Graphs (Dijkstra, Bellman-Ford, all pairs shortest path, Kruskal, Prim)
• questions on the algorithms mentioned in parenthesis
• run Dijkstra algorithm on the following graph ...
• run Bellman-Ford algorithm on the following graph ...
• run Kruskal algorithm on the following graph ...
• run Prim-Jarnik algorithm on the following graph ...
• String Matching (Brute force, KMP, tries, suffix tries, LCS)
• questions on the algorithms mentioned in parenthesis
• KMP: compute the failure function on the following string ...
• compute the suffix trie of the following string ...

NOTE: The list above is representative of the problems that could be on the final, but not necessarly exhaustive