1989 the ACM and IEEE Computer Society (IEECS) cooperated on the first joint recommendation that emphasized the integration of theory, abstraction, and design—representing math,
science, and engineering—in the core. They sought to ease the
tensions between these three subgroups of the field. They began calling the field “computing” rather than “computer science
and engineering.” Those ideas
dominated the 1991 ACM/
IEEE computing recommendations. ACM and IEEECS
continued their cooperation
and produced major updates
in 2001 and 2013. The growth
of the field can be seen in the
increasingly complex recommendations over the years.
The 1968 curriculum had three
major subdivisions; the 2013
curriculum had 175.
In recent times, our virtual machine technologies
and platforms have improved so much, and chips and sensors
shrank so much, that most designers of software are seldom
aware of hardware. Some educators have argued that we no
longer need to be concerned about hardware; we should drop
our insistence that algorithms and software are intended to
control machines. Instead, we should view algorithms and software as expressions of methods to solve problems that can be
shared and communicated with others, a view that dominated
the design of the ALGOL language in the 1950s. In his 1968
ACM A.M. Turing lecture, Richard Hamming took a dim view
of the idea that we can abstract the machine out of the picture.
He argued that the computer is at the heart of computing; without it, almost everything computing professionals do would be
idle speculation. Hamming’s insight remains valid today: there
can be no computing without computers.
Along the way there has been an ongoing debate about
what programming language(s) to use in CS courses. Should
they be languages used heavily in industry, such as C, Java, or
programming concepts, such as Pascal or Python? It is ironic
that on the one hand computer languages are equivalent in expressive power, while on the other hand language choice is the
most fiercely debated issue in teaching computing. This debate
is unlikely to end.
QUEST FOR COMPUTING EVERYWHERE
The idea that computing is universally valuable pervaded the
thinking of the founders of computer science. Beginning in
1960, pioneer Alan Perlis repeatedly said that computer automation would spread to many fields and draw many people
into “algorithmizing”—his term for what we now call computational thinking.
of neural networks to large classes of pattern recognition and
prediction, with astonishing success. In recent years Machine
Learning and Big Data Analytics (BDA) have come to depend
closely on one another. Referring to the success of ML and BDA
as “AI” is a misnomer because neural networks are unintelligent
pattern recognizing machines.
Parallel and distributed
computing. From the 1960s
computer scientists developed
strong interests in computations performed by many
processors working together.
Because of their significantly
greater speed, parallel processors became the mainstay of
supercomputing, which became very popular in science,
engineering design, medical
and drug research, entertainment, and more, and fomented
the revolution of computational science. Also, from the 1960s, computers distributed into
many physical locations connected by a network provided access to remote services and showed great resiliency to failures.
The 1960s dream of computer utility matured into the modern
distributed systems making up “the cloud.” This long line of developments left a permanent imprint on our curricula.
EVOLVING VIEW OF WHAT COMPUTING IS
The question of whether computer science was unique or was a
science persisted for many years. Our views of what computing
is evolved through four stages over the years [ 4].
• In 1960s, we said we studied phenomena surrounding
• In the 1970s, we said we studied programming and all that
entailed about algorithms, analysis, and correctness.
• In the 1980s, we said we studied automation, what could be
efficiently automated by digital computers.
• In the 1990s, as other fields of science started to claim
their fields included naturally occurring information
processes, we said we studied information processes natural
and artificial. After that, the old debate about whether
computer science is science, or deserves its own academic
department, completely faded.
The curricula we taught evolved along with these maturing
views of the nature of the field. In 1968, ACM produced its first
curriculum recommendation, the first attempt at standardizing
what a computer science degree meant. In 1972 the NSF-sponsored COSINE (computer science in engineering) project advocated placing systems courses in the core curriculum, alongside
the traditional math courses already there; operating systems
was the first systems course to be accepted into the CS core. In
The idea that computing is
universally valuable pervaded the
thinking of the founders
of computer science. Beginning
in 1960, pioneer Alan Perlis