skip to main content
article

A course in effective programming

Published:01 January 1975Publication History
Skip Abstract Section

Abstract

This paper describes a graduate Computer Science course in which all aspects of the programming process are examined.

The course has been taught for the past three years, and represents an attempt to pull together various results of researchers working on this rather undeveloped but important area. Unfortunately space does not permit the inclusion here of many details or examples. Rather, the emphasis is on the form of the course and how the reference material is used in pursuing the course objectives. (The topic of program measurement is expanded on somewhat, being a topic of interest to the author and one about which little has been said elsewhere.)

References

  1. 1 Aho, A.V., Hopcroft, J.E., and Ullman, J.D. 1974. The Design and Analysis of Computer Algorithms. Addison-Wesley Publ. Co., Reading, Mass.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2 Ashby, G., Salmonson, L., and Heilman, R. 1973. Design of an Interactive Debugger for FORTRAN: MANTIS. Software - Practice and Experience, V. 3, N. 1.]]Google ScholarGoogle Scholar
  3. 3 Aygun, B.O. 1973. Dynamic Analysis of Execution: Possibilities, Techniques and Problems. Ph.D. Dissertation. Department of Computer Science, Carnegie-Mellon University, Pittsburgh, Pa.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 4 Baker, F.T. 1972. System Quality through Structured Programming. AFIPS Fall Joint Computer Conference Proceedings.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 5 Bauer, H., Becker, S., and Graham, S. 1968. ALGOL W Implementation. Report CS 98. Computer Science Department, Stanford University, Palo Alto, Ca.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 6 Beizer, B. 1970. Analytical Techniques for the Statistical Evaluation of Program Running Time. AFIPS Fall Joint Computer Conference.]]Google ScholarGoogle Scholar
  7. 7 Benson, J.P. 1973. Structured Programming Techniques. IEEE Symposium on Computer Software Reliability.]]Google ScholarGoogle Scholar
  8. 8 Bohm, C. and Jacopini, G. 1966. Flow Diagrams, Turing Machines and Languages With Only Two Formation Rules. Communications of the ACM, V. 9, N. 5 (May).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9 Brown, A.R. and Sampson, W.A. 1973. Program Debugging. American Elsevier Publ. Co. Inc., New York, N. Y.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10 Brown, J.R., DeSalvio, A.J., Heine, D.E., Purdy, J.G. 1973. Automated Software Quality Assurance. In Hetzel, W. C., ed. Program Test Methods. Prentice-Hall, Inc., Englewood Cliffs, N. J.]]Google ScholarGoogle Scholar
  11. 11 Bulow, K. 1974. Programming in Book Format. Datamation, V. 20, N. 10 (October).]]Google ScholarGoogle Scholar
  12. 12 DEC 1973a. DECsystem-10 COBOL Language Manual. Second Edition. Digital Equipment Corporation, Maynard, Mass.]]Google ScholarGoogle Scholar
  13. 13 DEC 1973b. DECsystem-10 FORTRAN-10 Language Manual. Second Edition. Digital Equipment Corporation, Maynard, Mass.]]Google ScholarGoogle Scholar
  14. 14 DEC 1973c. Beginning User's Guide to SPY. Digital Equipment Corporation, Maynard, Mass.]]Google ScholarGoogle Scholar
  15. 15 Dahl O.J., Dijkstra, E.W., and Hoare, C.A.R. 1972. Structured Programming. Academic Press, New York, N. Y.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 16 Darden, S.C. and Heller, S.B. 1972. Compiler Development by Iterative Optimization. In Pollack, B. W., ed. Compiler Techniques. Auerbach Publishers, Princeton, New Jersey.]]Google ScholarGoogle Scholar
  17. 17 Davis, T.M. and Browne, J.C. 1973. A Flowchart Based System for Program Verification. Technical Report. Information Research Associates, Austin, Texas.]]Google ScholarGoogle Scholar
  18. 18 Dean, J.L. 1971. Optimization Techniques for Fortran 4 (G and H) Programs Written for the IBM 360 under OS. NASA-TM-X-70477. NASA, Goddard Space Flight Center, Greenbelt, Md.]]Google ScholarGoogle Scholar
  19. 19 Dijkstra, E.W. 1968. Go To Statement Considered Harmful. Communications of the ACM, V. 11, N. 3 (March) and N. 8 (August).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 20 Dijkstra, E.W. 1972. Notes on Structured Programming. In Structured Programming. Academic Press, Inc., New York, N. Y.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. 21 Elspas, B., Levitt, K.N., Waldinger, R.J., and Waksman, A. 1972. An Assessment of Techniques for Proving Program Correctness. ACM Computing Surveys, V. 4, N. 2 (June).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 22 Estrin, G., Hopkins, D., Coggan, B., and Crocker, S.D. 1967. SNUPER - a Computer Instrumentation Automaton. AFIPS Spring Joint Computer Conference.]]Google ScholarGoogle Scholar
  23. 23 Freeman, P. 1972. Functional Programming, Testing and Machine Aids. Technical Report. Department of Information and Computer Science, University of California, Irvine, California.]]Google ScholarGoogle Scholar
  24. 24 Gaines, R.S. 1969. The Debugging of Computer Programs. Communications Research Division Working Paper, Institute for Defense Analysis, Princeton, New Jersey.]]Google ScholarGoogle Scholar
  25. 25 Graham, R.M., Clancy, G.J., and DeVaney, D.B. 1973. A Software Design and Evaluation System. Communications of the ACM, V. 16, N. 2 (February).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 26 Henderson, P. and Snowdon, R. 1972. An Experiment in Structured Programming. BIT V. 12, N. 1.]]Google ScholarGoogle Scholar
  27. 27 Hetzel, W.C. 1973. Program Test Methods. Prentice-Hall, Englewood Cliffs, New Jersey.]]Google ScholarGoogle Scholar
  28. 28 IBM 1971. Chief Programmer Teams - Principles and Procedures. Technical Report FSC 71-5108. IBM Federal Systems Division, Gaithersburg, Md.]]Google ScholarGoogle Scholar
  29. 29 Ingalls, D. 1972. The Execution Time Profile as a Programming Tool. In Rustin, R., ed. Design and Optimization of Compilers. Prentice-Hall, Inc., Englewood Cliffs, N. J.]]Google ScholarGoogle Scholar
  30. 30 Kernighan, B.W., and Plauger, P.J. 1974. The Elements of Programming Style. McGraw-Hill Book Co., New York, N. Y.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. 31 King, J. 1971. A Verifying Compiler. In Rustin, R., ed. Debugging Techniques in Large Systems. Prentice-Hall, Inc., Englewood Cliffs, N. J.]]Google ScholarGoogle Scholar
  32. 32 Knuth, D.E. 1968. The Art of Computer Programming, Volume 1: Fundamental Algorithms. Addison-Wesley Publ. Co., Reading, Mass.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. 33 Knuth, D.E. 1969. The Art of Computer Programming, Volume 2: Semi-numerical Algorithms. Addison-Wesley Publ. Co., Reading, Mass.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. 34 Knuth, D.E. 1971. An Empirical Study of FORTRAN Programs. Software - Practice and Experience, V. 1, N. 2.]]Google ScholarGoogle Scholar
  35. 35 Knuth, D.E. 1973. The Art of Computer Programming, Volume 3: Sorting and Searching. Addison-Wesley Publ. Co., Reading, Mass.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. 36 Kreitzberg, C.B. and Shneiderman, B. 1972. The Elements of FORTRAN Style. Harcourt Brace Jovanovich, Inc., New York, N. Y.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. 37 Lang, B. 1972. A New Technique for Data Monitoring. SIGPLAN Notices, V. 7, N. 6 (June).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. 38 Lucas, H.C. Jr. 1971. Performance Evaluation and Monitoring. ACM Computing Surveys, V. 3, N. 3.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. 39 Mann, G.A. 1973. A Survey of Debug Systems. Honeywell Computer Journal, V. 7, N. 3.]]Google ScholarGoogle Scholar
  40. 40 Maynard, J. 1972. Modular Programming. Auerbach Publishers, Princeton, New Jersey.]]Google ScholarGoogle Scholar
  41. 41 Mills, H. 1971. Top Down Programming in Large Systems. In Rustin, R., ed. Debugging Techniques in Large Systems. Prentice-Hall, Englewood Cliffs, New Jersey.]]Google ScholarGoogle Scholar
  42. 42 Nading, J.L. 1974. The Instrumenting Compiler as a Tool for High-level Program Monitoring. M.S. Thesis. Computer Science Department, The University of Arizona, Tucson, Arizona.]]Google ScholarGoogle Scholar
  43. 43 Nassi, I. and Shneiderman, B. 1973. Flowchart Techniques for Structured Programming. SIGPLAN Notices, V. 8, N. 8 (August).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. 44 Nemeth, A.G. and Rovner, P.D. 1971. User Program Measurement in a Time-Shared Environment. Communications of the ACM, V. 14, N. 10 (October).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. 45 Parnas, D.L. 1971. Information Distribution Aspects of Design Methodology. IFIP Congress Proceedings.]]Google ScholarGoogle Scholar
  46. 46 Parnas, D.L. 1972a. A Technique for Software Module Specification with Examples. Communications of the ACM, V. 15, N. 5.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. 47 Parnas, D.L. 1972b. On the Criteria to be Used in Decomposing Systems Into Modules. Communications of the ACM, V. 15, N. 12.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. 48 Peterson, W.W., Kasami, T., and Tokura, N. 1973. On the Capabilities of While, Repeat, and Exit Statements. Communications of the ACM, V. 16, N. 8 (August).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. 49 Rain, M. 1973. Two Unusual Methods for Debugging System Software. Software - Practice and Experience, V. 3, N. 1.]]Google ScholarGoogle Scholar
  50. 50 Ripley, G.D., and Griswold. R.E. 1974. The Measurement of SNOBOL4 Programs. Technical Report S4D44. Computer Science Department, The University of Arizona, Tucson, Arizona.]]Google ScholarGoogle Scholar
  51. 51 Rustin, R. (ed.) 1971. Debugging Techniques in Large Systems. Prentice-Hall, Englewood Cliffs, New Jersey.]]Google ScholarGoogle Scholar
  52. 52 Scherr, A.L. 1973. Developing and Testing a Large Programming System, OS/360 Time Sharing Option. In Hetzel, W. C., ed. Program Test Methods. Prentice-Hall, Inc., Englewood Cliffs, N. J.]]Google ScholarGoogle Scholar
  53. 53 Snowdon, R.A. 1972. An Interactive System for the Preparation and Validation of Structured Programs. SIGPLAN Notices, V. 7, N. 3 (March).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. 54 Van Tassel, D. 1974. Program Style, Design, Efficiency, Debugging, and Testing. Prentice-Hall, Englewood Cliffs, New Jersey.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. 55 Waite, W.M. 1973. A Sampling Monitor for Application Programs. Software - Practice and Experience, V. 3, N. 1.]]Google ScholarGoogle Scholar
  56. 56 Weinberg, G.M. 1971. The Psychology of Computer Programming. Van Nostrand Reinhold, New York, N. Y.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. 57 Wetterlind, P.J. 1974. Techniques for Effective Programming: An Analysis. Student Project Report. Computer Science Department, The University of Arizona, Tucson, Arizona.]]Google ScholarGoogle Scholar
  58. 58 Whitman, B. 1971. (Participant) Symposium: Computer System Performances. IFIP Congress Proceedings. Pg. 1604.]]Google ScholarGoogle Scholar
  59. 59 Wichmann, B.A. 1972. Estimating the Execution Speed of an ALGOL program. SIGPLAN Notices, V. 7, N. 8 (August).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. 60 Wirth, N. 1971. Program Development by Stepwise Refinement. Communications of the ACM, V. 14, N. 4 (April).]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. 61 Wirth, N. 1973. Systematic Programming: An Introduction. Prentice-Hall, Englewood Cliffs, New Jersey.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. 62 Wulf, W.A. 1971. Programming Without the GOTO. IFIP Congress Proceedings.]]Google ScholarGoogle Scholar
  63. 63 Youngberg, E.P. 1973. A Software Testing Control System. In Hetzel, W. C., ed. Program Test Methods. Prentice-Hall, Inc., Englewood Cliffs, N. J.]]Google ScholarGoogle Scholar
  64. 64 Yourdon, E. 1975 (in press). Advanced Programming Techniques, Volume I: Program Structure and Design. Prentice-Hall, Inc., Englewood Cliffs, N. J.]]Google ScholarGoogle Scholar

Index Terms

  1. A course in effective programming

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGCSE Bulletin
        ACM SIGCSE Bulletin  Volume 7, Issue 1
        Proceedings of the 5th SIGCSE symposium on Computer science education
        February 1975
        209 pages
        ISSN:0097-8418
        DOI:10.1145/953064
        Issue’s Table of Contents
        • cover image ACM Conferences
          SIGCSE '75: Proceedings of the fifth SIGCSE technical symposium on Computer science education
          January 1975
          221 pages
          ISBN:9781450373982
          DOI:10.1145/800284

        Copyright © 1975 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 1 January 1975

        Check for updates

        Qualifiers

        • article