Topics for ECS 122A

The following lists potential topics we will choose among.

End of quarter note: I have now gone back and italicized the topics which we did NOT cover.

  1. Introduction
  2. Recurrences
  3. Divide and conquer
  4. Quicksort
  5. Heapsort
  6. Selection
  7. Linear-time sorting
  8. Hashing (including universal hashing and perfect hashing)
  9. Program checking
  10. Binary search trees
  11. Splay trees
  12. Dynamic programming
  13. String compression (Huffman and LZ77 and LZ78)
  14. String matching (including suffix trees)
  15. DFS and BFS (including applications to other algorithms)
  16. Minimum spanning trees (Kruskal's and Prim's)
  17. Fibonacci heaps and their analysis
  18. Amortized complexity analysis
  19. Union/Find and its analysis
  20. Shortest Paths: Dijkstra's algorithm, Bellman-Ford, in DAGs, Floyd-Warshall
  21. Stable marriages
  22. Convex Hull
  23. Planarity testing
  24. NP-Completeness
  25. Approximation schemes
  26. Branch-and-bound
  27. Protocols (except Cake Cutting)