Why Study Theory?

(from http://theory.usc.edu/why.htm)

Theoretical Computer Science is unique in that it combines the elegance of Mathematics with the practicality and excitement of Computer Science. It gives you the license to use algorithms, discrete mathematics, graph theory, number theory, probability theory, functional analysis, topology, logic – the list goes on and on. But you are much more (or much less, depending on your point of view) than an armchair theoretician. You can actually go out and change the way computers are built, operated, or used. A large number of computer science disciplines started out as branches of theoretical computer science: compilers, databases, programming languages, computer security/cryptography, quantum computing, and computational biology all trace their roots back to theoretical computer science.

Units of Study

  1. Basics of Efficiency Analysis
  2. Divide and Conquer Algorithms
  3. Data Structures: Hash Tables, Heaps, and Binary Search Trees
  4. Sorting
  5. Decomposition of Graphs
  6. Paths in Graphs
  7. Greedy Algorithms
  8. Dynamic Programming
  9. NP-Completeness