# Planned topics

## Programming

- More data structures and algorithms topics
- Fundamentals and General Topics
- Complexity, Big O, and Other Performance Topics
- Also talk about complexity classes, NP completeness, and P=NP.

- Binary Representation and Arithmetic
- Bit shifting
- IEEE 754 floating point, including special values, and cover quantization error and other important implications
- overcoming overflow/underflow
- ASCII, Unicode, and possibly other character encodings
- Modular arithmetic (especially useful for competitive programming)

- Dynamic Arrays
- Array Search, Selection, and Partitioning Algorithms
- Sorting Algorithms
- Linked Lists
- Binary Search Trees (BSTs)
- Tries
- Hash Tables

- Divide-and-Conquer Algorithms
- Introduction
- What is it?
- What is the master theorem?

- Karatsuba Multiplication
- Fast Fourier Transform (FFT)

- Randomized Algorithms
- Mathematical Computing
- TODO: There should be a better name for this chapter since the scope is a little wider than the name suggests. Some of this stuff should maybe be moved to the intro chapter though.
- How to compute square root? Linear search vs. binary search vs. Newtonâ€™s method? What about fast inverse square root?
- Machine epsilon
- How to manage overflow and underflow?

- Appendices
- Introduction to Fourier Analysis, for Computer Science Students