Due to the COVID-19 pandemic, IOI 2020 will be held online. More info is available on the official website.
Update IOI 2020 will be held online
On this page, there is a list of a couple of books that might be of interest to contestants and problem authors. However, for beginners, we recommend you visit the "Getting Started" page.
A nice and gentle introduction into the world of computers is (also see book review by Peter G. Neumann in ACM SIGSOFT Software Engineering Notes 10(2):23-27 (April 1985)):
- The Sachertorte Algorithm and Other Antidotes to Computer Anxiety.
Penguin Books, 1985.
A smooth introduction to computer science, including programming, is
- Introductory Computer Science: Bits of Theory and Bytes of Practice.
A. K. Dewdney.
Computer Science Press, 1996
The next three books give a good impression of the breadth of the computing field. These books make excellent reading material. They are neither real textbooks (though some courses have been taught from them) nor real reference works (though you can easily find a lot of basic things in them). They show the "real thing" and do require a persistent mind.
- The New Turing Omnibus: 66 Excursions in Computer Science.
A. K. Dewdney.
Computer Science Press, 1993.
- Algorithmics: The Spirit of Computing.
3rd edition, Addison-Wesley, 2004.
- What Computing Is All About.
Jan L. A. van de Snepscheut.
Springer Verlag, 1993. (Errata)
There are not many bundles of programming problems in the IOI style.
The following book collects 112 of the the most fun, exciting and interesting problems from the Universidad de Valladolid (UVa) programming contest judge. These problems are organized by topic, with complete tutorial material in the relevant algorithmics and mathematics to give you a better chance to solve them. You can also submit solution at a dedicated website.
- Programming Challenges: The Programming Contest Training Manual.
Steven Skiena and Miguel Revilla.
The following book presents the problems (and solutions) that were devised for a series of high-school competitions held from 1977 to 1987 in Slovenia.
- Problems in Programming: Experience through Practice.
Andrej Vitek, Iztok Tvrdy, Robert Reinhardt, Bojan Mohar, Marc Martinec, Tomi Dolenc and Vladimir Batagelj.
John Wiley & Sons, 1991.
The following book contains a collection of competitive programming skills gained by solving more than 3000+ UVa plus Kattis online judge problems:
- Competitive Programming 3.
Steven Halim and Felix Halim.
The following booklet was published recently on the official IOI website, as it was created as part of a recent Call for Projects, partially funded by the IOI.
Booklet (IOI 2018)
A bundle of 965 problems on the design, verification, and analysis of algorithms is:
- Problems on Algorithms (2nd Edition).
Ian Parberry and William Gasarch.
Ian Parberry, 2002.
A good introductory textbook on algorithms is:
- Introduction to Algorithms (2nd Edition).
Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest, Clifford Stein.
The MIT Press / McGraw-Hill, 2001.
An excellent overview of practical algorithms and their design is:
- The Algorithm Design Manual.
Steven S. Skiena.
Springer-Verlag, 1998. (Errata)
This book explains fundamental algorithm design techniques, illustrated by practical examples (including some enlightening War Stories), and it provides a catalog of algorithmic problems together with efficient solutions. There are numerous challenging exercises that make good preparation material for programming contests. The book includes a CD-ROM with a complete hypertext version of the book (great for following the many cross references), implementations (such as the entire Stony Brook Algorithm Repository), and 30 hours of audio lectures on algorithms.
Of course, the bible of computer programming still is
- The Art of Computer Programming.
Donald E. Knuth.
These volumes are highly recommended to people putting together problem sets.