reading Cs Classics
Revisiting required reading.
We OFTen FOCUs so much of our attention on our particular research ar- eas that we do not fully utilize the potential
coming from the core theoretical computer science. We lack the fundamental theoretical knowledge of the field.
Moreover, the computer science classics are unknown to many computer
scientists. Knowledge of the theories
of computer science helps in understanding the limitations of the field.
This directly influences your ongoing
research by providing you with new
perspectives and insights. In addition,
the stories of the pioneers of the field
inspire young professionals, provide a
common history to unite the community, and facilitate the recognition of
computer science as an independent
science and profession.
With these ideas in mind, I organized CS classics meetings in my computer engineering department during
the last summer term. Our group selected a subset of classics to initialize
the project. The selected classics and
their respective ordering reflected our
personal interests; in the end, they become part of a coherent whole.
It can be a good practice for CS professionals to compile their own list of
classics that highlights some key scientific concepts of the field. Such an attempt improves the understanding of
the field and serves as a valuable source
of reference, as this Viewpoint attests.
Our group discussed these CS classics:
˲“The Emperor’s Old Clothes,”
˲ “An Axiomatic Basis for Computer
Programming,” C.A.R. Hoare
Knowledge of the
theories of computer
of the field.
˲“Gödel’s Undecidability Theorem,” S.F. Andrilli
˲ “Computing Machinery and Intelligence,” A.M. Turing
˲ “Reflections on Trusting Trust,” K.
˲ “The Humble Programmer,” E.W.
˲ “An Interview with Edsger W. Dijkstra,” P. Frana
˲“Computer Programming as an
Art,” D. Knuth
˲ “The ‘Art’ of Being Donald Knuth,”
˲ “Donald Knuth: A Life’s Work In-
terrupted,” E. Feigenbaum
We found these intellectual gath-
erings quite useful and subsequently
decided to make the CS classics group
reading a regular activity of our aca-
demic environment. Here, I give an
overview of the classics we discussed
and encourage further reading.
In reading Hoare, 6, 7 you learn about
the computing industry of the 1960s
and 1970s in Britain. The program-
ming languages community of those
years was also well described in the
reading. Hoare wrote a more efficient
sort algorithm than the one invented
by D.L. Shell. 9 When he had the op-
portunity to hear about the recursive
procedures in an ALGOL 60 course,
Hoare realized this mechanism is
the right way of expressing his new
sort algorithm, which is the original
QuickSort. The moral of this example
is that one should communicate with
people to seek better solutions to the
problems at hand and extend the ex-
isting solutions. His remark on sim-
plification is of high importance as
well. A simple, reliable core is criti-
cal for a programming language, an
operating system, and even for any
software product. With this realiza-
tion, Hoare provides a foundation for
the formal proofs of programs by an
algebraic assertions-based approach,
which is named as “An Axiomatic Ba-
sis for Computer Programming.” 7