Recommended Informatics (CS) Literature

Of course, it is also recommended that you read books on other disciplines.

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. [See this book at Amazon.com]

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. [See this book at Amazon.com]

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. [See this book at Amazon.com]
  • Algorithmics: The Spirit of Computing.
    David Harel.
    3rd edition, Addison-Wesley, 2004. [See this book at Amazon.com]
  • What Computing Is All About.
    Jan L. A. van de Snepscheut.
    Springer Verlag, 1993. (Errata) [See this book at Amazon.com]

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.
    Springer-Verlag, 2003. [See this book at Amazon.com]

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 preface of this book explains that ``[these] competitions culminated in the International Computer Science Olympiad, held for the first time in Nova Gorica, Slovenia in 1988, (and since in Münster, Germany, and Varna, Bulgaria).'' (Andrej Brodnik provides more details.)

A bundle of 965 problems on the design, verification, and analysis of algorithms is:

  • Problems on Algorithms (2nd Edition). [Available on-line]
    Ian Parberry and William Gasarch.
    Ian Parberry, 2002. [See first edition (1995) of this book at Amazon.com]

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. [See this book at Amazon.com]

A modern but less comprehensive introduction is:

  • Fundamentals of Algorithmics.
    Gilles Brassard and Paul Bratley.
    Prentice-Hall, 1996. [See this book at Amazon.com]

An excellent overview of practical algorithms and their design is

:
  • The Algorithm Design Manual.
    Steven S. Skiena.
    Springer-Verlag, 1998. [See this book at Amazon.com]
    Errata list

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.

A concise, to-the-point book that addresses IOI-like programming issues in a way hardly found elsewhere:

The Practice of Programming. ----- ----- NEW RECOMMENDATION
Brian W. Kernighan, Rob Pike.
Addison-Wesley, 1999.
[ See this book at Amazon.com]

Somewhat older, but quite practical, algorithm textbooks are

  • The Design and Analysis of Computer Algorithms.
    Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman.
    Addison-Wesley, 1974. [See this book at Amazon.com]
  • Data Structures and Algorithms.
    Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman.
    Addison-Wesley, 1983. [See this book at Amazon.com]
  • Fundamentals of Computer Algorithms.
    Ellis Horowitz and Sartaj Sahni.
    Computer Science Press, 1978.
  • Algorithms.
    Robert Sedgewick.
    Addison-Wesley, 1988 (2nd edition). [See this book at Amazon.com]
    Also available for C Parts 1-4 (Fundamentals, Data Structures, Sorting, Searching; 3rd edition, 1997), [See this book at Amazon.com]
    Part 5 (Graph Algorithms; 3rd edition, 2002), [See this book at Amazon.com]
    C++ (3rd edition, 1999), [See this book at Amazon.com]
    Modula-3 [See this book at Amazon.com]
    Java [See this book at Amazon.com]
  • Algorithms + Data Structures = Programs.
    Niklaus Wirth.
    Prentice-Hall, 1976. [See this book at Amazon.com]

Of course, the bible of computer programming still is

  • The Art of Computer Programming.
    Donald E. Knuth.
    Addison-Wesley,
    • Volume 1: Fundamental Algorithms,
      3rd edition, 1997. [See this book at Amazon.com]
    • Volume 2: Semi-Numerical Algorithms,
      2nd edition, 1981, [See this book at Amazon.com]
      3rd edition, 1997, [See this book at Amazon.com]
    • Volume 3: Sorting and Searching,
      1973. [See this book at Amazon.com]
      2nd edition, 1998, [See this book at Amazon.com]
    • Errata

These volumes are highly recommended to people putting together problem sets. [ Book review of The Art of Computer Programming

]

Some more specialized, but easily accessible, programming books are:

  • Writing Efficient Programs.
    Jon Louis Bentley.
    Prentice-Hall, 1982. [See this book at Amazon.com]
  • Programming Pearls.
    Jon Bentley.
    Addison-Wesley, 1986. [See this book at Amazon.com]
    Second Edition, 1999. [See this book at Amazon.com]
  • More Programming Pearls: Confessions of a Coder.
    Jon Bentley.
    Addison-Wesley, 1988. [See this book at Amazon.com]
  • Primes and Programming: An Introduction to Number Theory with Computing.
    Peter Giblin.
    Cambridge University Press, 1993. [See this book at Amazon.com]
  • Fundamentals of Data Structures in Turbo Pascal: For the IBM PC.
    Ellis Horowitz and Sartaj Sahni.
    Computer Science Press, 1989. [See this book at Amazon.com]
  • Programming on Purpose.
    P. J. Plauger.
    Prentice-Hall,
    • Volume I: Essays on Software Design, 1993. [See this book at Amazon.com]
    • Volume II: Essays on Software People, 1993. [See this book at Amazon.com]
    • Volume III: Essays on Software Technology, 1994. [See this book at Amazon.com]

A book that invites you to have fun with graphs:

  • The Stanford GraphBase: A Platform for Combinatorial Computing.
    Donald E. Knuth.
    ACM Press/Addison-Wesley, 1993. [See this book at Amazon.com]

The programs and files from The Stanford GraphBase book are available for anonymous ftp

.

`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. [See this book at Amazon.com]
  • The Mythical Man-Month: Essays on Software Engineering.
    Frederick P. Brooks Jr.
    Addison-Wesley, 1975, 1982, new edition 1995. [See this book at Amazon.com]
  • The Elements of Friendly Software Design.
    Paul Heckel.
    Sybex, 2nd edition, 1991. [See this book at Amazon.com]
  • Alan Turing: The Enigma.
    Andrew Hodges.
    Simon and Schuster, 1983. [See this book at Amazon.com]
  • Gödel, Escher, Bach: An Eternal Golden Braid.
    Douglas R. Hofstadter.
    Basic Books, 1979. [See this book at Amazon.com]
  • The Soul of a New Machine.
    Tracy Kidder.
    Little, Brown and Company, 1981. [See this book at Amazon.com]
  • Literate Programming.
    Donald E. Knuth.
    Center for the Study of Language and Information, 1992. [See this book at Amazon.com]
  • Being Digital.
    Nicholas P. Negroponte.
    Knopf, 1995, ISBN 0-679-43919-6. [See this book at Amazon.com]
  • Mindstorms: Children, Computers and Powerful Ideas.
    Seymour Papert.
    Harvester Press, 1980, 2nd edition 1993. [See this book at Amazon.com]
  • One Jump Ahead: Challenging Human Supremacy in Checkers.
    Jonathan Schaeffer. ----- ----- ----- ----- NEW RECOMMENDATION
    Springer-Verlag, 1997. [See this book at Amazon.com]
  • The Cuckoo's Egg: Tracking a Spy Through the Maze of Computer Espionage.
    Clifford Stoll. ----- ----- ----- ----- ----- NEW RECOMMENDATION
    Pocket Books, Simon & Schuster, 1989. [See this book at Amazon.com]
  • Computer Power and Human Reason: From Judgment to Calculation.
    Joseph Weizenbaum.
    Freeman, 1976. [See this book at Amazon.com]

Strictly speaking the following books are not about informatics at all. But they are written with inspiring enthusiasm about interesting topics, and informatics does play a role.

  • The Evolution of Cooperation.
    Robert Axelrod.
    Basic Books, 1984. [See this book at Amazon.com]
  • The Blind Watchmaker: Why the Evidence of Evolution Reveals a Universe Without Design.
    Richard Dawkins.
    Longman, 1986; Reissue Edition: Norton 1996. [See this book at Amazon.com]

你可能感兴趣的:(Algorithm,books,algorithm,sorting,basic,pascal,performance)