Booklist for the Well-Rounded Computer Scientist
List the books down below with a short description of the book's content and a brief discussion of its impact on the field.
These should be writings that:
- have affected the practice and science of computing in a fundamental way in addition to the areas for which they were written.
- may teach those relatively new to the field something important about the way that computer scientists think about computing problems or should be thinking.
Please include your name (if you feel comfortable with signing your contribution).
- Hackers (history of personal computing) Jen Mankoff
- Cringely, Robert X. "Accidental Empires" (history of the development of the PC industry; basis for PBS show "Triumph of the Nerds") suggested by Colleen Kehoe
- Bently, Jon. "Programming Pearls" (small case studies of programming issues - I don't know whether this has been influential or not, though) suggested by Colleen Kehoe
- Hafner, Katie, Where Wizards Stay Up Late: The Origins of the Internet - suggested to Minaxi Gupta by Mostafa Ammar
- Dream Machines/Computer Lib by Ted Nelson. Aside from giving a neat picture of the computer world of he 70's, this book gives the inspirations behind a world-wide hyperlinked network. suggested by Lex Spoon
- Jan van Heijnoot: From Frege to Goedel (contains most of the seminal papers in computability theory) suggested by Nancy Nersessian
- A. Newell and H. Simon: Human Information Processing suggested by Nancy Nersessian
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John M. Vlissides. This book presents a catalog of simple and succinct solutions to commonly occurring design problems. It's only 5 years old, but I think it will have a lasting impact on the practice of software construction as well as on the design of new programming languages. suggested by Brian McNamara
From Spencer Rugaber:
- Peter J. Denning, Douglas E. Comer, David Gried, Michael C. Mulder, Allen Tucker, A. Joe Turner, and Paul R. Young. "Computing as a Discipline," Communications of the ACM, 1( 32):9-23, January 1989.
- P. P. Chen. "The Entity-Relationship Model-Toward a Unified View of Data." ACM Transactions on Database Systems, 1(1):9-36, March 1976.
- E. Codd. "A Relational Model for Large Shared Data Banks." Communications of the ACM, 13(6), June 1970.
- A. V. Aho, C. Beeri, J. D. Ullman. "The Theory of Joins in Relational Databases", TODS 4:3, September 1979.
- R. Bayer and E. McCreight. "Organization and Maintenance of Large Ordered Indexes."
- James P. Fry and Edgar H. Sibley. "The Evolution of Data-Base Management Systems."
Software Engineering and Programming
- Edsger W. Dijkstra. "Go To Statement Considered Harmful, 147-148." Communications of the ACM, 3(11.):147-148, November 1968.
- Frederick P. Brooks, Jr. "No Silver Bullet - Essence and Accidents in Software Engineering." Information Processing 1986, Proceedings of the IFIP Tenth World Computing Conference, J.-J. Kugler, editor, pages 1069-1076, 1986.
- Tony Hoare. Essays in Computing Science. Edited by Cliff Jones, Prentice-Hall, International.
- Eric Raymond. "The Cathedral and the Bazaar." First Monday, 3 (3), March 2, 1998.
- M. E. Fagan. "Design and Code Inspections to Reduce Errors in Program Development." IBM Systems Journal, 15(3):182-211, 1976.
- NATO Software Engineering Conference Proceedings.
- Edsger W. Dijkstra. "Guarded Commands, Nondeterminancy, and Formal Derivation of Programs."
- C. A. R. Hoare. "Proof of Correctness of Data Representations."
- David L. Parnas. "On the Criteria to be Used in Decomposing Systems into Modules."
- David L. Parnas, Paul C. Clements. "A Rational Design Process: How and Why to Fake It."
- W. Wulf and M. Shaw. "Global Variables Considered Harmful."
- John Backus. "Programming in America in the 1950s - Some Personal Impressions."
- Edsger W. Dijkstra. "Programming Considered as a Human Activity."
- Peter J. Denning. "Virtual Memory." ACM Computing Surveys, 2(3):153-189, September 1970.
- D. Ritchie and K. Thompson. "The UNIX Time-Sharing System." The Bell System Technical Journal, 57(6 Part 2): 1905-1930.
- David E. Bell and Leonard La Padula. "Secure Computer System: Unified Exposition Multics Interpretation, ESD-TR-75-306, ESD/AFSC, Hanscom AFB, Bedford, MA, (1975) [DTIC AD-A023588]" http://seclab.cs.ucdavis.edu/projects/history/papers/bell76.pdf.
- Edsger W. Dijkstra. "Cooperating Sequential Processes."
- Edsger W. Dijkstra. "Solution of a Problem in Concurrent Programming Control."
- David Hsiao, Frank Harary. "A Formal System for Information Retrieval from Files."
- R.M. Karp, "Reducibility among combinatorial problems." In Complexity of Computer Computations 1972, edited by R.Miller and J.W.Thatcher, Plenum Press, pages 85-103.
- M. Rabin and D. Scott. "Finite Automata and their Decision Problems." IBM Journal of Reasearch and Development, 3(2):114-125, April 1959.
- C. Shannon. "A Mathematical Theory of Communication." Bell System Technical Journal, 27:379-423, 623-656, 1948.
- A. Turing. "On Compuable Numbers, with an Application to the Entscheidungsproblem." Proceedings of the London Mathematical Society, Series 2-42, 230-265, 1936.
- Kleene, Stephen Cole. "Origins of Recursive Function Theory," Annals of the History of Computing, 3 (1): 52-67, 1981.
- Norbert Wiener. "Cybernetics: New Field of Study Looks into Processes Common to Nervous Systems and Mathematical Machines," Scientific American, 14-19, November 1948.
- Stephen A. Cook. "The Complexity of Theorem Proving Procedures."
- J. Hartmanis, R. E. Stearns. "On the Conceptual Complexity of Algorithms."
- C. A. R. Hoare. "Quicksort."
- Vannevar Bush. "As We May Think." Atlantic Monthly, July 1945.
- Mark Weiser. "The Computer for the 21st Century." Scientific American, September 1991, pp. 94-104.
- Alan Kay and Adele Goldberg. "Personal Dynamic Media." IEEE Computer, March 1977, pp. 31-41.
- Ivan Sutherland. SketchPad.
- Don Norman. Design of Everyday Things.
- George A. Miller, "The Magic Number Seven Plus or Minus Two." The Psychological Review, 63:81-97, 1956. http://www.well.com/user/smalin/miller.html.
- W. Mcculloch and W. Pitts. "A Logical Calculus of the Ideas Immanent in Nervous Activity." Bulletin of Mathematical Biophysics, 5:115-133, 1943.
- Seymour Papert. Preface and first chapter of Mindstorms.
- Sherry Turkle. Chapter on adolescence in The Second Self, Computers and the Human Spirit.
- P. Naur (Editor), J. Backus, F. Bauer, J. Green, C. Katz, J. McCarthy, A. Perlis, H. Rutishauser, K. Samelson, B. Vauquois, J. Wegstein, A. Van Wijngaarder, and M. Woodger. "Revised Report on the Algorithmic Language-Algol-60." Communications of the ACM, 6:1-17, January 1963.
- Ed Post. "Real Programmers Don't Use Pascal." Datamation, 1983. http://www.ee.ryerson.ca:8080/~elf/hack/realmen.html.
- E. Irons. "A Syntax Directed Compiler for Algol 60." Communications of the ACM, 4: 51-55, January 1961.
- Noam Chomsky. "Formal Properties of Grammars." Handbook of Mathematical Psychology 2, John Wiley & Sons, 323-418.
- J. W. Backus et al. "The FORTRAN Automatic Coding System."
- C. A. R. Hoare. "An Axiomatic Basis for Computer Programming."
- C. A. R. Hoare, N. Wirth. "An Axiomatic Definition of the Programming Language Pascal."
- John B. Johnston. "The Contour Model of Block Structured Processes."
- Donald E. Knuth. On the Translation of Languages from Left to Right."
Hardware and Architecture
- Claude E. Shannon. "A Symbolic Analysis of Relay and Switching Circuits."
- C. P. Thacker, E. M. McCreight, B. W. Lampson, R. F. Sproull, and D. R. Boggs. "Alto: A Personal Computer."
- M. V. Wilkes. "The Best Way to Design an Automatic Calculating Machine."
- Gordon E. Moore, "Cramming More Components Onto Integrated Circuits." Electronics, 38: 114-117, April 19, 1965.
- John von Neumann. First Draft of a Report on the EDVAC, June 1945. Reprinted with corrections in the Annals of the History of Computing 15 #4 (1993): 25-75.
- John von Neumann. "The Principles of Large-Scale Computing Machines." reprinted in the Annals of the History of Computing 3 #3 (1981): 263-273.
- Wallace J. Eckert, Presper, John W. Mauchley, Herman H. Goldstine, and J.G. Brainerd. "Description of the ENIAC and Comments on Electronic Digital Computing Machinery, Contract W/670/ORD 4926." Moore School of Electrical Engineering, University of Pennsylvania, Philadelphia, November 30, 1945.
- John W. Mauchly. "The Use of High Speed Vacuum Tube Devices for Calculating." reprinted in Origins of Digital Computers: Selected Papers, Springer-Verlag, Berlin, 1982, 355-358.
- John Vincent Atanasoff. "Computing Machine for the Solution of Large Scale Systems of Linear Algebraic Equations." reprinted in Springer-Verlag, Berlin, 1982, 315-336.
- Charles Babbage. "On the Mathematical Powers of the Calculating Engine." reprinted in The Origins of Digital Computers: Selected Papers, Springer-Verlag, 1973, 19-54.
- Newell and Simon
- Alan Turing. "Computing Machinery and Intelligence."
- Marvin Minsky. "Steps Toward Artificial Intelligence."
- Marvin Minsky. "Matter, Mind, and Models."
- Marvin Minsky. "Steps Toward Artificial Intelligence." Proceedings of the IRE 49, 8-30, 1961.
- Judea Pearl. "Fusion, Propagation, and Structuring in Belief Networks."
- Alan Turing. "Computing Machinery and Intelligence." Mind, 59 (236):433-460, October 1950.