Classic Systems Papers and Books

I have just started this list.  This is not a representative sample.... it's a list of papers that happened to be on top of my desk.  I will try to update this list in the next few week.  -- Mark Verber, October 5, 1999

Hal Abelson, Ross Anderson, Steven M. Bellovin, Josh Benaloh, Matt Blaze, Whitfield Diffie, John Gilmore, Peter G. Neumann, Ronald L. Rivest, Jeffrey I. Schiller, Bruce Schneier, The Risks of Key Recovery, Key Escrow, and Trusted Third-Party Encryption, 27 May 1997 (ftp://research.att.com/dist/mab/key_study.txt or .ps; http://www.crypto.com/key_study).  Reissued with an incremental preface assessing what happened in the intervening year, http://www.cdt.org/crypto/risks98/, 8 June 1998.

Jon L. Bentley, Writing Efficient Programs. Prentice-Hall, 1982.

A. D. Birrell, et al. Grapevine: An exercise in distributed computing. Communications of the ACM 25, 4, April 1982, pp 260-273.

Frederick P. Brooks The Mythical Man-Month, Addison-Wesley, 1995.

Alan Demers, Mark Gealy, Dan Greene, Carl Hauser, Wes Irish, John Larson, Sue Manning, Scott Shenker, Howard Sturgis, Dan Swinehart, Doug Terry, Don Woods, Epidemic Algorithms for Replicated Database Maintenance, Sixth ACM Symposium on Principles of Distributed Systems, Vancouve, August 1987, pp 1-12.  Also published by Xerox PARC as CSL-89-1

C.A.R. Hoare, Hints on programming language design. ACM SIGACT/SIGPLAN Symposium on Principles of Programming Languages, Boston, Oct. 1973

C.A.R. Hoare, Monitors: An Operating System Structuring Concept. Communications of the ACM 17, 10, Oct. 1974, pp 549-557.

Butler Lampson, Hints for Computer System Design, ACM Operating Systems Rev. 15, 5 (Oct. 1983), pp 33-48. Reprinted in IEEE Software 1, 1 (Jan. 1984), pp 11-28.

P.G. Neumann, Practical Architectures for Survivable Systems and Networks, Phase-One Final Report.   January 28, 1999.  http://www.csl.sri.com/neumann/arl-one.html

P.G. Neumann, Computer-Related Risks, Addison-Wesley and ACM Press, 1995.

Henry Petroski, To Engineer Is Human, Vintage, 1992

Daniel C. Swinehart, Polle T. Zellweger, Richard J. Beach, Robert B. Hagmann, A Structural View of the Cedar Programming Environment, ACM SIGPLAN Notices 20, 7 (July 1985)  and also published by Xerox PARC as CSL-86-1

Gerald M. Weinberg, Daniela Weinberg, General Principles of Systems Design, Dorset House, 1988

Sharon E. Perl & W. E. Weihl Performance Assertion Checking, SOSP, 1993

General Design Principles - Saltzer

Rules of Thumb in Data Engineering - Gray & Shenoy

Lessons Learned from Giant Scale Internet Services - Culler

Jonathan S. Shapiro, Norm Hardy,  EROS: A Principle-Driven Operating System from the Ground Up, IEEE Software, Jan/Feb 2002, pp 26-33

Fault Tolerant Operating Systems, Peter Denning, ACM Computing Surveys, Vol. 8, No. 4, December 1976

Fundamentals of Computing (a cheat-list) Leonid A. Levin

Laws of Programming, C. A. R. HOARE, 1. J. HAYES, HE JIFENG, C. C. MORGAN, A. W. ROSCOE, J. W. SANDERS, 1. H. SORENSEN, J. M. SPIVEY, and B. A. SUFRIN, CACM August 1987 Volume 30 Number 8

A Method for Obtaining Digital Signatures and Public- Key Cryptosystems R. L. Rivest, A. Shamir, and L. Adlemanm, CACM, February 1978 of Volume 21 the ACM Number 21

See Also HA Systems and Techniques