code reading dds

Code ReadingBibliography

The following is an HTML-formatted bibliography list for the book:
Diomidis Spinellis. Code Reading: The Open Source Perspective. Addison Wesley, 2003. ISBN 0-201-79940-5.

A. V. Aho and M. J. Corasick. Efficient string matching: an aid to bibliographic search. Communications of the ACM, 18(6):333–340, 1975.

Ken Arnold and James Gosling. The Java Programming Language. Addison-Wesley, Boston, MA, third edition, 2000.

Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley, Reading, MA, 1974.

Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksdahl-King, and Shlomo Angel. A Pattern Language. Oxford University Press, Oxford, 1977.

Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger. The AWK Programming Language. Addison-Wesley, Reading, MA, 1988.

Christopher Alexander. Notes on the Synthesis of Form. Harvard University Press, Cambridge, 1964.

Andrei Alexandrescu. Modern C++ Design: Generic Programming and Design Patterns Applied. Addison-Wesley, Boston, MA, 2001.

Even Adams and Steven S. Muchnick. Dbxtool: A window-based symbolic debugger for Sun workstations. Software: Practice & Experience, 16(7):653–669, July 1986.

Phillip G. Armour. The case for a new business model: Is software a product or a medium? Communications of the ACM, 43(8):19–22, August 2000.

Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers, Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, 1985.

Matthew H. Austern. Generic Programming and the STL: Using and Extending the C++ Standard Template Library. Addison-Wesley, Reading, MA, 1998.

Maurice J. Bach. The Design of the UNIX Operating System. Prentice-Hall, Englewood Cliffs, NJ, 1986.

Don Bolinger, Tan Bronson, and Mike Loukides. Applying RCS and SCCS: From Source Control to Project Control. O'Reilly and Associates, Sebastopol, CA, 1995.

Barry W. Boehm, Bradford Clark, Ellis Horowitz, Ray Madachy, Richard Shelby, and Chris Westland. Cost models for future life cycle processes: COCOMO 2. Annals of Software Engineering, 1:57–94, 1995.

L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice. Addison-Wesley, Reading, MA, 1998.

Jon Beck and David Eichmann. Program and interface slicing for reverse engineering. In 15th International Conference on Software Engineering, ICSE '93, pages 509–518, New York, 1993. ACM, ACM Press.

Kent Beck. Extreme Programming Explained: Embrace Change. Addison-Wesley, Boston, MA, 2000.

Jon Louis Bentley. Programming Pearls. Addison-Wesley, Reading, MA, 1986.

Moshe Bar and Karl Franz Fogel. Open Source Development with CVS. The Coriolis Group, Scottsdale, AZ, 2001.

Kent Beck and Erich Gamma. Test infected: Programmers love writing tests. Java Report, 3(7):37–50, July 1998.

L. Barroca, J. Hall, and P. Hall, editors. Software Architectures: Advances and Applications. Springer Verlag, Berlin, 1999.

Jon Louis Bentley and Donald E. Knuth. Programming pearls: A tt WEB program for sampling. Communications of the ACM, 29(5):364–369, May 1986.

Jon Louis Bentley, Donald E. Knuth, and Douglas McIlroy. A literate program. Communications of the ACM, 19(6):471–483, June 1986.

Bruce Blinn. Portable Shell Programming: An Extensive Collection of Bourne Shell Examples. Prentice Hall, Englewood Cliffs, NJ, 1995.

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. Pattern-Oriented Software Architecture, volume 1: A System of Patterns. John Wiley and Sons, New York, 1996.

Barry W. Boehm. Software Engineering Economics. Prentice-Hall, Englewood Cliffs, NJ, 1981.

Barry W. Boehm. The economics of software maintenance. In Software Maintenance Workshop, pages 9–37, 1983.

Hans-Juergen Boehm. Garbage collection in an uncooperative environment. Software: Practice & Experience, 18(9):807–820, September 1988.

S. R. Bourne. An introduction to the UNIX shell. In Unix Programmer's Manual [Uni79]. Also available online

J. Brady. A theory of productivity in the creative process. IEEE Computer Graphics and Applications, 6(5):25–34, May 1986.

Grady Booch, James Rumbaugh, and Ivar Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, Reading, MA, 1999.

