CMSC-641 Algorithms: Supplemental Reading (fall 95)

The following selected books on algorithms and discrete mathematics are recommended for reference and supplemental reading; you may find them helpful during this semester or at some future time.

Survey Texts (for graduates and advanced undergraduates)

  1. Aho, Alfred; John E. Hopcroft; and Jeffrey Ullman, The Design and Analysis of Computer Algorithms, Addison-Wesley (1989). [New edition of the authors' popular 1974 graduate text that evolved from a graduate course at Cornell.]
  2. Brassard, Gilles; and Paul Bratley, Algorithmics: Theory and Practice, Prentice Hall (1996). [Has nice chapters on how to solve recurrences by characteristic equations and on probabilistic algorithms.]
  3. Cormen, Thomas H.; Charles E. Leiserson; and Ronald L. Rivest, Introduction to Algorithms, MIT Press and McGraw-Hill (1990). [Clear, up-to-date, comprehensive text that evolved from the undergraduate algorithms course at MIT. Has good problems.]
  4. Kozen, Dexter C., The Design and Analysis of Algorithms, Springer (1992).

Survey Texts (primarily for undergraduates)

  1. Aho; Hopcroft; and Ullman, Data Structures and Algorithms, Addison-Wesley (1983). [An elementary undergraduate text by the authors of the popular 1974 graduate text. More of a data structures text than an algorithms text.]
  2. Baase, Sara, Computer Algorithms: Introductions to Design and Analysis, Addison-Wesley (1988). [A popular undergraduate text formerly used in CMSC--470; revision of the terse first version.]
  3. Horowitz, Ellis; and Sartaj Sahni, Fundamentals of Computer Algorithms, Computer Science Press (1978). [The first algorithms text organized by algorithm design strategies.]
  4. Reingold; Nievergelt; and Deo, Combinatorial Algorithms: Theory and Practice, Prentice-Hall (1977).
  5. Sedgewick, Robert, Algorithms in Modula-3, Addison-Wesley (1993). [Elementary, non-mathematical text that evolved from a third-semester computer science course at Brown. Includes some nice geometric topics.]

Reference Works

  1. Gonnet, G. H., Handbook of Algorithms and Data Structures, Addison-Wesley (1984).
  2. Knuth, Donald E., Fundamental Algorithms\/ in The Art of Computer Programming, \hbox{vol.\ I}, Addison-Wesley (1973). [A classic reference. Begins with a nice survey of mathematical techniques.]
  3. Knuth, Donald E., Seminumerical Algorithms\/ in The Art of Computer Programming, \hbox{vol.\ }II, Addison-Wesley (1981). [A classic reference. Contains nice chapters on random number generation.]
  4. Knuth, Donald E., Sorting and Searching\/ in The Art of Computer Programming, \hbox{vol.\ III}, Addison-Wesley (1973). [A classic reference.]
  5. Melhorn, Kurt., Sorting and Searching\/ in Data Structures and Algorithms, \hbox{vol.\ I}, Springer (1984).
  6. Melhorn, Kurt, Graph Algorithms and NP-Completeness\/ in Data Structures and Algorithms, \hbox{vol.\ II}, Springer (1984).
  7. Melhorn, Kurt, Multidimensional Searching and Computational Geometry\/ in Data Structures and Algorithms, \hbox{vol.\ III}, Springer (1984).
  8. Purdom, Paul Walter; and Cynthia A. Brown, The Analysis of Algorithms, Holt, Rinehart and Winston (1985).
  9. Sedgewick, Robert, An Introduction to the Analysis of Algorithms, Addison-Wesley (Reading, MA, 1996).
  10. van Leeuwen, ed., Handbook of Theoretical Computer Science, volumn A, MIT Press/Elsevier (1990). [A collection of excellent advanced surveys on algorithms and complexity theory.]

Parallel Algorithms

  1. Akl, Selim G., The Design and Analysis of Parallel Algorithms, Prentice Hall (1989).
  2. Bertsekas, Dimitri P.; and John N. Tsitsiklis, Parallel and Distributed Computation: Numerical Methods, Prentice Hall (1989). [Good introduction to combinatorial optimization and numerical algorithms.]
  3. Leighton, T., Introduction to Parallel Algorithms and Architectures: Arrays, Trees, Hypercubes, Morgan Kaufmann (1992). [Excellent introduction and survey of parallel algorithms.]
  4. Quinn, Michael J., Designing Efficient Algorithms for Parallel Computers, McGraw-Hill (1987).
  5. Reif, John H., ed., Synthesis of Parallel Algorithms, Morgan Kaufmann (1993). [Excellent collection of introductory and survey articles on parallel algorithms.]

Specialized Works

  1. Even, Shimon, Graph Algorithms, Computer Science Press (1979).
  2. Gary, Michael R.; and David S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman (1979). [A popular introduction to NP-completeness. Includes a lengthy list of NP-complete problems.]
  3. Papadimitriou, Christos H.; and Kenneth Steiglitz, Combinatorial Optimization: Algorithms and Complexity, Prentice-Hall (1982).
  4. Li, Ming; and Paul Vit\'{a}nyi, An Introduction to Kolmogorov Complexity and its Applications, Springer (1993).
  5. Tarjan, Robert Endre, Data Structures and Network Algorithms, CBMS-NSF regional conference series, \hbox{no.\ 44}, SIAM (Philadelphia, PA, 1983). [Has a nice description of amortized analysis.]

Algorithmics

  1. Bently, Jon L., Programming Pearls, Addison-Wesley (1986). [A wonderful collection of Bentley's articles from his ``Programming Pearls'' column in the Communications of the ACM. Fun and educational reading.]
  2. Bently, Jon L., More Programming Pearls: Confessions of a Coder, Addison-Wesley (1988).
  3. Bently, Jon L., Writing Efficient Programs, Prentice-Hall (1982). [Practical hints and tricks.]
  4. Harel, D., Algorithmics: The Spirit of Computing, Addison-Wesley (1987). [Fun reading.]

Discrete Mathematics

  1. Epp, Susanna S., Discrete Mathematics with Applications, Wadsworth (1990). [Good elementary introduction to discrete mathematics, including proof techniques. CMSC-203 text.]
  2. Feller, William, An Introduction to Probability Theory and its Applications, \hbox{vol.\ I}, John Wiley (1968). %57 [An excellent advanced reference for probability.]
  3. Graham, Ronald L.; Donald E. Knuth; and Oren Patashnik, Concrete Mathematics, Addison-Wesley (1989). [Graduate-level topics in discrete mathematics.]
  4. Hillman; Alexander; and Grassl, Discrete and Combinatorial Mathematics, Dellen (1986). [Nice survey of discrete math, but out of print.]
  5. Hoel, Paul G.; Port, Sidney C.; and Stone, Charles J., Introduction to Probability Theory, Houghton Mifflin (1971). [Elementary introduction to probability theory.]
  6. Roberts, Fred., Applied Combinatorics, Prentice-Hall (1984). [Intermediate-level topics in discrete mathematics. Excellent reference for combinatorics.]