# Miscellany

## 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

- Basics of Efficiency Analysis
- Divide and Conquer Algorithms
- Data Structures: Hash Tables, Heaps, and Binary Search Trees
- Sorting
- Decomposition of Graphs
- Paths in Graphs
- Greedy Algorithms
- Dynamic Programming
- NP-Completeness