Maurice Bruynooghe. The memory management of Prolog implementations. In Keith L. Clark and Sten-Åke Tärnlund, editors, Logic Programming, pages 83–98. Academic Press, London, 1982.

H. E. Bal, J. G. Steiner, and A. S. Tanenbaum. Programming languages for distributed computing systems. ACM Computing Surveys, 21(3):261–322, September 1989.

Arash Baratloo, Timothy Tsai, and Navjot Singh. Transparent run-time defense against stack smashing attacks. In Christopher Small, editor, USENIX 2000 Technical Conference Proceedings, Berkeley, CA, June 2000. Usenix Association.

Alan W. Brown and Kurt C. Wallnau. The current state of CBSE. IEEE Software, 15(5):37–46, September/October 1998.

Per Cederqvist et al. Version Management with CVS, 2001. Available online (January 2002).

L. W. Cannon, R. A. Elliott, L. W. Kirchhoff, J. H. Miller, J. M. Milner, R. W. Mitze, E. P. Schan, N. O. Whittington, Henry Spencer, David Keppel, and Mark Brader. Recommended C style and coding standards. Available online (December 2001). Updated version of the Indian Hill C Style and Coding Standards paper.

Thomas W. Christopher. Reference count garbage collection. Software: Practice & Experience, 14(6):503–507, June 1984.

J. O. Coplien, N. Kerth, and J. Vlissides. Pattern Languages of Program Design 2. Addison-Wesley, Reading, MA, 1996.

Douglas E. Comer. Internetworking with TCP/IP, volume I: Principles, Protocols and Architecture. Prentice-Hall, Englewood Cliffs, NJ, fourth edition, 2000.

Damian Conway. Object Oriented Perl. Manning Publications Co., Greenwich, CT, 2000.

Roger F. Crew. ASTLOG: A language for examining abstract syntax trees. In Ramming [Ram97], pages 229–242.

James O. Coplien and Douglas C. Schmidt. Pattern Languages of Program Design. Addison-Wesley, Reading, MA, 1995.

Douglas E. Comer and David L. Stevens. Internetworking with TCP/IP, volume III: Client-Server Programming and Applications (BSD Socket Version). Prentice-Hall, Englewood Cliffs, NJ, second edition, 1996.

Douglas E. Comer and David L. Stevens. Internetworking with TCP/IP, volume II: ANSI C Version: Design, Implementation, and Internals. Prentice-Hall, Englewood Cliffs, NJ, third edition, 1998.

D. D. Clark and D. L. Tennenhouse. Architectural considerations for a new generation of protocols. In Proceedings of the ACM symposium on Communications architectures and protocols, pages 200–208, New York, 1990. ACM Press.

Tom Christiansen and Nathan Torkington. The Perl Cookbook. O'Reilly and Associates, Sebastopol, CA, 1998.

Ward Cunningham. Signature survey: A method for browsing unfamiliar code. Available online (July 2002), 2001. OOPSLA 2001 Software Archeology Workshop position statement.

D. R. Chase, W. Wegman, and F. K. Zadeck. Analysis of pointers and structures. ACM SIGPLAN Notices, 25(6):296–319, June 1990.

Larry L. Constantine and Edward Yourdon. Structured Design. Prentice Hall, Englewood Cliffs, NJ, 1979.

John Daniels. Modeling with a sense of purpose. IEEE Software, 19(1):8–10, January/February 2002.

Peter Duchessi and InduShobha Chengalur-Smith. Client/server benefits, problems, best practices. Communications of the ACM, 41(5):87–94, May 1998.

Devid Detlefs, Al Dosser, and Benjamin Zorn. Memory allocation costs in large C and C++ programs. Software: Practice & Experience, 24(6):527–542, June 1994.

Paul Dubois and Gigi Estabrook. Software Portability with Imake. O'Reilly and Associates, Sebastopol, CA, second edition, 1996.

Edsger Wybe Dijkstra. Go to statement considered harmful. Communications of the ACM, 11(3):147–148, March 1968.

Tom DeMarco and Timothy R. Lister. Peopleware: Productive Projects and Teams. Dorset House Publishing, New York, second edition, 1999.

