Recommended Reading
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.
John Shore.
Penguin Books, 1985.
- Introductory Computer Science: Bits of Theory and Bytes of Practice.
A. K. Dewdney.
Computer Science Press, 1996.
- The New Turing Omnibus: 66 Excursions in Computer Science.
A. K. Dewdney.
Computer Science Press, 1993. - Algorithmics: The Spirit of Computing.
David Harel.
3rd edition, Addison-Wesley, 2004. - What Computing Is All About.
Jan L. A. van de Snepscheut.
Springer Verlag, 1993. (Errata)
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.
Springer-Verlag, 2003.
- 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.
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.
- Introduction to Algorithms (2nd Edition).
Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest, Clifford Stein.
The MIT Press / McGraw-Hill, 2001.
- Fundamentals of Algorithmics.
Gilles Brassard and Paul Bratley.
Prentice-Hall, 1996.
- The Algorithm Design Manual.
Steven S. Skiena.
Springer-Verlag, 1998. (Errata)
A concise, to-the-point book that addresses IOI-like programming issues in a way hardly found elsewhere:
- The Practice of Programming.
Brian W. Kernighan, Rob Pike.
Addison-Wesley, 1999.
- The Design and Analysis of Computer Algorithms.
Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman.
Addison-Wesley, 1974. - Data Structures and Algorithms.
Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman.
Addison-Wesley, 1983. - Fundamentals of Computer Algorithms.
Ellis Horowitz and Sartaj Sahni.
Computer Science Press, 1978. - Algorithms.
Robert Sedgewick.
Addison-Wesley, 1988 (2nd edition).
Also available for:- C Parts 1-4 (Fundamentals, Data Structures, Sorting, Searching; 3rd edition, 1997),
- Part 5 (Graph Algorithms; 3rd edition, 2002),
- C++ (3rd edition, 1999),
- Modula-3
- Java
- Algorithms + Data Structures = Programs.
Niklaus Wirth.
Prentice-Hall, 1976.
- The Art of Computer Programming.
Donald E. Knuth.
Addison-Wesley,- Volume 1: Fundamental Algorithms,
3rd edition, 1997. - Volume 2: Semi-Numerical Algorithms,
2nd edition, 1981,
3rd edition, 1997, - Volume 3: Sorting and Searching,
1973.
2nd edition, 1998, - Errata
- Volume 1: Fundamental Algorithms,
Some more specialized, but easily accessible, programming books are:
- Writing Efficient Programs.
Jon Louis Bentley.
Prentice-Hall, 1982. - Programming Pearls.
Jon Bentley.
Addison-Wesley, 1986.
Second Edition, 1999. - More Programming Pearls: Confessions of a Coder.
Jon Bentley.
Addison-Wesley, 1988. - Primes and Programming: An Introduction to Number Theory with Computing.
Peter Giblin.
Cambridge University Press, 1993. - Fundamentals of Data Structures in Turbo Pascal: For the IBM PC.
Ellis Horowitz and Sartaj Sahni.
Computer Science Press, 1989. - Programming on Purpose.
P. J. Plauger.
Prentice-Hall,- Volume I: Essays on Software Design, 1993.
- Volume II: Essays on Software People, 1993.
- Volume III: Essays on Software Technology, 1994.
- The Stanford GraphBase: A Platform for Combinatorial Computing.
Donald E. Knuth.
ACM Press/Addison-Wesley, 1993.
'Bedside' Informatics Literature
Here follow some references to books that may not directly improve performance at the IOI, but that put informatics and its players into a broader perspective. (The references are ordered alphabetically on author.)
- ACM Turing Award Lectures. The First Twenty Years: 1966-1985.
ACM Press, 1987. - The Mythical Man-Month: Essays on Software Engineering.
Frederick P. Brooks Jr.
Addison-Wesley, 1975, 1982, new edition 1995. - The Elements of Friendly Software Design.
Paul Heckel.
Sybex, 2nd edition, 1991. - Alan Turing: The Enigma.
Andrew Hodges.
Simon and Schuster, 1983. - Gödel, Escher, Bach: An Eternal Golden Braid.
Douglas R. Hofstadter.
Basic Books, 1979. - The Soul of a New Machine.
Tracy Kidder.
Little, Brown and Company, 1981. - Literate Programming.
Donald E. Knuth.
Center for the Study of Language and Information, 1992. - Being Digital.
Nicholas P. Negroponte.
Knopf, 1995, ISBN 0-679-43919-6. - Mindstorms: Children, Computers and Powerful Ideas.
Seymour Papert.
Harvester Press, 1980, 2nd edition 1993. - One Jump Ahead: Challenging Human Supremacy in Checkers.
Jonathan Schaeffer.
Springer-Verlag, 1997. - The Cuckoo's Egg: Tracking a Spy Through the Maze of Computer Espionage.
Clifford Stoll.
Pocket Books, Simon & Schuster, 1989. - Computer Power and Human Reason: From Judgment to Calculation.
Joseph Weizenbaum.
Freeman, 1976.
- The Evolution of Cooperation.
Robert Axelrod.
Basic Books, 1984. - The Blind Watchmaker: Why the Evidence of Evolution Reveals a Universe Without Design.
Richard Dawkins.
Longman, 1986; Reissue Edition: Norton 1996.