Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!swrinde!ucsd!ucbvax!van-bc!mdavcr!bult From: bult@mdavcr.UUCP (Timothy Bult) Newsgroups: comp.software-eng Subject: SE education vs CS and EE Message-ID: <692@algol.mdavcr.UUCP> Date: 28 Nov 89 01:20:15 GMT Reply-To: bult@mdavcr.UUCP (Timothy Bult) Organization: MacDonald Dettwiler, Richmond, B.C., Canada Lines: 107 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 Brought to you by Super Global Mega Corp .com