One Mails View Ef Cemp Ter Sclenee: 1968 A C M Turing Lecture
One Mails View Ef Cemp Ter Sclenee: 1968 A C M Turing Lecture
R. 3V. HAMMING
ABST]RACT. A number of observations and comments are directed toward suggesting that more
than the usual engineering flavor be given to computer science. The engineering aspect is
important because most present di~culties in this field do not involve the theoretical question
of whether certain things can be done, but rather the practical question of how can they be
accomplished well and simply°
The teaching of computer science could be made more effective by various alterations~ for
example, the inclusion of a laboratory course in programming~ the requirement for a strong
minor in something other thaa mathematics~ and more practical coding and less abstract
theory, as well as more seriousness and less game playing.
xEY w o t m s AND PI~'aAS~S: c o m p u t e r seience~ c o m p u t e r e n g i n e e r i n g , p r a c t i c a l p r o g r a m m i n g ~
mathematical game-playing, computer technician, computer professional, true-to-life pro-
g r a m m i n g , computer science curriculum, software, basic research, undirected research, pro-
grammers' ethical standards, programmers' social responsibility
c~ CATEa0a~S: 1.3, 1.50
Let me begin with a few personal words. When one is notified t h a t he has been
elected the A C M T u r i n g lecturer for the year, he is a t first surprised--especially
is the nonacademic person surprised b y an A C M award. After a little while the
surprise is replaced b y a .feeling of pleasure. Still later comes a feeling of " W h y m e ? "
W i t h all t h a t has been done and is being done in computing, w h y single out m e a n d
m y work? Welt, I suppose t h a t it has ~o h a p p e n to someone each year, and this
time t a m the lucky person. Anyway, let m e t h a n k you for the honor you h a v e given
to m e and b y inference to the Bell Telephone Laboratories where I work and which
has m a d e possible so m u c h of w h a t I h a v e done.
T h e topic of m y Turing lecture, "One M a n ' s View of C o m p u t e r Science," was
picked because " W h a t is c o m p u t e r science?" is argued endlessly a m o n g people
in the field. F u r t h e r m o r e , as the excellent Curriculum 68 report * r e m a r k s in its
introduction, " T h e C o m m i t t e e believes strongly t h a t a continuing dialogue on the
process and goals of education in computer science will be vital in the yeaIs to c o m e . "
Lastly, it is wrong t o think of Turing, for w h o m these lectures were named, as b d n g
exclusively interested in Turing machines; the f a c t is t h a t h e c o n t r i b u t e d to m a n y
aspects of the field and would p r o b a b l y have been v e s t interested in the t @ e ,
though perhaps not in w h a t I say.
T h e question " W h a t is c o m p u t e r seimme?'" actually occurs in m a n y different
1 A Report of the ACM Curriculum CommRtee on Computer Science; Comm. ACM tl, 3 (Mar;
1968), 151-197.
Journal of the Association for Comou~ing i~IIachluery, Vof llL No. 1, January 1989, ~p. ~_~-112_
4 R, W, ItAMMING
forms, among which are: What is e.omputer science currehtly? What can it develop
into? What should it develop into? What still it develop inIo?
A precise answer cannot be given to any of th<e, Ma~y years ago an eminent
mathematician wrote a o( ok lI:7mg is Mat/~e,mcdz%a and m>where did he try to de-
fine mathematics, :rather he simply wrote nmthematics. \\ hile you will now and
then find some aspect of nmthematics defiaed rather sharply the only texturally
agreed upon definition of mathematics is "),([athenmtics is what math.enu~ticiai,s
do", which is follo~ ed by ")¢[athematicians are people who do nmt]~enmtic,s2' What
is true about defining mathematics is also true about m a n y other fields: there is
often no dear, sharp definitiou of the field.
In the face of this difficulty mm~y people, including myself" at ti, ms, fed that
we should ignore the discussion and get on wRh doir W it. But as George Forsythe
points out so welP in a recent article, it dora matter what people in Y~ashi~gRm,
D. C. think computer science is. Accordi~g to him, they tend to feel that it is a
part of applied mathematics and therefore turn to the nmthematieia>.s for advk:e
in the granting of funds. And it is not greatly different elsewhere; in both htdustry
and the unR'ersities you can often still see traces of where computing first started,
whether in electrical engineering, physics, mathemaUcs, or even buiness. ]3vi-
dently the pietmee which people have of a subject can significantly affect its subse-
quent development. Therefore, although we cannot hope to settle the question
definitively, we need frequently to examine and to air our views on what oua'. sub-
jeer is and should become°
In ninny respects, for me it would be more satisfactory to give a talk on so:me
small, technical point in computer science--it would certainly be easier. But that
is exactly one of the things that I wish to stress--the danger of getting lost in the
details of the field, especially in the conning days when there will be a veritable
blizzard of papers appearing each month in the ]otn'nals. We must give a good deaJ
of attention to a broad training in the field---this in the face of the increasing neces-
sity t,o specialize more and more hig~fly in order to get a thesis problem, publish
many papers, etc. We need to prepare our students for the year 2000 whm:~ many
of them rill be at the peak of their career. It seems to me to be more true in com-
puter science than in many other fields that "specialization leads to triviality."
I am sure you have all heard that our scientific knowledge has been doubling
every 16 to t7 yeses° I strongly suspect that the rate is now rauch higher in com-
puter science; certahfly it was higher during the past 15 years, tn all of our i
we must take this growth of information into account and recognize that in a veto' [
foal sense face amo,mt of knowledge. >. many respects the
classical concept of a scholar who knows at least 90 percent of the relevant knowl-
edge in his field is a dying concept. Narrower and narrower specialization is 'a~og;:)
the answer, since in part the difficulty is in the rapid growth of the interrelation-
'~
ships between field~. It is my private opinion that we need to put relatively more )
stress on quality and ICss £n quantity and that t.[he careful, erRieal, considered :I
sureey aa.tieles ~dll often be more significant in advancing the field than new,t,, non:::
essential material.
We live in a world of shades of grey, but in order to argue, indeed even to
it is often necessary to diehotomL~e and say "black" or " w h R e ' . Of course in
FOBSYT~{~, O. lg~ What te do tii1 the computer seienUst eomem Area. Mafia. Mon~£i
(May 1968), 454=46L
Jour~)al of ~he A~,oeiu~i<)*lfor Compu'$i~g M,~ehinery, VoL lfg No~ ~11,Ja'auary ~9{g~
One Man's View of Computer JScience 5
emphasis to laboratory work than does Curricuhlm 68, and in particular t would
require every computer science major, undergraduate or graduate, to take i~, labors..
tory course in which he designs, builds, debugs, and documents a reasonably sized
program, perhaps a simulator or a simplified compiler for a partbular machine.
The results would be judged on style of programming, pmtcticat efficiency, f~'eedom
from bugs, ~tnd documentation. If any of these were too poor, I would not let
the candidate pass. tn judging his ~vx)rk we need to distinguish clearly betwee~l
superficial cleverness and genuine understanding. Cleverness was essential in the
past; it. is no longer sufficient.
I would also require a strong minor in some field otk.(~" than computer science and
mathematics. WRhout real experience in using the computer to get useful results
the computer science major is apt to know all about the marvelous tool except how
to use it. Such a person is a mere technician, skilled in manipulating the tool but
wRh little sense of how and when to use it ff)r its basic pmT)oses. I believe we should
avoid hrrning out, more idiot savants---we have more than enough "computniks"
now to last us a long time. What we need are professionals!
The Curriculum 68 recognized this need for' "true-to-life" programm.ing by say-
ing, "This aright be arranged through summer employment, a cooperative work-
study program, pro't-time employment in computer centers, special projects courses,
or some other appropriate means." I am suggesting that the appropriate means
is a stifflaboratory course under your o~<n control, and that the above suggestions
of the Committee are rarely going to be effective or satisfactory,
Perhaps the most vexing question in planning a computer science curriculum is
determining the mathematics courses to require ef those who major in the field.
Many of us came to computing with a strong background in mathematics and tend
automatically i:o feel that a lot of mathematics should be required of everyone.
JAt -too often the teacher tries to make -the student into a copy of himself. But it is
easy to observe that m. the past many highly rated software people were ignorant
of most of formal mathematics, though many of them seemed to have a natural
talent for mathematics (as it is, rather than as it is so oRen taught).
In the past I have argued that to require a strong mathematical content for com-
puter science would exclude many of the best people in the f%ld. However, with
the coming importance of scheduling arnd the allocating of the resources of the
computer, t have had to reconsider my opinion. While there is some evidence that
part of this will be incorporated into the hardware, I find it difficult 1:o believe that
there will not be for a long time (meaning at least five years) a lot of scheduling
and ailoeating of resources in software. If tlfi.s is to be the pattern, then we need
to consider training in this field. If we do not ~.ve such training, then the computer
science major will find that he is a technician who is merely programming wh~t
others "tell ~ m to do. ]: u~herm.ore, the k:mds of program~mng that were regarded
in the past as being great often depended on cleverness and trickery and
little or no formal mathematics. This phase seems to be passing, and I am forced e
to believe that,, in the future a good mathematical background will be needed if[i
our graduates are to do significant work.
Histow shays that relatively few people can learn much new m~
their t:hirties, le4t alone later in tife; so t h a t if mathematics is going t o
cant rele in the future, w e ne.ed to ~ v e the students mathematical
the]/are in school; We can, of eoursR evade t/he issue for the moment
One Man's View of Computer Science 7
two parallel paths, one with and one without mathematics, wRh the warning that
the nonmathematicat ~ath leads to a dead end so far as further university training
is concerned (assuming we believe that mathematics is essential for advanced
training h~ computer science).
Once we gacant the need for a lot of mathematics, then we face the even_ more
difficult task of saying specifically which courses. In spite of the rmmerical analysts'
claims for the fundamental importance of theh' field, a surprising amount of com-
puter science activRy requires eom.paratively little of it. But ][ believe we can de~
fend the requirement that every computer science major take at least one course
in. the field. Our difficulty lies, perhaps, in the fact that the present arrangement of
formal mathematics courses is not suited to our needs as we presently see them. We
seem to need some abstract algebra; some queuing theory; a lot of statistics, in-
cluding the desig~, of experiments; a moderate amount of probability, with perhaps
some elements of Markov chains; parts of information and coding theory; and a
little on bandwidth and signalling rates, some graph theory, etc., but we also know
that the field is rapidly changing and that tomorrow we may need complex variables,
topology, and ether topics.
As t said, the planning of the mathematics courses is probably the most vexing
part of the curriculum. After a lot of thinking on the matter, I currently feel that
if our graduates are to make significant contributions and not be reduced to the
level of technicians running a tool as they are told by others, then it is better to
give them too much mathematics rather than too little. I realize all too welt that
this wilt exclude many people who in the past have made contributions, and I am
not happy about m y conc]usion, but there it is. In the future, success in the field
of computer science is apt to require a command of mathematics.
One of the complaints regularly made of computer science curriculums is that
they seem to almost totally ignore business applications and COBOL. I think that
it is not a question of how important the applications are, nor how widely a Ian-
guage like COBOL is used, that should determine whether or not it is taught in the
computer science department; rather, I think it depends on whether or not the
business administration department can do a fa¢ better job than we can, and whether
or not what is peculiar to the business applications is fundamental to other aspects
of computer science. And what t have indicated about business applications applies,
I believe, to most other fields of application that can be taught in other depart-
ments. I strongly believe that -Mth the limited resources we have, and ~dtl have for
a long time to come, we should not attempt ~o teach applications of computers
in the computer science department rather, those applications should be taught
in theft' natural environmen~ by the appropriate departments.
The problem of the role of analog computation in the computer science c-m°rieu-
lure is not quite the same as that of applications to special fields, since there is reMly
no place else for it to go. There is little doubt that analog computers m-e eeononfi-
cally important and will continue to be so for some ~time. B u t there is also littIe
doubt that the field, even including hybrid computers, does not have at present
the intellectual ferment that digital computation does. Furthermore, the essence
of good analog computation lies in the understanding of the physical limitations
of the equipment and in the peculiar art of scaling, especially in the time variaMe,
which is quite foreign to the rest of computer science. It tends, therefore, to be
ignored rather than to be rejected; it is eihher not taught or else R i s a n elective, and
Journal of tshe As.~ociatioa for Cora:ou~iag MacM~ery~ V~L :I8. No~ L J a m m r y t969
1R. W', I { A M M I N G
this is probably the best we can expect at present when the center of interest is the
genera] p~spose digital computer~
.At present there is a flavor of "game~playing" about m a n y courses in computer
science, I hear repeatedly from friends who want to hire good software people that
they have found the specialist in computer science is so:meone they do not want.
Their experience is that graduates of our programs seem to be mainly interested
in playing games, making fancy programs that really do not, work, writing trick
programs, etc. and axe unable to discipline their own efforts so that what they say
they will do gets done on time and in practical form° If I had heard this complaint
merely once from a friend who fancied that he was a hard-boiled engineer, then
I would dismiss it; unfortunately I have heard it from a number of capable, inteL
]igen% understanding people. As I ear]ier said, since we have such a need for financial
support for the current and future expansion of our facilities, we had better con-
sider how we can avoid such remarks being made about our graduates .in the coming
years~ Are we going to continue to turn out a product that is not. wanted in nmny
places? Or are we going to turn out responsible, effective people who meet the real
needs of our society? I hope that the latter will be increasingly true; hence my
emphasis on t[he practical aspects of computer science.
One of the reasons that the computer scientists we turn out are more interested
in "cute" progranemmng than in results is that many of our courses are beh~g taught
by people who have the instincts of a pure mathematician. Let me make another
arbitrary distinction which is only partially true~ The pure mathematician starts
with the given problem, or else some variant that he has made up from the given
problem, and produces what he says is an answer. In applied mathematics it is
necessary to add two crucial steps (1) an examination of the relevance of the mathe~
maticat model to the actual situation, and (2) the relevance of, or if you wish the
interpretation of, the results of the mathematical model back to the original situa~
tiom This is where there is "the sharp difference: The applied mathematician must
be willing to stake part of his reputation on the remark "If you do so and so you
w~Jl observe such and such very closely and therefore you acre justified in going
ahead and spending the money, or effort, to do the .job as indicated," while the pure
madlematidan usually shrugs his shoulders and says, " T h a t is none of my responsi-
bilityo" Someone must take the responsibility for the decision to go ahead on one
path or another, and it seems to me that he who does assume tiffs responsibility
will get the greater credit, on the averag% as it is doled out by society° We need, [
therdore, our teasing of computer science, to stress the su ng of respo si-
bilRy %r the ~Lvhogeproblem and not just the cute mathematical part. This is another )
reason why I have emphasized the engineering aspects of the various subjects and
tried to mkfimize the purely mathematical aspects~
The dix~eulty is, of sours R that so many of our teachers in computer science are
pure mathematicians and t~hat pure mathematics is so much easier to teach than
is applied work, There are relatively few teachers available to teach in the style
I am asking for~ This means we must do the best we can with what we have, l~ut
we should be eonsdous of the direction we want to take and that we want, ~
~ i b l e , to give a prssR:ieM fl~vor of responsibility and engineering rather
mere existence of results,
I t is urffortunate t h a t in the early stages of computer science it is the
abNty to haadle a sea of minutiae which is important for sueeess~ But if
i~ ~o ~;~.c~wi ~ o ~on~eone who can ~andle the larger aspects of computer science,
th<m he mu~t h~vc, und develop, other talents which are not being used or exer-.
eised ~,t the early stages~ ])~(fs,ny of our graduates never make this second step. T h e
situ~.ttion is much like t h a t in mathematics: in the early years it is the command
of the t.rivia of arithmetic and formal symbol manipulation of algebra w~fich is
needed, but in advanced mathematics a far different talent is needed for success.
As i sgid, m a n y of the people in computer science who made their mark in the
~rea where the minutiae are the dominating feature do not develop the larger
talents, and they are still around teaching and propagating their brand of detail.
W h a t is needed in. the higher levels of computer science is not the "black or white"
ment~dity t h a t characterizes so much of mathematics, but rather the judgment
and balancing of conflicting aims t h a t characterize engineering.
I have so far skirted the field of software, or, as a friend of mine once said, "ad
hoc-.ery/' There is so much t r u t h in. ihi.s characterization of software as ad hoc-ery
that it, is embarrassing to discuss the topic of what to teach in software courses.
So much of-what we have done has been in an ad hoc fashion, and we have been
u~der so much pressure to get something going as soon as possible t h a t we have
precious little which will stand examination b y the skeptical eye of a scientist or
engineer who asks, " W h a t content is there in software?" How few are the difficult
ideas to gr~sp in the field! How much is mere pi~.ng on of detail after detail without
any ca~'eful analysis! And when 50,000-word compilers are later remade with per~
haps 5000 words, how far from reasonable must have been the early ones!
I am no longer a software expert, so it is hard for me to make serious suggestions
about what to do in the software field, yet I feel thg~ all too often we have been
satisfied with such a low level of quality t h a t we have done ourselves harm in the
process. We seem not to be able to use the machine, which we all believe is a v e r y
powerful tool for manipulating and transforming information, to do our own tasks
in this very field° We have compilers, assemblers, monitors, etc. for others, and yet
when I examine what the typical software person does, I am often appalled at how
little he uses the machine in his own work. I have had enough minor successes
in sgguments with software people to believe t h a t I am basically right in m y in-
sistence t h a t we should learn to use the machine at almost e v e r y stage of what we
: are doing. Too few software people even t r y to use the machine on their own work.
There are dozens of situations where a little machine computation would greatly
i, aid the programmer. I recall one very simple one where a nonexpert with a very
~' long ~"O~tgRAN program from the outside wanted to convert it to our local use, so
he wrote a simple FOR~RA~W program to locate all the input-output statements and
all the library references. In m y experience, most programmers would have per-
sonally scanned long listings of the program to find them and with the usual h u m a n
fallibility missed ~¢couple the first time. I believe we need to convince the computer
expert t h a t the machine is his most powerful tool and that he should learn zo use
it ~s much as he can rather t h a n personally scan the long listings of s)m~bols as I
see being done everywhere I go around the country, t f what I am reporting is at
all true, we have failed to teach this in the pas~. Of course some of the best people
do in. fact use the computer as I am recommending; m y observation is that the run-
of-the-mill programmers do not do so.
To parody our curren$ methods of teaching progra~rm~ing, we give beginners
a grammar and a dictionary and tell them that, they are now great writers. We
Journal of ~,h~ A~ooiation ~or Comp~i~,g k~anhi~c~ry, VoL 18, No, I, J~nL~.~ry 19~9
i0 IC %5", }{A,M M ] N G
seldom if ever, gh~e them any serious training in .sgJe. Indeed ili b,~ve watched for
years for the a>pea,rance of a Ma'n~al of Sfg~{~a.nd/or an A rzS~olog~@~Good Progrom~
'meW and have as yet found none. Like writing, programming is a difficult ~:md
complex art. In both writing a:nd programming, compactness is deshab/e but in
both you can easily be too compact. When you consider how we teach good writing
........the exem lse% the compositions, and the talks that the student gives mid is graded
on by t:he teacher during his training in English--it seems we have been very remi~s
in this matter of teaching style hi programming. Unfortunately only few program~
n e t s who admit that there is something in what t have called "style" are ~il]:lng
to fornmlate their feelings and to give specific examples. As a result, few program-
mers write in flo~in{ poetry; most vrite in halting prose°
I doubt that style in programning is tied very closely to any particular machi~xe
or language, any more than good writing in one natura.1 language is significantly
different than it is in another. There are, of ecru'so, particub, r idioms and details
in one language that favor one way of expressing th.e idea rather dm~ a~xother,
but the essentials of good writing seem to transcend the differences in the Western
European languages with which I am fanfiliar. And I doubt that it ;is much different
for most general purpose digit~d machines that are available these days.
Since I am apt to he misunderstood when I say we need more of an engineering
flavor and less of f{ science one, I should perhaps point out t h a t I came t~.){~ornputer
science with a Ph.D. in pure mathenmties. When I ask that the training in software
be given s~ more practical, engineering flavor, I also loudly proclaim thai ~:-e have
too little understanding of what we are doing and that we desperately m~ed R) d(>
velop relevant theories°
Indeed, one of my major complaints about the computer field is that whereas
Newton could say, "If I have seen e~ little farther than others it, is because I have
stood on the shoulders of giants," I a:m forced to say, "Today we stand o> each
other's feet.." Perhaps the central problem ~e face in all of computer science is
how we are to get to tThe situation where we build on top of the work of others
rather than redoing so much of it in a trivially different stay. Science is supposed
to be cumulative, not almost endless duplication of the same kind of things.
Tt, is bri ,.g me to ,nother distinction, that between undireoted 'esoarch
basic research. Everyone likes to do undirected research and most people like to
believe that undirected research is basic research. I am choosing to define basic
research being,,ork upon which people wilt in the f ture base a lot of their ,vor> [
After all, what else can we reasonably mean by basic research other-than work upon
v&ieh a lot of later work is based? I believe experience shows that relatively few
particular piece of work will or will r~ot turn out to be basic, one can often z[ve ;
fMrly accurate probabilities on the outcome. Upon examining the que:stion of' the;;
nature of basic research, I have come to the conc].uskm that what determines{:
whether or not a piece of work ha<s much chance to become~ basic is not so much [![
the question asked as i$ is the way the problem is attacked.
Numerical analysis is the one venerable part of our emTieulum that 5
accepted as having some content Yet all too often there is some justice i
mark {hat re.any of the textbo6ks are written for mathematicians and a,
much more matheraaties ~han they are practical computing. The reas,
course, that, many of ghe people in the field are converted, or rat;her only
J o y . m 1 o{ ~he As~<~ialio.n £or Compt~ti~g Maeh{i~ry~ VOL i{% N'o, ~, ;Yam.tory 1969
Orm Ma~,',s Y@w of Cornp'~ter Ncie,~ce ll
I do not believe that a ~eparate course on these topics will be eIYect[ve.From what
Httle I understand of the matter of teaching these kinds of things, they can best
be taught by example, by the behavior of the professor. They are taught in the
odd moments, by the way the professor phrases his remarks and handles himself.
Tint,s it in the professor who must fi~st be made conscious that a significant part of
his teaching role is in communicating these delicate, elusive matters and that he is
not justified in saying, ~They are none of my business/~ These ace things that must
be taught c0%~,%@, a.ll th,e ti~e, b'5' ~vs~'~o~e, or they will not be taugt:lt at all,
And if the)- are not somehow taught to the majorRy of our students, then the field
v~Jll justly keep its present reputation (which may well surprise you if you ask your
cotleaffae.s in other departments for the.ir frank opinions).
In closing, let me revert to a reasonable perspective of the computer science
field. The field is very new, it has had to run constantly just to keep up, and there
has been little time for many of the things we have long known we must some day
do. But at least in the universities we have finally arrived: we have established
separate departments with reasonable courses, faculty, and eqmpment~ We are
now well sta¢~d, and it ]s time to deepen, strengthen, and improve our field so that
we can be justly proud of what we teach, how we teach it, and of the students we
turn out° We are not engaged in turning out technicians, idiot savants, and comput-
niks; we know that in this modern, complex world we must turn out people who can
play responsible major roles in our changing society, or eIse we must acknowledge
that we have failed in o'~ duty as teachers and leaders in this exciting, important
field--computer science,
ii