R. DeMillo, R. Lipton, and A. Perlis. Social processes and proofs of theorems and programs. In Proc. Fourth ACM Symposium on Principles of Programming Languages, pages 206–214, New York, January 1977. ACM Press.

Rohan T. Douglas. Error message management. Dr. Dobb's Journal, 15(1):48–51, January 1990.

Nachum Dershowitz and Edward M. Reingold. Calendrical Calculations. Cambridge University Press, Cambridge, 1997.

Dale Dougherty and Arnold Robbins. sed and awk. O'Reilly and Associates, Sebastopol, CA, second edition, 1997.

J. D. Day and H. Zimmermann. The OSI reference model. Proceedings of the IEEE, 71:1334–1340, 1983.

Khaled El-Emam. Ethics and open source. Empirical Software Engineering, 6(4):291–292, December 2001.

Mark W. Eichlin and Jon A. Rochlis. With microscope and tweezers: An analysis of the internet virus of November 1988. In IEEE Symposium on Research in Security and Privacy, pages 326–345, May 1989.

Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, Reading, MA, 1990.

Stuart I. Feldman. Make—a program for maintaining computer programs. Software: Practice & Experience, 9(4):255–265, 1979.

Christopher W. Fraser and David R. Hanson. Exploiting machine-specific pointer operations in abstract machines. Software: Practice & Experience, 12:367–373, 1982.

M. Fayad and R. Johnson, editors. Domain-Specific Application Frameworks: Frameworks Experience by Industry. John Wiley and Sons, New York, 1999.

M. Fayad, R. Johnson, and D. C. Schmidt, editors. Domain-Specific Application Frameworks: Applications and Experiences. John Wiley and Sons, New York, 1999.

M. Fayad, R. Johnson, and D. C. Schmidt, editors. Domain-Specific Application Frameworks: Problems and Perspectives. John Wiley and Sons, New York, 1999.

Rickard E. Faith, Lars S. Nyland, and Jan F. Prins. KHEPERA: A system for rapid implementation of domain specific languages. In Ramming [Ram97], pages 243–255.

Jeffrey E. Friedl and Andy Oram, editors. Mastering Regular Expressions: Powerful Techniques for Perl and Other Tools. O'Reilly and Associates, Sebastopol, CA, second edition, 2002.

Martin Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston, MA, 2000. With contributions by Kent Beck, John Brant, William Opdyke, and Don Roberts.

The FreeBSD Project. Style—Kernel Source File Style Guide, December 1995. FreeBSD Kernel Developer's Manual: style(9). Available online at (March 2003).

Martin Fowler and Kendall Scott. UML Distilled: Applying the Standard Object Modeling Language. Addison-Wesley, Boston, MA, second edition, 2000.

Narain Gehani. Document Formatting and Typesetting on the UNIX System. Silicon Press, Summit, NJ, second edition, 1987.

Richard P. Gabriel and Ron Goldman. Mob software: The erotic life of code. Presented at the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications on October 19, 2000, in Minneapolis, Minnesota., October 2000. Online Current May 2002.

Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA, 1995.

S. Graham, P. Kessler, and M. K. McKusick. gprof: A call graph execution profiler. ACM SIGPLAN Notices, 6(17):120–126, June 1982. Proceedings of the SIGPLAN '82 Symposium on Compiler Construction.

S. Graham, P. Kessler, and M. K. McKusick. An execution profiler for modular programs. Software: Practice & Experience, 13:671–685, 1983.

Robert L. Glass. The sociology of open source: Of cults and cultures. IEEE Software, 17(3):104–105, May/June 2000.

Adele Goldberg. Smalltalk 80: The Language and its Implementation. Addison Wesley, Reading, MA, 1980.

Eric Hamilton. Literate programming—expanding generalized regular expressions. Communications of the ACM, 31(12):1376–1385, December 1988.

David R. Hanson. Literate programming—printing common words. Communications of the ACM, 30(7):594–599, July 1987.

Robert A. Heinlein. Stranger in a Strange Land. G. P. Putnam's Sons, New York, 1961.

N. Harrison, B. Foote, and H. Rohnert. Pattern Languages of Program Design 4. Addison-Wesley, Reading, MA, 1999.

