This webpage contains online self-study material for students preparing for the Indian Computing Olympiad. The Computing Olympiad is a test of knowledge and skill in algorithms and programming. Teaching programming is beyond the scope of this training material. The focus is on presenting some basic ideas about algorithms and data structures, primarily through representative problems.
Some of the problems discussed in these notes, and many others that require similar techniques, can be found at the the The IARCS Problems Archive. This is an online resource where you can submit your code and have it automatically evaluated on representative test cases. Other, similar, sites are listed on the left under Online judges.
The best place to learn the background material is a good textbook on algorithms.
A good book that combines detailed presentations with many interesting examples is the following.
This next book is probably the most comprehensive textbook available on algorithms, but it can also be a bit heavy to read.
Introduction to Algorithms, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
An easy-to-read and accessible book is the following one. It used to be freely available online, but longer is, unfortunately.
Introduction, efficiency: video lectures …Read more
Searching: video lecture …Read more
Sorting: video lectures on mergesort, quicksort …Read more
Graph algorithms: video lectures on BFS, DFS, …Read more
Dynamic programming: video lectures …Read more
Shortest paths: video lectures …Read more
Heaps: video lectures …Read more
Directed acyclic graphs: video lectures …Read more
Advanced graph algorithms: video lectures on spanning trees, scc's …Read more
Network flows: video lecture …Read more