Computer programming as an art

  title={Computer programming as an art},
  author={Donald Ervin Knuth},
  journal={Commun. ACM},
  • D. Knuth
  • Published 1 December 1974
  • Art
  • Commun. ACM
When Communications of the ACM began publication in 1959, the members of ACM's Editorial Board made the following remark as they described the purposes of ACM's periodicals [2]: “If computer programming is to become an important part of computer research and development, a transition of programming from an art to a disciplined science must be effected.” Such a goal has been a continually recurring theme during the ensuing years; for example, we read in 1970 of the “first steps toward… 
Know Your Discipline: Teaching the Philosophy of Computer Science
  • M. Tedre
  • Computer Science
    J. Inf. Technol. Educ.
  • 2007
The increased investments in research efforts in computer science have been paralleled by the growth of the number of computing-centered fields, such as computer engineering, scientific computation, electrical engineering, decision support systems, architectural design, and software engineering.
Post's Machine: A Didactic Microworld as an Introduction to Formal Programming
A “microscopic” environment based on Emil Post's theoretical machine is developed as an introduction to formal methods of programming and in the framework of an introductory computer science course.
Beauty and computer programming
46 acm Inroads 2012 March • Vol. 3 • No. 1 ➧2 In 1968, Donald Knuth published the first of a seven volume series of books on computer science, and surprisingly titled it The Art of Computer
Craft tradition in the history of computer programming, 1974-2004
The majority of the debates concerning software history have made use of the term software engineering, generally because they take as a common starting point the North Atlantic Treaty Organisation (NATO) Software Engineering conference of October 1968 that first popularised the term.
Program Text, Programming Style, Programmer Labor
This article suggests that a syntactic feature common to all programming languages used today serves as a register of this logic of automation, leaving traces in code that are legible if one knows where to look.
Creativity + Computer Science
This chapter examines several key aspects of creativity in computer science, beginning with the question of how problems arise in computerscience and the use of analogies in solving key problems in the history of computer science.
The Philosophy of Computer Science
Computing as a Science: A Survey of Competing Viewpoints
  • M. Tedre
  • Computer Science
    Minds and Machines
  • 2011
The article argues that much of the discussion about the scientific nature of computing is misguided due to a deep conceptual uncertainty about science in general as well as computing in particular.
Difficulties teaching Java in CS1 and how we aim to solve them
This panel focuses on CS1 difficulties and aims to address solutions to the 'Java problem'.
In the right order of brush strokes: a sketch of a software philosophy retrospective
A retrospective view on computer science and software philosophy development is introduced and extended comprehension of technical sciences of programming and software engineering within the realm of liberal arts is considered.


ACM Publication Policies and Plans
The establishment of the Communications pays tribute to the fact that the computing field is young and growing rapidly and that much information of a current and immediate nature should be made available to ACM members on a monthly basis.
Structured Programming with go to Statements
For serious students of structured programming, and also for language designers, Knuth's "Structured Programming with go to Statements" is probably the paper to read. It is by far the most complete
Elements of Programming Style
These notes provide guidelines for internal program documentation and style for student programmers, geared mainly for a block structured language such as Pascal or C, most of the points discussed are applicable to any programming language.
Aesthetics and the human factor in programming
The Luncheon Address at the 1972 Spring Joint Computer Conference was given by Professor Andrei P. Ershov, Information Division Head of the Computer Center, Siberian Division, USSR Academy of
ALGOL 60 confidential
In this paper some of the more obscure features of the language are considered and their usefulness is discussed, and ALGOL seems to have become too general.
Minimizing Drum Latency Time
The most practical way discovered for minimizing latency has been to let people do the job manually with a semi-systematic procedure and to use computers for the routine phases and for checking the human output.
Formalization of Properties of Functional Programs
An algorithm is presented for constructing first-order formulas for functional programs, i.e. programs defined by LISP-like conditional recursive expressions.
The Science of ART
Two major advances in the ART laboratory are discussed—intracytoplasmic sperm injection and extended embryo culture before embryo transfer.
EWD316: A Short Introduction to the Art of Prof^ramming
  • The Netherlands,
  • 1971
The Gentle Art Of Mathematics