C. A. R. Hoare. Proof of a program: Find. Communications of the ACM, 14(1):39–45, January 1971.

C. A. R. Hoare. Recursive data structures. Technical Report AIM-223 STAN-CS-73-400, Stanford University, Computer Science Department, October 1973.

C. A. R. Hoare. Communicating Sequential Processes. Prentice-Hall, Englewood Cliffs, NJ, 1985.

Mark R. Horton. Portable C Software. Prentice-Hall, Englewood Cliffs, NJ, 1990.

John L. Hennessy and David A. Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann, San Mateo, CA, second edition, 1996.

Andrew Hunt and David Thomas. The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley, Boston, MA, 2000.

Andy Hunt and Dave Thomas. Software archeology. IEEE Software, 19(2):20–22, March/April 2002.

Andrew Hume. Grep wars: The strategic search initiative. In Peter Collinson, editor, Proceedings of the EUUG Spring 88 Conference, pages 237–245, Buntingford, UK, 1988. European UNIX User Group.

Watts S. Humphrey. Managing the Software Process. Addison-Wesley, Reading, MA, 1989.

Daniel M. Hoffman and David M. Weiss, editors. Software Fundamentals: Collected Papers by David L. Parnas. Addison-Wesley, Boston, MA, 2001.

Michael A. Jackson. Literate programming—processing transactions. Communications of the ACM, 30(12):1000–1010, December 1987.

Stephen C. Johnson. Lint, a C program checker. Computer Science Technical Report 65, Bell Laboratories, Murray Hill, NJ, December 1977.

Stephen C. Johnson. Lint, a C program checker. In Unix Programmer's Manual [Uni79]. Also available online

R. Johnson. Documenting frameworks using patterns. ACM SIGPLAN Notices, 27(10):63–76, October 1992. In John Pugh (ed) Proceedings of the seventh Annual Conference on Object-Oriented Programming Systems, Languages and Applications, OOPSLA '92 Conference, October 18–22, Vancouver, British Columbia, Canada.

Daniel Jackson and Eugene J. Rollins. A new model of program dependencies for reverse engineering. In Proceedings of the second ACM SIGSOFT symposium on Foundations of software engineering, pages 2–10, New York, 1994. ACM, ACM Press.

Brian W. Kernighan. A typesetter-independent TROFF. Computer Science Technical Report 97, Bell Laboratories, Murray Hill, NJ, 1982. Available online at

Brian W. Kernighan. The UNIX system document preparation tools: A retrospective. AT&T Technical Journal, 68(4):5–20, July/August 1989.

Cem Kaner, Jack Falk, and Hung Quoc Nguyen. Testing Computer Software. Wiley, New York, 1999.

Mark F. Komarinski, Jorge Godoy, and David C. Merrill. LDP author guide. Available online (January 2002), December 2001.

Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. Getting started with AspectJ. Communications of the ACM, 44(10):59–65, October 2001.

Donald E. Knuth and Silvio Levy. The CWEB System of Structured Documentation. Addison-Wesley, Reading, MA, 1993.

Donald E. Knuth. METAFONT: The Program. Addison-Wesley, Reading, MA, 1986.

Donald E. Knuth. TeX: The Program. Addison-Wesley, Reading, MA, 1986.

Donald E. Knuth. The TeXbook. Addison-Wesley, Reading, MA, 1989.

Donald E. Knuth. Literate Programming. CSLI Lecture Notes Number 27. Stanford University Center for the Study of Language and Information, Stanford, CA, 1992. Distributed by the University of Chicago Press.

Donald E. Knuth. The Art of Computer Programming, volume 1: Fundamental Algorithms. Addison-Wesley, Reading, MA, third edition, 1997.

Donald E. Knuth. The Art of Computer Programming, volume 3: Sorting and Searching. Addison-Wesley, Reading, MA, second edition, 1998.

Andrew Koenig. C Traps and Pitfalls. Addison-Wesley, Reading, MA, 1988.

David G. Korn. Porting Unix to Windows NT. In Proceedings of the USENIX 1997 Annual Technical Conference, Berkeley, CA, January 1997. Usenix Association.

Brian W. Kernighan and P. J. Plauger. Software Tools. Addison-Wesley, Reading, MA, 1976.

