The primary task of software engineers is the cost-effective development of maintainable and useful software. There are many secondary problems lurking in that definition. One such problem arises from the term "useful": to be useful in the application at hand, software must often be efficient (that is, use little time or space). The problem we will consider in this book is building efficient software systems.
There are a number of levels at which we may confront the problem of efficiency. These are defined in Section 1.2 and include the overall system design, the program's algorithms and data structures, the translation to machine code, and the underlying system software and hardware; many books discuss efficiency. at each of those levels. In this book we will investigate efficiency at a design level that is practiced by many but discussed by few. This level is called "writing efficient code" and can be defined as follows:
The activity of writing efficient code takes as input a high-level language program (which incorporates efficient algorithms and data structures) and produces as output a program in the same high-level language that is suitable for compilation into efficient machine code. The operations undertaken at this level are beneath most work on algorithms and data structures yet are too complex for most current and foreseeable compilers.
Chapters
- Aho, A. V. [1980]. Private communication of A. V. Aho of Bell Telephone Laboratories, Murray Hill, NJ, December 1980.Google Scholar
- Aho. A. V., J. E. Hopcroft, and J. D. Ullman [1974]. The Design and Analysis of Computer Algorithms, Addison-Wesley, Reading, MA.Google Scholar
- Aho, A. V. and J. D. Ullman [1977]. Principles of Compiler Design, Addison-Wesley, Reading, MA.Google Scholar
- Auslander, M. A. and H. R. Strong [1978]. "Systematic recursion removal", Communications of the ACM 21, 2, February 1978, pp. 127--134.Google ScholarDigital Library
- Baase, S. [1978]. Computer Algorithms: Introduction to Design and Analysis, Addison-Wesley, Reading, MA.Google Scholar
- Baskett, F. [1978]. "The best simple code generation techniques for WHILE, FOR and DO loops", SIGPlan Notices 13, 4, April 1978, pp. 31--32.Google ScholarDigital Library
- Beeler, M., R. W. Gosper, and R. Schroeppel [1972]. HAKMEM, Artificial Intelligence Memo No. 239, Massachusetts Institute of Technology, February 1972.Google Scholar
- Bentley, J. L. [1979]. "An introduction to algorithm design", IEEE Computer Magazine 12, 2, February 1979, pp. 66--78.Google ScholarDigital Library
- Bentley, J. L., M. G. Faust, and F. P. Preparata [1982]. "Approximation algorithms for convex hulls", Communications of the ACM 25, 1, January 1982, pp. 64--68.Google ScholarDigital Library
- Bentley, J. L. and J. H. Friedman [1979]. "Data structures for range searching", Computing Surveys 11, 4, December 1979, pp. 397--409.Google ScholarDigital Library
- Bentley, J. L. and J. B. Saxe [1980]. "An analysis of two heuristics for the euclidean travelling salesman problem", Eighteenth Annual Allerton Conference on Communication, Control and Computing, October 1980, pp. 41--49, University of Illinois Coordinated Science Laboratory.Google Scholar
- Bergeron, R. D. and H. R. Bulterman [1975]. "A technique for evaluation of user systems on an IBM S/370", Software---Practice and Experience 5, 1, January-March 1975, pp. 83--92.Google ScholarCross Ref
- Bird, R. S. [1980]. "Tabulation techniques for recursive programs", Computing Surveys 12, 4, December 1980, pp. 403--417.Google ScholarDigital Library
- Boyer, R. S. and J. S. Moore [1977]. "A fast string searching algorithm", Communications of the ACM 20, 10, October 1977, pp. 762--772.Google ScholarDigital Library
- Brailsford, D. F., E. Foxley, K. C. Mander, and D. J. Morgan [1979]. "Run-time profiling of Algol 68-R programs using DIDYMUS and SCAMP", SIGPlan Notices 12, 6, June 1977, pp. 27--35.Google ScholarDigital Library
- Brooks, F. P., Jr. [1975]. The Mythical Man Month: Essays in Software Engineering, Addison-Wesley, Reading, MA.Google Scholar
- Burstall, R. M. and J. Darlington [1977]. "A transformation system for developing recursive programs", Journal of the ACM 24, 1, January 1977, pp. 44--67.Google ScholarDigital Library
- Cattell, R. G. [1981]. Private communication of R. G. Cattell of Xerox Palo Alto Research Center, Palo Alto, CA, May 1981.Google Scholar
- Conway, R. W. and D. Gries [1976]. Primer on Structured Programming Using PL/I, PL/C, and PL/CT, Winthrop, Cambridge, MA.Google Scholar
- Darlington, J. and R. M. Burstall [1976]. "A system which automatically improves programs", Acta Informatica 6, 1, pp. 41--60.Google ScholarDigital Library
- Deutsch, L. P. [1981]. Private communication of L. P. Deutsch of Xerox Palo Alto Research Center, Palo Alto, CA, August 1981.Google Scholar
- Dongarra, J. J. and A. R. Hinds [1979]. "Unrolling loops in FORTRAN", Software---Practice and Experience 9, 3, March 1979, pp. 219--226.Google ScholarCross Ref
- Feign, D. A. [1980]. Programming tricks of last resort for desperados: an investigation into the advantages of assembly language coding, unpublished Ph.D. Thesis, Department of Information and Computer Science, University of California at Irvine.Google Scholar
- Feldman, S. [1981]. Private communication of S. Feldman of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google Scholar
- Finkel, R. A. [1981]. Private communication of R. A. Finkel of the University of Wisconsin, Madison, WI, June 1981.Google Scholar
- Fitch, G. P. [1977]. "Profiling a large program", Software---Practice and Experience 7, 4, July-August 1977, pp. 511--518.Google ScholarCross Ref
- Friedman, J. H., J. L. Bentley, and R. A. Finkel [1977]. "An algorithm for finding best matches in logarithmic expected time", ACM Transactions on Mathematical Software 3, 3, September 1977, pp. 209--226.Google ScholarDigital Library
- Fuller, S. H. and F. Baskett [1975]. "An analysis of drum storage units", Journal of the ACM 22, 1, January 1975, pp. 83--105.Google ScholarDigital Library
- Gardner, M. [1970]. "Mathematical games", Scientific American 223, 4, October 1970, pp. 120--123.Google ScholarCross Ref
- Goodman, S. E. and S. T. Hedetniemi [1977]. Introduction to the Design and Analysis of Algorithms, McGraw-Hill, New York, NY.Google Scholar
- Gosling, J. A. [1981]. Private communication of J. A. Gosling of Carnegie-Mellon University, Pittsburgh, PA, June 1981.Google Scholar
- Gunther, F. J. [1981]. "Programming for speed", Computers and Programming 21, 5, September/October 1981, pp. 65, 68.Google Scholar
- Heindel, L. E. and P. W. Purdom, Jr. [1967]. "The automatic optimization of SLIP routines", SIGSAM Bulletin, Number 8, December 1967, pp. 21--30.Google Scholar
- Horowitz, E. and S. Sahni [1978]. Fundamentals of Computer Algorithms, Computer Science Press, Inc., Rockville, MD.Google Scholar
- Jackson, M. A. [1975]. Principles of Program Design, Academic Press, New York, NY.Google Scholar
- Jalics, P. J. [1977]. "Improving performance the easy way", Datamation 23, 4, April 1977, pp. 135--148.Google Scholar
- Jefferson, D. R. [1981]. Private communication of D. R. Jefferson of the University of Southern California, Los Angeles, CA, November 1981.Google Scholar
- Jensen, K. and N. Wirth [1975]. Pascal User Manual and Report, Second Edition, Springer Verlag, New York, NY.Google Scholar
- Johnson, S. C. [1981]. Private communication of S. C. Johnson of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google Scholar
- Kernighan, B. W. [1981]. Private communication of B. W. Kernighan of Bell Telephone Laboratories, Murray Hill, NJ, February through November, 1981.Google Scholar
- Kernighan, B. W. and P. J. Plauger [1976]. Software Tools, Addison-Wesley, Reading, MA.Google Scholar
- Kernighan, B. W. and P. J. Plauger [1978]. The Elements of Programming Style, Second Edition, McGraw-Hill, New York, NY.Google Scholar
- Knuth, D. E. [1968]. The Art of Computer Programming, volume 1: Fundamental Algorithms, Addison-Wesley, Reading, MA.Google ScholarDigital Library
- Knuth, D. E. [1969]. The Art of Computer Programming, volume 2: Seminumerical Algorithms, Addison-Wesley, Reading, MA.Google ScholarDigital Library
- Knuth, D. E. [1971]. "An empirical study of FORTRAN programs", Software---Practice and Experience 1, 2, April-June 1971, pp. 105--133.Google ScholarCross Ref
- Knuth, D. E. [1973]. The Art of Computer Programming, volume 3: Sorting and Searching, Addison-Wesley, Reading, MA.Google ScholarDigital Library
- Knuth, D. E. [1974]. "Structured programming with goto statements", Computing Surveys 6, 4, December 1974, pp. 261--301.Google ScholarDigital Library
- Kreitzberg, C. S. and B. Shneiderman [1972]. The Elements of FORTRAN Style: Techniques for Effective Programming, Harcourt Brace Jovanovich, New York, NY.Google Scholar
- Kulsrud, H. E., R. Sedgewick, P. Smith, and T. G. Szymanski [1978]. Partition sorting on CRAY-1, SCAMP Working Paper No. 7/78, Institute for Defense Analyses, Princeton, NJ, September 1978.Google Scholar
- Laird, J. E. [1981]. Private communication of J. E. Laird of Carnegie-Mellon University, Pittsburgh, PA, March 1981.Google Scholar
- Lampson, B. W. and R. F. Sproull [1979]. "An open operating system for a single-user machine", Proceedings of the Seventh Symposium on Operating Systems Principles, December 1979, pp. 98--105, ACM.Google ScholarDigital Library
- Leverett, B. [1977]. Performance Evaluation of High-Level Language Systems, Carnegie-Mellon University Computer Science Technical Report, November 1977, 39 pp.Google ScholarCross Ref
- Lewis, H. and C. H. Papadimitriou [1978]. "The efficiency of algorithms", Scientific American 238, 1, January 1978, pp. 96--109.Google ScholarCross Ref
- Lewis, J. [1979]. "Low-level program optimization: Some illustrative cases", BYTE 4, 10, October 1979, pp. 168--172. (Reprinted in Liffick [1979].)Google Scholar
- Liffick, B. W., ed. [1979]. Programming Techniques, volume 4: Bits and Pieces, BYTE Books, McGraw-Hill, New York, NY.Google Scholar
- Loveman, D. B. [1977]. "Program improvement by source-to-source transformation", Journal of the ACM 24, 1, January 1974, pp. 121--145.Google ScholarDigital Library
- Matwin, S. and M. Missala [1976]. "A simple, machine independent tool for obtaining rough measures of Pascal programs", SIGPlan Notices 11, 8, August 1976, pp. 42--45.Google ScholarDigital Library
- McCracken, D. D. [1957]. Digital Computer Programming, John Wiley and Sons, New York, NY.Google Scholar
- McFarland, M. C. [1981]. Mathematical models for formal verification in a design automation system, unpublished Ph.D. Thesis, Department of Electrical Engineering, Carnegie-Mellon University, July 1981.Google Scholar
- McIlroy, M. D. [1981]. Private communication of M. D. McIlroy of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google Scholar
- McKellar, A. C. and E. G. Coffman, Jr. [1969]. "Organizing matrices and matrix operations for paged memory systems", Communications of the ACM 12, 3, March 1969, pp. 153--165.Google ScholarDigital Library
- McNair, T. J. (ed.) [1972]. Hamilton Bailey's Emergency Surgery, Ninth Edition, John Wright and Sons, Ltd., Bristol, Great Britian (distributed in the U.S.A. by The Williams and Wilkins Company, Baltimore, MD).Google Scholar
- Mont-Reynaud, B. [1976]. Removing trivial assignments from programs, Stanford University Computer Science Department Report STAN-CS-76-544, Stanford, California, March 1976.Google Scholar
- Moon, D. A. [1981]. Private communication of D. A. Moon of the Massachusetts Institute of Technology, Cambridge, MA, March 1981.Google Scholar
- Morris, R. [1978]. "Counting large numbers of events in small registers", Communications of the ACM 21, 10, October 1978, pp. 840--842.Google ScholarDigital Library
- Nelson, B. J. [1981]. Remote Procedure Call, Ph.D. Thesis, Carnegie-Mellon University, Computer Science Report CMU-CS-81-119, May 1981.Google ScholarDigital Library
- Neuhold, E. J. and H. W. Lawson, Jr. [1971]. The PL/I Machine: An Introduction to Programming, Addison-Wesley, Reading, MA.Google Scholar
- Newell, A. [1981]. Private communication of A. Newell of Carnegie-Mellon University, Pittsburgh, PA, March 1981.Google Scholar
- Nix, R. [1981]. "Experience with a space efficient way to store a dictionary", Communications of the ACM 24, 5, May 1981, pp. 297--298.Google ScholarDigital Library
- Noyce, W. B. [1978]. "Optimization: A case study", BYTE 3, 4, April 1978, pp. 40--45. (Reprinted in Liffick [1979].)Google Scholar
- Paige, R. [1979]. Expression Continuity and the Formal Differentiation of Algorithms, Courant Computer Science Report Number 15, September 1979.Google Scholar
- Peterson, J. L. [1975]. A Programming Methodology (Preliminary Version), Unpublished technical report, University of Texas at Austin, 13 pp.Google Scholar
- Peterson, J. L. [1979]. "Text compression", BYTE 4, 12, December 1979, pp. 106--118. (Reprinted in Liffick [1979].)Google Scholar
- Peterson, J. L. [1980]. Computer Programs for Spelling Correction: An Experiment in Program Design, Springer-Verlag, New York, NY.Google Scholar
- Peterson, J. L. [1981]. Private communication of J. L. Peterson of the University of Texas, Austin, TX, June 1981.Google Scholar
- Pike, R. [1981]. Private communication of R. Pike of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google Scholar
- Plattner, B. and J. Nievergelt [1981]. "Monitoring program execution: A survey", IEEE Computer Magazine 14, 11, November 1981, pp. 76--93.Google ScholarDigital Library
- Polya, G. [1945]. How To Solve It, Princeton University Press, Princeton, NJ.Google Scholar
- Reddy, D. R. and A. Newell [1977]. "Multiplicative speedup of systems", in Perspectives on Computer Science, A. K. Jones (ed.), pp. 183--198, Academic Press, New York, NY.Google Scholar
- Reghbati, H. K. [1981], "An overview of data compression techniques", IEEE Computer Magazine 14, 4, April 1981, pp. 71--75.Google ScholarDigital Library
- Reid, B. K. [1980]. Scribe: A Document Specification Language and Its Compiler, Ph.D. Thesis, Department of Computer Science, Carnegie-Mellon University, September 1980. (See also Reid and Walker [1980].)Google Scholar
- Reid, B. K. and J. H. Walker [1980]. Scribe User's Manual, Third Edition, published by Unilogic, Ltd., 160 N. Craig Street, Pittsburgh, PA, 15213.Google Scholar
- Reingold, E. M., J. Nievergelt, and N. Deo [1977]. Combinatorial Algorithms: Theory and Practice, Prentice-Hall, Englewood Cliffs, NJ.Google Scholar
- Ritchie, D. M. and K. Thompson [1978]. "The UNIX time-sharing system", Bell System Technical Journal 57, 6, pp. 1905--1930, July-August 1978. (An earlier version is in Communications of the ACM 17, 7, pp. 365--375, July 1974.)Google ScholarCross Ref
- Russell, R. D. [1978]. "The PDP-11: A case study of how not to design condition codes", Proceedings of the Fifth Annual Symposium on Computer Architecture, pp. 190--194, IEEE and ACM.Google Scholar
- Satterthwaite, E. H. [1972]. "Debugging tools for high level languages", Software---Practice and Experience 2, 3, July-September 1972, pp. 197--217.Google ScholarCross Ref
- Sauer, C. H. and K. M. Chandy [1981]. Computer Systems Performance Modeling, Prentice-Hall, Englewood Cliffs, NJ.Google Scholar
- Schaefer, M. [1973]. A Mathematical Theory of Global Program Optimization, Prentice-Hall, Englewood Cliffs, NJ.Google Scholar
- Scheifler, R. W. [1977]. "An analysis of inline substitution for a structured programming language", Communications of the ACM 20, 9, September 1977, pp. 647--654.Google ScholarDigital Library
- Scherlis, W. L. [1980]. Expression Procedures and Program Derivation, Ph.D. Thesis, Stanford Computer Science Report STAN-CS-80-818, Stanford, CA, August 1980.Google Scholar
- Sedgewick, R. [1975]. Quicksort, Ph.D. Thesis, Stanford Computer Science Report STAN-CS-75-492, Stanford, CA, May 1975.Google Scholar
- Sedgewick, R. [1978]. "Implementing Quicksort programs", Communications of the ACM 21, 10, October 1978, pp. 847--857.Google ScholarDigital Library
- Shaw, M. [1979]. A Formal System for Specifying and Verifying Program Performance, Carnegie-Mellon University Computer Science Technical Report CMU-CS-79-129, June 1979. (A preliminary version of the material in this report can be found in Wulf, Shaw, Hilfinger and Flon [1981, Section 6.5].)Google Scholar
- Shaw, M. and W. A. Wulf [1980]. "Toward relaxing assumptions in languages and their implementations", SIGPlan Notices 15, 3, March 1980, pp. 45--61.Google ScholarDigital Library
- Sites, R. L. [1978]. "Programming tools: Statement counts and procedure timings", SIGPlan Notices 13, 12, December 1978, pp. 98--101.Google ScholarDigital Library
- Smith, C. U. [1978]. "Methods for improving the performance of applications programs", Computer Measurement Group Transactions 22, December 1978.Google Scholar
- Smith, C. U. [1980]. "Consider the performance of large software systems before implementations", Proceedings of the Computer Measurement Group 11, Boston, MA, December 1980.Google Scholar
- Smith, C. U. [1981]. "Increasing information systems productivity by software performance engineering", Duke University Computer Science Department Technical Report CS-1981-3, May 1981.Google Scholar
- Sproull, R. F. [1981a]. "Using program transformations to derive line-drawing algorithms", Carnegie-Mellon University Computer Science Technical Report CMU-CS-81-117, April 1981.Google Scholar
- Sproull R. F. [1981b]. Private communication of R. F. Sproull of Carnegie-mellon university, May 1981.Google Scholar
- Stanat, D. F. [1981]. Private communication of D. F. Stanat of the University of North Carolina, Chapel Hill, NC, November 1981.Google Scholar
- Standish, T. A. [1980]. Data Structure Techniques, Addison-Wesley, Reading, MA.Google Scholar
- Standish, T. A., D. C. Harriman, D. F. Kibler, and J. M. Neighbors [1976]. The Irvine Program Transformation Catalog, Technical Report, Department of Information and Computer Science, University of California at Irvine.Google Scholar
- Stankovich, J. A. [1979]. Structured Systems and Their Performance Improvement Through Vertical Migration, Technical Report No. CS-41, Department of Computer Science, Brown University, May 1979.Google Scholar
- Steele, G. L., Jr. [1977a]. "Debunking the 'expensive procedure call' myth", Proceedings of the ACM National Conference '77, October 1977, pp. 153--162.Google Scholar
- Steele, G. L., Jr. [1977b]. "Arithmetic shifting considered harmful", SIGPlan Notices 12, 11, November 1977, pp. 61--69.Google ScholarDigital Library
- Steele, G. L., Jr. [1981]. Private communication of G. L. Steele Jr. of Carnegie-Mellon University, Pittsburgh, PA, April 1981.Google Scholar
- Van wyk, C. J. [1981]. Private communications of C. J. Van Wyk of Bell Telephone Laboratories, Murray Hill, NJ, December 1980 through July 1981.Google Scholar
- Vyssotsky, V. A. [1976]. What I'd Like Computer Science To Tell Me, unpublished internal memorandum, Bell Telephone Laboratories, Murray Hill, NJ, May 18, 1976, 12 pp.Google Scholar
- Vyssotsky, V. A. [1981]. Private communication of V. A. Vyssotsky of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google Scholar
- Waite, W. M. [1974]. "Code generation", in Compiler Construction: An Advanced Course, F. L. Bauer and J. Erckel (eds.), pp. 549--602, Springer-Verlag, New York, NY.Google Scholar
- Waldbaum, G. [1978]. Tuning Computer Users' Programs, IBM Computer Science Research Report RJ-2409, IBM Research Laboratory, San Jose, CA, December 4, 1978, 37 pp.Google Scholar
- Weinberg, G. M. [1971]. The Psychology of Computer Programming, Van Nostrand Reinhold Company, New York, NY.Google Scholar
- Weinberger, P. J. [1981]. Private communication of P. J. Weinberger of Bell Telephone Laboratories, Murray Hill, NJ, July 1981.Google Scholar
- Wichman, B. A. [1976]. "Ackermann's function: A study in the efficiency of calling procedures", BIT 16, 1, pp. 103--110.Google ScholarCross Ref
- Wulf, W. A. [1981]. Private communication of W. A. Wulf of Carnegie-Mellon University, Pittsburgh, PA, April 1981.Google Scholar
- Wulf, W. A., R. K. Johnsson, C. B. Weinstock, S. O. Hobbs, and C. M. Geschke [1975]. Design of an Optimizing Compiler, American Elsevier Publishing Company, Inc., New York, NY.Google Scholar
- Wulf, W. A., M. Shaw, P. N. Hilfinger, and L. Flon [1981]. Fundamental Structures of Computer Science, Addison-Wesley, Reading, MA.Google Scholar
Cited By
- Calderón A, Carretero J, García-Carballeira F, Fernandez J, Higuero D and Bergua B Improving MPI applications with a new MPI_Info and the use of the memoization Proceedings of the 20th European MPI Users' Group Meeting, (7-12)
- Stewart G, Beringer L and Appel A Verified heap theorem prover by paramodulation Proceedings of the 17th ACM SIGPLAN international conference on Functional programming, (3-14)
- Stewart G, Beringer L and Appel A (2012). Verified heap theorem prover by paramodulation, ACM SIGPLAN Notices, 47:9, (3-14), Online publication date: 15-Oct-2012.
- Azevedo R, Neto C, Teixeira M, Santos R and Gomes T Textual authoring of interactive digital TV applications Proceedings of the 9th European Conference on Interactive TV and Video, (235-244)
- Weber B, Reichert M, Mendling J and Reijers H (2011). Survey paper, Computers in Industry, 62:5, (467-486), Online publication date: 1-Jun-2011.
- Smith C Introduction to software performance engineering Proceedings of the 7th international conference on Formal methods for performance evaluation, (395-428)
- Smits B Efficiency issues for ray tracing ACM SIGGRAPH 2005 Courses, (6-es)
- Manolopoulos Y (2002). Binomial coefficient computation, ACM SIGCSE Bulletin, 34:4, (65-67), Online publication date: 1-Dec-2002.
- Lee C (1999). Partial Evaluation of the Euclidean Algorithm, Revisited, Higher-Order and Symbolic Computation, 12:2, (203-212), Online publication date: 1-Sep-1999.
- Ball T (2019). The concept of dynamic analysis, ACM SIGSOFT Software Engineering Notes, 24:6, (216-234), Online publication date: 1-Nov-1999.
- Ball T The concept of dynamic analysis Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering, (216-234)
- Sazeides Y and Smith J Modeling program predictability Proceedings of the 25th annual international symposium on Computer architecture, (73-84)
- Sazeides Y and Smith J (1998). Modeling program predictability, ACM SIGARCH Computer Architecture News, 26:3, (73-84), Online publication date: 1-Jun-1998.
- Toledo S Performance Prediction with Benchmaps Proceedings of the 10th International Parallel Processing Symposium, (479-485)
- Frakes W and Fox C (1996). Quality Improvement Using A Software Reuse Failure Modes Model, IEEE Transactions on Software Engineering, 22:4, (274-279), Online publication date: 1-Apr-1996.
- Weis R and Gersting J A course on professionalism in the undergraduate CS curriculum Proceedings of the twenty-fourth SIGCSE technical symposium on Computer science education, (170-174)
- Weis R and Gersting J (1993). A course on professionalism in the undergraduate CS curriculum, ACM SIGCSE Bulletin, 25:1, (170-174), Online publication date: 1-Mar-1993.
- Perry D and Wolf A (1992). Foundations for the study of software architecture, ACM SIGSOFT Software Engineering Notes, 17:4, (40-52), Online publication date: 1-Oct-1992.
- Chatterjee S, Blelloch G and Fisher A Size and access inference for data-parallel programs Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation, (130-144)
- Chatterjee S, Blelloch G and Fisher A (2019). Size and access inference for data-parallel programs, ACM SIGPLAN Notices, 26:6, (130-144), Online publication date: 1-Jun-1991.
- Fraser C (1991). A retargetable compiler for ANSI C, ACM SIGPLAN Notices, 26:10, (29-43), Online publication date: 1-Oct-1991.
- Smith D (1991). Algorithm 693: a FORTRAN package for floating-point multiple-precision arithmetic, ACM Transactions on Mathematical Software (TOMS), 17:2, (273-283), Online publication date: 1-Jun-1991.
- Smith C (2019). Applying Synthesis Principles to Create Responsive Software Systems, IEEE Transactions on Software Engineering, 14:10, (1394-1408), Online publication date: 1-Oct-1988.
- Zahn C A phased programming paradigm Proceedings of the nineteenth SIGCSE technical symposium on Computer science education, (9-12)
- Zahn C (1988). A phased programming paradigm, ACM SIGCSE Bulletin, 20:1, (9-12), Online publication date: 1-Feb-1988.
- Perlman G and Sherwin L (1988). Designing menu display format to match input device format, ACM SIGCHI Bulletin, 20:2, (78-82), Online publication date: 1-Oct-1988.
- Perlman G (1986). Coding quality and tools in programming methods, ACM SIGSOFT Software Engineering Notes, 11:3, (44-50), Online publication date: 1-Jul-1986.
- Sanguinetti J (1984). Program optimization for a pipelined machine a case study, ACM SIGMETRICS Performance Evaluation Review, 12:3, (88-95), Online publication date: 1-Aug-1984.
- Sanguinetti J Program optimization for a pipelined machine a case study Proceedings of the 1984 ACM SIGMETRICS conference on Measurement and modeling of computer systems, (88-95)
- Brownsmith J and Oliver L (1984). Optimizing loops in programs compiled with the IBM PL/I optimizing compiler, ACM SIGPLAN Notices, 19:8, (77-84), Online publication date: 1-Aug-1984.
Index Terms
- Writing efficient programs