Hello people,

I wanted to have a chronological order for all the topics for the preparation of IOI and that is why I am creating this thread. The main motive is that my school has allowed me and other interested students to form a group to start preparing students for OIs. I will be introducing it to the junior classes. So, it would be nice if the order started from the very basics and went to intermediate or even advanced if people are willing to contribute. This is a community wiki so feel free to edit it for the help of myself and all those who prepare for IOI in present or future.

I know that these exist:

- http://discuss.codechef.com/questions/18752/what-are-the-must-known-algorithms-for-online-programming-contests
- http://www.quora.com/Algorithms/What-are-the-10-algorithms-one-must-know-in-order-to-solve-most-algorithm-challenges-puzzles
- http://www.quora.com/Competitive-Programming/What-are-all-of-the-algorithms-you-should-know-to-perform-well-in-Codeforces

For now, I am creating a very rough order. I hope more people contribute to it. Also, I will keep editing it till I can.

- Big O Notation
- Ad hoc problems
- Brute force
- Using DFS
- Using BFS
- Permutation generation
- Subset generation

- Maths

- [Bit-Manipulation][1]
- [Hash-Tables][2]

- Arrays
- Strings
- Vectors
- Stack
- Queue
- Heap
- List
- Deque

- Binary search(In an array/On answer)
- Merge sort
- Segment tree
- Merge sort tree
- Centroid decomposition

- Introduction(Possibly using the classic fibonacci example)
- LCS/LIS
- Edit Distance
- Knapsack
- Matrix Chain multiplication

- BFS/DFS
- Flood Fill
- Shortest Path algos
- MST

Thank you in advance to all who contribute!