Indian Computing Olympiad

Training Material

What this page is about

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.

Practice 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.

Reading material

  1. Algorithms

    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.

    Algorithm Design, by Jon Kleinberg and Evá Tardos

    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.

    Algorithms, by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani
  2. Competitive Programming

    There are also books specifically aimed at algorithms and data structures for competitive programming.

    The oldest one, closely connected to the UVa archive of ACM ICPC problems is the following.

    Programming Challenges: The Programming Contest Training Manual, by Steven Skiena and Miguel A. Revilla

    A more recent book, aimed at both IOI and ICPC, is by Steven Halim.

    Competitive Programming, by Steven Halim

    A new book by Antti Laaksonen is available online for free download.

    Competitive Programmer's Handbook, by Antti Laaksonen

    Here is another new book on the topic, by Daniel Zingaro.

    Algorithmic Thinking: A Problem-Based Introduction, by Daniel Zingaro