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.
But non of these are "chronologically ordered". Topics are better ordered with increasing order of difficulty, starting from changing from Turbo C++ to GNU C++11.
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]
Greedy
Data structures(Excluding graph)
Arrays
Strings
Vectors
Stack
Queue
Heap
List
Deque
Divide and conquer
Binary search(In an array/On answer)
Merge sort
Segment tree
Merge sort tree
Centroid decomposition
Dynamic Programming
Introduction(Possibly using the classic fibonacci example)
Hey @ista2000 It is really good that you have started it. You can take help from forums too. They include quite good topics. Moreover talking about number theory you can add topics like
1.Euler totient function.
2.Matrix Exponentiation(Not sure whether it's a part of number theory but it is quite useful when you work on recursive function).
3.Fermat Little Theorem is also very important sometimes (in modulo functions)
4.Lastly I remember a topic SOS Dynamic Programming approach. If you want to add. :)
You can click the “Edit it” button where it is written “This question is marked “community wiki”.
Feel free to edit it.”. Please do add as many topics as you can! It will help me a lot.