> For goodness sake, Software Engineering /= CS
> It's apples and oranges. Which is better?
> CS experts should do CS, ie science, ie discover new knowledge,
> propose and test testable hypotheses.
> Software engineers should engineer software, ie build things that
> work and that we know will work because they are built the right
> way or else the engineer isn't.
Sigh. You're entitled to your opinion that there should be a
dichotomy here, and some share it. But many do not.
> A dispute over which is better among such an esteemed group as this
> raises all kinds of questions, but I won't go there. You should
> stop this dispute lest some future graduates see it and get all
There's no dispute here, except over whether we should create an
artificial CS/SE dichotomy in education. See below.
I'm appending the definition of Computer Science as adopted by
the Computing Accreditation Council (CAC) of ABET (Accreditation
Board for Engineering and Technology). This is the body (a creature
of ACM and IEEE Computer Society) that accredits U.S. *undergraduate*
computing programs. Currently there are about 200 such accredited programs.
I've abridged this a bit, but you'll get the idea.
The accreditation process includes a number of standards that further
this "mission statement". Any program desiring accreditation must
show that it meets the standards, and that all students meet that
program's requirements. For more details, see www.abet.org.
Now the definition:
"...[T]he discipline spans both advancing the fundamental understanding
of algorithms and information processes in general, as well as the
practical design of efficient reliable software and hardware to meet
given specifications... In computer science there is an inherent
intermingling of the theoretical concepts of computability and
algorithmic efficiency with the modern practical advancements in
electronics that continue to stimulate advances in the discipline.
It is this close interaction of the theoretical and design aspects
of the field that binds them togeher in a single discipline.
"...[A] well-educated computer scientist should be able to apply the
fundamental concepts and techniques of computation, algorithms, and
computer design to a specific design problem. The work includes
detailing of specifications, analysis of the problem, and provides a
design that functions as desired, has satisfactory performance, is
reliable and maintainable, and meets desired cost criteria. Clearly,
the computer scientist must not only have sufficient training in the
computer science areas to be able to accomplish these tasks, but must
also have a firm understanding in areas of mathematics and science,
as well as a broad education in liberal studies to provide a basis
for understanding the societal implications of the work being performed."
I think it's a reasonable statement of what we should be about in
UG education. The dichotomy between CS and SE, at the UG (as opposed
to research) level is entirely artificial, in my view and experience.
What do the rest of you think?
I'll discuss it with you offline, Al, if you wish.