Brian W. Kernighan and P. J. Plauger. The Elements of Programming Style. McGraw-Hill, New York, second edition, 1978.

Brian W. Kernighan and Rob Pike. The UNIX Programming Environment. Prentice-Hall, Englewood Cliffs, NJ, 1984.

Brian W. Kernighan and Rob Pike. The Practice of Programming. Addison-Wesley, Reading, MA, 1999.

Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language. Prentice-Hall, Englewood Cliffs, NJ, second edition, 1988.

Charles W. Krueger. Software reuse. ACM Computing Surveys, 24(2):131–183, June 1992.

Nils Klarlund and Michael I. Schwarzbach. A domain-specific language for regular sets of strings and trees. In Ramming [Ram97], pages 145–156.

Leslie Lamport. LATEX: A Document Preparation System. Addison-Wesley, Reading, MA, second edition, 1994.

Bill Lewis and Daniel J. Berg. Multithreaded Programming with Pthreads. Prentice-Hall, Englewood Cliffs, NJ, 1997.

Kai Li and Paul Hudak. A new list compaction method. Software: Practice & Experience, 16(2):145–163, February 1986.

Karl Lieberherr and Ian Holland. Assuring good style for object-oriented programs. IEEE Software, 6(5):38–48, September 1989.

Don Libes. Obfuscated C and Other Mysteries. John Wiley and Sons, New York, 1993.

Peter Van Der Linden. Expert C Programming. Prentice-Hall, Englewood Cliffs, NJ, 1994.

John Lions. Lions' Commentary on Unix 6th Edition with Source Code. Annabooks, Poway, CA, 1996. 1st (restricted) edition was published as two volumes: Unix Operating System Source Code Level Six and A Commentary on the Unix Operating System, 1977.

Samuel J. Leffler, Marshall Kirk McKusick, Michael J. Karels, and John S. Quarterman. The Design and Implementation of the 4.3BSD Unix Operating System. Addison-Wesley, Reading, MA, 1988.

B. P. Lientz and E. B. Swanson. Software Maintenance Management. Addison-Wesley, Reading, MA, 1980.

Mark Lutz. Programming Python. O'Reilly and Associates, Sebastopol, CA, second edition, 2002.

Tim Lindhorn and Frank Yellin. The Java Virtual Machine Specification. The Java Series. Addison-Wesley, Reading, MA, 1997.

Marshall Kirk McKusick, Keith Bostic, and Michael J. Karels. The Design and Implementation of the 4.4BSD Unix Operating System. Addison-Wesley, Reading, MA, 1996.

L. E. McMahon. SED—a non-interactive text editor. In Unix Programmer's Manual [Uni79]. Also available online

Regine Meunier. The pipes and filters architecture. In Coplien and Schmidt [CS95], chapter 22, pages 427–440.

Bertrand Meyer. Object-oriented Software Construction. Prentice-Hall, Englewood Cliffs, NJ, 1988.

Scott Meyers. Effective C++. Addison-Wesley, Reading, MA, second edition, 1998.

Bertrand Meyer. Object-oriented Software Construction. Prentice Hall, Englewood Cliffs, NJ, second edition, 2000.

Microsoft Corporation. The component object model specification. Technical report, Microsoft Corporation, Redmond, WA, October 1995.

Microsoft Corporation. Microsoft C# Language Specifications. Microsoft Press, Redmond, WA, 2001.

Hafedh Mili, Fatma Mili, and Ali Mili. Reusing software: Issues and research directions. IEEE Transactions on Software Engineering, 21(6):528–562, June 1995.

Richard J. Miara, Joyce A. Musselman, Juan A. Navarro, and Ben Shneiderman. Program indentation and comprehensibility. Communications of the ACM, 26(11):861–867, 1983.

R. C. Martin, D. Riehle, and F. Buschmann. Pattern Languages of Program Design 3. Addison-Wesley, Reading, MA, 1997.

Udi Manber and Sun Wu. GLIMPSE: A tool to search through entire file systems. In Jeff Mogul, editor, USENIX Conference Proceedings, pages 23–32, Berkeley, CA, Winter 1994. Usenix Association.

