ACM, Computing Curricula 2005: Overview Report, September
30, 2005.
The Computing Disciplines
“There are
many kinds of computing degree programs. There are dozens around the world. The
variety of
names used
for the programs is even broader. The programs represent a number of computing
disciplines.
In this
report, we focus on five that are prominent today:
computer
engineering, computer science,
information systems, information technology,
and
software
engineering. These
five satisfy our criterion
for
inclusion: each one has, or will soon have, a volume of undergraduate curriculum
guidelines that is
approved and
published by one or more international professional and scientific societies. We
expect
that, in the
future, additional computing disciplines may satisfy this criterion. When that
is the case, they
may be
included in future editions of this report.”
What is Computing?
“In a
general way, we can define computing to mean any goal-oriented activity
requiring, benefiting from,
or creating
computers. Thus, computing includes designing and building hardware and software
systems
for a wide
range of purposes; processing, structuring, and managing various kinds of
information; doing
scientific
studies using computers; making computer systems behave intelligently; creating
and using
communications and entertainment media; finding and gathering information
relevant to any particular
purpose, and
so on. The list is virtually endless, and the possibilities are vast. Computing
also has other
meanings
that are more specific, based on the context in which the term is used. For
example, an
information
systems specialist will view computing somewhat differently from a software
engineer.
Regardless
of the context, doing computing well can be complicated and difficult. Because
society needs
people to do
computing well, we must think of computing not only as a profession but also as
a discipline.”
Descriptions of
the Disciplines
Computer
Engineering
Computer
engineering is concerned with the design and construction of computers and
computer-based
systems. It
involves the study of hardware, software, communications, and the interaction
among them.
Its
curriculum focuses on the theories, principles, and practices of traditional
electrical engineering and
mathematics
and applies them to the problems of designing computers and computer-based
devices.
Computer
engineering students study the design of digital hardware systems including
communications
systems,
computers, and devices that contain computers. They study software development,
focusing on
software for
digital devices and their interfaces with users and other devices. CE study may
emphasize
hardware
more than software or there may be a balanced emphasis. CE has a strong
engineering flavor.
Currently, a
dominant area within computing engineering is embedded systems, the development
of
devices that
have software and hardware embedded in them. For example, devices such as cell
phones,
digital
audio players, digital video recorders, alarm systems, x-ray machines, and laser
surgical tools all
require
integration of hardware and embedded software and all are the result of computer
engineering.
Computer
Science
Computer
science spans a wide range, from its theoretical and algorithmic foundations to
cutting-edge
developments
in robotics, computer vision, intelligent systems, bioinformatics, and other
exciting areas.
We can think
of the work of computer scientists as falling into three categories.
• They design
and implement software. Computer scientists take on challenging programming
jobs.
They also
supervise other programmers, keeping them aware of new approaches.
• They devise
new ways to use computers. Progress in the CS areas of networking, database, and
human-computer-interface enabled the development of the World Wide Web. Now CS
researchers are
working with
scientists from other fields to make robots become practical and intelligent
aides, to use
databases to
create new knowledge, and to use computers to help decipher the secrets of our
DNA.
• They
develop effective ways to solve computing problems. For example, computer
scientists develop
the best
possible ways to store information in databases, send data over networks, and
display complex
images.
Their theoretical background allows them to determine the best performance
possible, and their
study of
algorithms helps them to develop new approaches that provide better performance.
Computer
science spans the range from theory through programming. Curricula that reflect
this breadth
are
sometimes criticized for failing to prepare graduates for specific jobs. While
other disciplines may
produce
graduates with more immediately relevant job-related skills, computer science
offers a
comprehensive foundation that permits graduates to adapt to new technologies and
new ideas.
Information
Systems
Information
systems specialists focus on integrating information technology solutions and
business
processes to
meet the information needs of businesses and other enterprises, enabling them to
achieve
their
objectives in an effective, efficient way. This discipline’s perspective on
information technology
emphasizes
information, and views technology as an instrument for generating, processing,
and
distributing
information. Professionals in the discipline are primarily concerned with the
information that
computer
systems can provide to aid an enterprise in defining and achieving its goals,
and the processes
that an
enterprise can implement or improve using information technology. They must
understand both
technical
and organizational factors, and they must be able to help an organization
determine how
information
and technology-enabled business processes can provide a competitive advantage.
The
information systems specialist plays a key role in determining the requirements
for an organization’s
information
systems and is active in their specification, design, and implementation. As a
result, such
professionals require a sound understanding of organizational principles and
practices so that they can
serve as an
effective bridge between the technical and management communities within an
organization,
enabling
them to work in harmony to ensure that the organization has the information and
the systems it
needs to
support its operations. Information systems professionals are also involved in
designing
technology-based organizational communication and collaboration systems.
A majority
of Information Systems (IS) programs are located in business schools. All IS
degrees
combine
business and computing coursework. A variety of IS programs exist under various
labels which
often
reflect the nature of the program. For example, programs in Computer Information
Systems usually
have the
strongest technology focus, while programs in Management Information Systems
emphasize the
organizational and behavioral aspects of IS. Degree program names are not always
consistent.
Information
Technology
Information
technology is a label that has two meanings. In the broadest sense, the term
information
technology
is often used to refer to all of computing. In academia, it refers to
undergraduate degree
programs
that prepare students to meet the computer technology needs of business,
government,
healthcare,
schools, and other kinds of organizations. In some nations, other names are used
for such
degree
programs.
In the
previous section, we said that Information Systems focuses on the information
aspects of
information
technology. Information Technology is the complement of that perspective: its
emphasis is
on the
technology itself more than on the information it conveys. IT is a new and
rapidly growing field
that started
as a grassroots response to the practical, everyday needs of business and other
organizations.
Today,
organizations of every kind are dependent on information technology. They need
to have
appropriate
systems in place. These systems must work properly, be secure, and upgraded,
maintained,
and replaced
as appropriate. Employees throughout an organization require support from IT
staff who
understand
computer systems and their software and are committed to solving whatever
computer-related
problems
they might have. Graduates of information technology programs address these
needs.
Degree
programs in information technology arose because degree programs in the other
computing
disciplines
were not producing an adequate supply of graduates capable of handling these
very real needs.
IT programs
exist to produce graduates who possess the right combination of knowledge and
practical,
hands-on
expertise to take care of both an organization’s information technology
infrastructure and the
people who
use it. IT specialists assume responsibility for selecting hardware and software
products
appropriate
for an organization, integrating those products with organizational needs and
infrastructure,
and
installing, customizing, and maintaining those applications for the
organization’s computer users.
Examples of
these responsibilities include the installation of networks; network
administration and
security;
the design of web pages; the development of multimedia resources; the
installation of
communication components; the oversight of email systems; and the planning and
management of the
technology
lifecycle by which an organization’s technology is maintained, upgraded, and
replaced.
Software
Engineering
Software
engineering is the discipline of developing and maintaining software systems
that behave
reliably and
efficiently, are affordable to develop and maintain, and satisfy all the
requirements that
customers
have defined for them. This reflects its origins as outlined in Section 2.2.2.
More recently, it
has evolved
in response to factors such as the growing impact of large and expensive
software systems in
a wide range
of situations and the increased importance of software in safety-critical
applications.
Software
engineering is different in character from other engineering disciplines due to
both the
intangible
nature of software and the discontinuous nature of software operation. It seeks
to integrate the
principles
of mathematics and computer science with the engineering practices developed for
tangible,
physical
artifacts. Prospective students can expect to see software engineering presented
in two contexts.
• Degree
programs in computer science offer one or more software engineering courses as
elements of
the CS
curriculum. Some offer a multi-course concentration in software engineering
within CS.
• A number of
institutions offer a software engineering degree program.
Degree
programs in computer science and in software engineering have many courses in
common.
Software
engineering students learn more about software reliability and maintenance and
focus more on
techniques
for developing and maintaining software that is correct from its inception.
While CS students
are likely
to have heard of the importance of such techniques, the engineering knowledge
and experience
provided in
SE programs go beyond what CS programs can provide. The importance of this fact
is so
great that
one of the recommendations of the SE report is that, during their program of
study, students of
SE should
participate in the development of software to be used in earnest by others.
SE
students learn
how to
assess customer needs and develop usable software that meets those needs.
Knowing how to
provide
genuinely useful and usable software is of paramount importance.
In the
workplace, the term software engineer is a job label. There is no standard
definition for this term
when used in
a job description. Its meaning varies widely among employers. It can be a title
equivalent to
computer
programmer or a title for someone who manages a large, complex, and/or
safety-critical
software
project. The layman must be mindful not confuse the discipline of software
engineering with the
ambiguous
use of the term software engineer as used in employment advertisements and job
titles.