[comp.software-eng] SE education vs CS and EE

bult@mdavcr.UUCP (Timothy Bult) (11/28/89)

We have to push our universities to make departments of software engineering.

At MacDonald Dettwiler, we hire a mixture of electrical engineers and
computer scientists to write software.  What a dilemma!  I spoke with a new
employee with an excellent engineering degree whose software experience was
one course in FORTRAN.  I have two Master of Science degrees, but never learned
formal analysis or engineering techniques until years of industrial exposure.
Why is computer programming considered by universities to be either a
miscellaneous offshoot of computer hardware design, or a pure science like
the study of quantum theory?  To satisfy the growing need for educated
engineers that understand databases, MIPS, Ada, Unix, modularity, records,
object-oriented design, and a hundred other software technologies, we must
have software engineering departments at our universities.

Compare what you know of computer science and electrical engineering
curricula to the following proposed curriculum for software engineering:

FIRST YEAR

calculus
matrix algebra
physics
chemistry
technical English
French, Russian, and Esperanto
structured programming in Ada

SECOND YEAR

advanced calculus
computational geometry
complexity analysis
formal system requirements analysis (IEEE and Milspec)
formal software design
approaches to software validation
software maintenance
comparative key languages (Ada, C++, FORTRAN, COBOL)
computer hardware principles (architecture, storage, processing, peripherals)

THIRD YEAR

special language electives (COBOL, Miranda, Prolog, APL, ...)
operating systems (OS/400, OS/2, Unix, VMS, maybe even DOS)
formal systems design
large system architecture
database design (relational and object-oriented)
user interfaces (principles, platforms, GUI's, methodologies)
software project management

THIRD AND FOURTH YEAR OPTIONS

graphics
image analysis
signal processing algorithms
compiler design
peripheral drivers
memory management
process monitoring and control
planning and scheduling
expert systems
database architecture
platform surveys
comparative software development methodology (prototyping, waterfall, ...)
system administration
knowledge representation (spatiotemporal facts, objects, rules, uncertainty)
logical inference (automated reasoning)
robot vision, navigation, and control
functional programming
logic and relational programming
object oriented analysis, design, and programming
methods for functional specification (logic, PDL, Milspec, ...)
network protocols
case studies of small software projects
case studies of large software projects


Locally to us, UVic has a computer science department in engineering,
whereas I would suggest they leave computer science to arts and science,
and create a software engineering department for the faculty of engineering.

Don George, dean of engineering at SFU, may be the most amenable authority
to getting a real software engineering department in BC.
I don't know how Nick Cercone's Center for Systems Science relates to the
science and engineering aspects of software (and university structure).
I'd like to find out.

At UBC, I know the Computer Science faculty grumble about having to teach
programming to hordes of commerce and engineering students.  It makes sense
that this department of the Faculty of Science concentrate on scientific
research and education.  The Electrical Engineering department at UBC partly
recognizes the need for software engineering education, and sends its students
over to Computer Science for the best the university has to offer.
Perhaps we could help UBC or SFU, and eventually other universities to set up
the right departments to fill the gap.  We could help define curricula, donate
or sell staff for teaching key industrial courses, and run a co-op program.
The publicity could be tremendous, as well as the impact on our hiring.  The
faculty could be derived from engineering-oriented staff of Computer Science
and software-oriented staff from Electrical Engineering and Commerce.

The software engineering curriculum I listed above is full of things
we in industry spend millions in hidden costs teaching electrical engineers
and scientists on the job.  It would be more effective to do it in school.
Fill the gap between hardware engineers and software scientists with a
software engineering department and discipline.

Timothy Bult