Bradford Nichols, Dick Buttlar, and Jacqueline Proulx Farrell. Pthreads Programming. O'Reilly and Associates, Sebastopol, CA, 1996.

Geoffrey J. Noer. Cygwin32: A free Win32 porting layer for UNIX applications. In Susan Owicki and Thorsten von Eicken, editors, Proceedings of the 2nd USENIX Windows NT Symposium, Berkeley, CA, August 1998. Usenix Association.

Cameron Newham and Bill Rosenblatt. Learning the Bash Shell. O'Reilly and Associates, Sebastopol, CA, second edition, 1998.

Object Management Group. The common object request broker architecture (CORBA/IIOP), December 2002. Also available online January 2000.

Paul W. Oman and Curtis R. Cook. Typographic style is more than cosmetic. Communications of the ACM, 33(5):506–520, May 1990.

Elliot I. Organick. The Multics System: An Examination of Its Structure. MIT Press, Cambridge, 1972.

J. F. Ossanna. NROFF/TROFF user's manual. In Unix Programmer's Manual [Uni79]. Also available online

Linda M. Ott and Jeffrey J. Thuss. The relationship between slices and module cohesion. In Proceedings of the 11th ACM conference on Software Engineering, pages 198–204, New York, May 1989. ACM, ACM Press.

Andrew Oram and Steve Talbott. Managing Projects with make. O'Reilly and Associates, Sebastopol, CA, second edition, 1991.

David Lorge Parnas. On the criteria to be used for decomposing systems into modules. Communications of the ACM, 15(12):1053–1058, December 1972. Also in [HW01] pp. 145–155.

Charles Petzold. Code: The Hidden Language of Computer Hardware and Software. Microsoft Press, Redmond, WA, 1999.

P. J. Plauger. Programming on Purpose: Essays on Software Design. Prentice-Hall, Englewood Cliffs, NJ, 1993.

David A. Patterson, David A. Peterson, and Nitin Indurkhya. Computer Organization and Design : The Hardware/Software Interface. Morgan Kaufmann, 2nd edition, 1997.

Roger S. Pressman. Software Engineering: A Practitioner's Approach. McGraw-Hill, London, fifth edition, 2000. European Adaptation. Adapted by Darrel Ince.

Rob Pike and Ken Thompson. Hello world. In Dan Geer, editor, USENIX Technical Conference Proceedings, pages 43–50, Berkeley, CA, Winter 1993. Usenix Association.

J. Christopher Ramming, editor. USENIX Conference on Domain-Specific Languages, Berkeley, CA, October 1997. Usenix Association.

Alexander S. Ran. Patterns of events. In Coplien and Schmidt [CS95], pages 547–553.

Eric S. Raymond. The New Hacker's Dictionary. MIT Press, Cambridge, third edition, 1996.

Eric S. Raymond. The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary. O' Reilly and Associates, Sebastopol, CA, 2001.

L. Rising. The Pattern Almanac 2000. Addison-Wesley, Boston, MA, 2000.

Dennis M. Ritchie. The C programming language—reference manual. In Unix Programmer's Manual [Uni79]. Also available online

James Rumbaugh, Ivar Jacobson, and Grady Booch. The Unified Modeling Language Reference Manual. Addison-Wesley, Reading, MA, 1999.

M. J. Rochkind. The source code control system. IEEE Transactions on Software Engineering, SE-1(4):255–265, 1975.

Kay A. Robbins and Steven Robbins. Practical Unix Programming: A Guide to Concurrency, Communication, and Multithreading. Prentice-Hall, Englewood Cliffs, NJ, 1996.

J.E. Robbins and D.F. Redmiles. Cognitive support, UML adherence, and XMI interchange in Argo/UML. Information and Software Technology, 42(2):79–89, 2000.

Henry Rabinowitz and Chaim Schaap. Portable C. Prentice Hall, Englewood Cliffs, NJ, 1990.

Richard Stallman et al. GNU coding standards. Available online (December 2001), October 2001.

Peter H. Salus, editor. Handbook of Programming Languages, volume I: Object-Oriented Programming Languages. Macmillan Technical Publishing, Indianapolis, IN, 1998.

