![]() |
School of Engineering and
Applied
Science
Department of Computer Science CSci 133 -- Algorithms and Data Structures I http://www.seas.gwu.edu/~csci133/spring05 Prof. Michael B. Feldman mfeldman@gwu.edu |
In this short bibliography I have tried to select the most important
original articles in classical data structures and algorithms. These
are (mostly) the real primary sources, the articles that introduced the
famous -- and still very widely-used -- algorithms and technques we all
study in college now. The ACM publications -- even the very old ones --
are now all online in the ACM Digital Library.
Adelson-Velskii, G. M., and E. M. Landis [1962]: “An Algorithm for the Organization of Information,” Dokl. Akad. Nauk SSSR, Mathemat., 146:2, pp. 263-266. Introduces AVL trees.
Cardelli, L., and P. Wegner [1985]: “On Understanding Types, Data Abstraction, and Polymorphism,” ACM Computing Surveys, 17:4, pp. 471-522. An important early survey on object-oriented programming.
Guttag, J. V., E. Horowitz, and D. R. Musser [1978]: “Abstract Data Types and Software Validation,” Communications of the ACM, 21:12, pp. 1048-1064. One of the early papers on ADTs.
Hoare, C. A. R. [1962]: “Quicksort,” Computer Journal, 5:1, pp. 10-15.
Knuth, D.E. [1973]: Fundamental Algorithms, 2d ed. Addison-Wesley, Reading, Massachusetts. ISBN 0-201-03809-9.
Knuth, D.E. [1973]: Sorting and Searching. Addison-Wesley, Reading, Massachusetts. (ISBN 0-201-03803-X) The best collection of sorting and searching algorithms ever published. Thirty years old and still timely.
Liskov, B. H., and S. N. Zilles [1975]: “Specification Techniques for Data Abstractions,” IEEE Transactions on Software Engineering, SE-1:1, pp. 7-18. Another early ADT paper, in the first issue of this journal.
Liskov, B. H., and S. N. Zilles [1977]: “Abstraction Mechanisms in CLU,” Communications of the ACM, 20:8, pp. 564-576. Specification vs. implementation.
Lukasiewicz, J. [1951]: Aristotle's Syllogistic from the Standpoint of Modern Formal Logic. Clarendon Press, England. Introduces “Polish” notation.
Martin, W. [1971]: “Sorting,” Computing Surveys, 3 (4): 147.
Maurer, W. D. [1968]: “An Improved Hash Code for Scatter Storage,” Communications of the ACM, 11:1.
Introduces quadratic hashing. (Yes, it's the same W.D. Maurer who
teaches at GW!)
Maurer, W. D., and T. Lewis [1975]: “Hash Table Methods,” Computing Surveys, 7:1, pp. 5-19. Excellent survey article on hash tables, again by GW's own W.D. Maurer.
Nievergelt, J. [1974]: "Binary Search Trees and File Organization," Computing Surveys, 6:3, pp. 195-207.
Perlis, A., and C. Thornton [1960]: “Symbol Manipulation by Threaded Lists,” Communications of the ACM, 3:4, pp. 195-204. Threading binary trees.
Samelson, K., and F.L. Bauer [1960]: “Sequential Formula Translation,” Communications of the ACM, 2:2, pp. 76-83. Translating with a stack.
Shell, D.L. [1959]: “A High-Speed Sorting Procedure,” Communications of the ACM, 2:7, pp. 30-32. Shell sort.
Shell, D.L. [1971]: “Optimizing the Polyphase Sort,” Communications of the ACM, 14:11, pp. 713-719.
Singleton, R.C. [1969]: “Algorithm 347: an Algorithm for Sorting with Minimal Storage,” Communications of the ACM, 12:3, pp. 185-187. Quicksort.
Stroustrup, B. [1982]: “Classes: an Abstract Data Type Facility for the C Language,” SIGPLAN Notices, 17:1, pp. 354-356. The very first published article on what became C++.
Williams, J. W. J. [1964]: “Algorithm 232 (Heapsort),” Communications of the ACM, 7:6, pp. 347-348.
(end of article)