Until recently there has not been much consensus among educators on
what formal education is necessary for a computer professional. It has always
been considered essential to have a great deal of mathematical knowledge,
as \vell as an understanding of computer hardware. Software education,
however, often consisted of the teaching of a number of programming
languages. The development of programming techniques, it was often assumed,
was not a subject of formal education, but rather a matter of experience.
This situation is analagous to an English department teaching only
grammar without freshman cOlnposition, literature, or creative writing.
Today the shared experience of a generation of programmers has combined
to form a body of practical and theoretical knowledge that can be
taught along with computer languages. Software is now an area of study in
its own right. The evolution of this situation can be clearly seen in the
progression of computer science curricula advocated by the major computer
Three main professional organizations represent the spectrum of computer
educators and professionals: the ACM (Association of Computing
Machinery), the IEEE (Institute of Electronic and Electrical Engineers),
and the DPMA (Data Processing Management Association). Each of these
organizations has contributed greatly to computer science education over
the years by publishing curriculum guidelines that identify what a student
should know upon graduation from a four-year institution of higher learning.