Henry Spencer and Geoff Collyer. #ifdef considered harmful or portability experience with C news. In Rick Adams, editor, USENIX Conference Proceedings, pages 185–198, Berkeley, CA, Summer 1992. USENIX Association.

Douglas C. Schmidt. Gperf: A perfect hash function generator. In Jim Waldo, editor, USENIX C++ Conference, pages 87–100, Berkeley, CA, April 1990. Usenix Association.

Douglas C. Schmidt. Reactor: An object behavioral pattern for concurrent event demultiplexing and event handler dispatching. In Coplien and Schmidt [CS95], pages 529–545.

Randal L. Schwartz, Tom Christiansen, and Larry Wall. Learning Perl. O'Reilly and Associates, Sebastopol, CA, third edition, 2001.

Robert Sedgewick. Algorithms in C Parts 1–4: Fundamentals, Data Structures, Sorting, Searching. Addison-Wesley, Reading, MA, third edition, 1997.

Robert Sedgewick. Algorithms in C Part 5: Graph Algorithms. Addison-Wesley, Boston, MA, third edition, 2001.

Mary Shaw and David Garlan. Formulations and formalisms in software architecture. In Jan van Leeuwen, editor, Computer Science Today: Recent Trends and Developments, pages 307–323. Springer Verlag, 1995. Lecture Notes in Computer Science 1000.

Mary Shaw and David Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, Englewood Cliffs, NJ, 1996.

Diomidis Spinellis and V. Guruprasad. Lightweight languages as software engineering tools. In Ramming [Ram97], pages 67–76.

James M. Stichnoth and Thomas Gross. Code composition as an implementation language for compilers. In Ramming [Ram97], pages 119–132.

Mary Shaw. Patterns for software architectures. In Coplien and Schmidt [CS95], pages 453–462.

J. Siegel. A preview of CORBA 3. IEEE Computer, 32(5):114–116, May 1999.

Charles Simonyi. Meta-programming: a Software Production Method. PhD thesis, Stanford University, CA, December 1976. Online (December 2001).

Charles Simonyi. Hungarian notation. Available online (December 2001), November 1999. Microsoft Developer Network Library.

Alok Sinha. Client-server computing. Communications of the ACM, 35(7):77–98, July 1992.

Eugene H. Spafford. The Internet worm: Crisis and aftermath. Communications of the ACM, 32(6):678–687, June 1989.

Henry Spencer. How to steal code—or—inventing the wheel only once. In USENIX Conference Proceedings, pages 335–345, Berkeley, CA, Winter 1988. USENIX Association.

Henry Spencer. The Ten Commandments for C programmers (annotated edition). ;login:, 18(2):29–31, March slash April 1993.

Diomidis Spinellis. Implementing Haskell: Language implementation as a tool building exercise. Structured Programming (Software Concepts and Tools), 14:37–48, 1993.

Diomidis Spinellis. Explore, excogitate, exploit: Component mining. IEEE Computer, 32(9):114–116, September 1999.

Diomidis Spinellis. Reliable software implementation using domain specific languages. In G. I. Schuëller and P. Kafka, editors, Proceedings ESREL '99 — The Tenth European Conference on Safety and Reliability, pages 627–631, Rotterdam, September 1999. ESRA, VDI, TUM, A. A. Balkema.

Diomidis Spinellis. Outwit: Unix tool-based programming meets the Windows world. In Christopher Small, editor, USENIX 2000 Technical Conference Proceedings, pages 149–158, Berkeley, CA, June 2000. Usenix Association.

Diomidis Spinellis. Notable design patterns for domain specific languages. Journal of Systems and Software, 56(1):91–99, February 2001.

Diomidis Spinellis and Konstantinos Raptis. Component mining: A process and its pattern language. Information and Software Technology, 42(9):609–617, June 2000.

J. H. Saltzer, D. P. Reed, and D. D. Clark. End-to-end arguments in system design. ACM Transactions on Computer Systems, 2(4):277–288, November 1984.

Sriram Srinivasan. Advanced Perl Programming. O'Reilly and Associates, Sebastopol, CA, 1997.

Ravi Sethi and Tom Stone. Programming Languages: Concepts and Constructs. Addison-Wesley, second edition, 1996.

Douglas C. Schmidt, Michael Stal, Hans Rohnert, and Frank Buschmann. Pattern-Oriented Software Architecture, volume 2: Patterns for Concurrent and Networked Objects. John Wiley and Sons, New York, 2000.

Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley, Reading, MA, third edition, 1997.

Sun Microsystems, Inc. RFC 1050: RPC: Remote procedure call protocol specification, April 1988. Obsoleted by RFC1057 [{Sun}88b]. Status: HISTORIC.

Sun Microsystems, Inc. RFC 1057: RPC: Remote procedure call protocol specification: Version 2, June 1988. Obsoletes RFC1050 [{Sun}88a]. Status: INFORMATIONAL.

Sun Microsystems, Inc. Java code conventions. Available online (December 2001), April 1999.

Sun Microsystems, Inc. Java remote method invocation specification. Available online (February 2002), December 1999. Revision 1.7, Java 2 SDK, Standard Edition, v1.3.0.

Norihisa Suzuki. Analysis of pointer ``rotation''. Communications of the ACM, 25(5):330–335, May 1982.

Clemens Szyperski. Component Software: Behind Object-Oriented Programming. Addison-Wesley, Reading, MA, 1998.

Andrew S. Tanenbaum. Operating Systems: Design and Implementation. Prentice-Hall, Englewood Cliffs, NJ, second edition, 1997.

Ted Tenny. Program readability: Procedures versus comments. IEEE Transactions on Software Engineering, 14(9):1271–1279, September 1988.

Walter F. Tichy. Design, implementation, and evaluation of a revision control system,. In Proceedings of the 6th International Conference on Software Engineering. IEEE, September 1982.

Walter F. Tichy. A catalogue of general-purpose design patterns. In 23rd conference on the Technology of Object-Oriented Languages and Systems (TOOLS 23). IEEE Computer Society, 1998.

Edward J. Thomas and Paul W. Oman. A bibliography of programming style. ACM SIGPLAN Notices, 25(2):7–16, February 1990.

Edward R. Tufte. The Visual Display of Quantitative Information. Graphics Press, Cheshire, CT, 1983.

UNIX Programmer's Manual. Volume 2—Supplementary Documents. Bell Telephone Laboratories, Murray Hill, NJ, seventh edition, 1979. Also available online

Gary V. Vaughan, Ben Elliston, Tom Tromey, and Ian Lance Taylor. GNU Autoconf, Automake, and Libtool. New Riders Publishing, Indianapolis, IN, 2000.

John Vlissides. Pattern Hatching—Design Patterns Applied. Addison-Wesley, Reading, MA, 1998.

Stephen R. Walli. OPENNT: UNIX application portability to Windows NT via an alternative environment subsystem. In Ed Lazowska and Michael B. Jones, editors, Proceedings of the USENIX Windows NT Symposium, Berkeley, CA, August 1997. Usenix Association.

Larry Wall, Tom Christiansen, Randal L. Schwartz, and Stephen Potter. Programming Perl. O'Reilly and Associates, Sebastopol, CA, third edition, 2000.

Mark Weiser. Programmers use slices when debugging. Communications of the ACM, 25(7):446–452, July 1982.

W. Eric Wong, Joseph R. Horgan, Swapna S. Gokhale, and Kishor S. Trivedi. Locating program features using execution slices. In Proceedings of the 1999 IEEE Symposium on Application-Specific Systems and Software Engineering & Technology, 1999.

Alan Cameron Wills. Designing component kits and architectures. In Barroca et al. [BHH99].

Christopher J. Van Wyk and Donald C. Lindsay. Literate programming: A file difference program. Communications of the ACM, 32(6):740–755, June 1989.

Norman Walsh and Leonard Muellner, editors. DocBook: The Definitive Guide. O'Reilly and Associates, Sebastopol, CA, 1999.

H. E. Williams, J. Zobel, and S. Heinz. Self-adjusting trees in practice for large text collections. Software: Practice & Experience, 31(10):925–940, August 2001.

Book homepage | Author homepage
Valid XHTML 1.0! Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0 (C) Copyright 2001-2003 D. Spinellis. May be freely uploaded by WWW viewers and similar programs. All other rights reserved.
Last modified: 2003.11.21