Path: utzoo!attcan!uunet!jarthur!usc!ucsd!nosc!marlin!bwalker From: bwalker@marlin.NOSC.MIL (Beth Walker) Newsgroups: comp.software-eng Subject: Re: Assembler and teaching Software engineering Message-ID: <1348@marlin.NOSC.MIL> Date: 16 Mar 90 17:15:28 GMT References: <891@gistdev.gist.com> <1003@dms.UUCP> <1940@opus.cs.mcgill.ca> Reply-To: bwalker@marlin.nosc.mil.UUCP (Beth Walker) Organization: Naval Ocean Systems Center, San Diego Lines: 59 In article <1940@opus.cs.mcgill.ca>, peterd@opus.cs.mcgill.ca (Peter Deutsch) writes: > I have seen earlier discussions on the net (I think it was > in comp.edu) along the lines of "but why even teach > assembler? [.. stuff deleted} > I would maintain that if you wrote a 500 > line assembler program that was not designed along proper > engineering principles (eg. structure your tasks, > eliminate side-effects, document your code, develop and > debug in a methodical manner, changing no more than a > single variable in the debugging process to avoid masking > problems, etc) then your program just can't be made to > work. I have seen too many examples where it wasn't and it > didn't. [ .. deleted text ] > I like to think my course > serves to "demystify" the computer for novices, gives > confidence needed to tackle large projects and, as a bonus > serves as a first exposure to some basic software > engineering principles. I tend to agree with Peter. I thought I would give a perspective from different point of view, as my background in CS is perhaps not typical. I am employed full-time, working in CS/SE, am currently working on a Masters in CS, and have a BS in Zoology. My 'undergrad' CS experience was all on-the-job. My very first assignment was to optimize (by hand) the assember output of an executive program written in LISP. The assembler was a home-grown, written for a bit-slice stack machine developed in house. My second assignment was developing a screen-oriented editor in Z-80 assembler. I had the good fortune to work for people that insisted on a structured approach to coding... one entrance, one exit, etc. I got a very good grounding in both assembler language, debugging skills, team development, etc. Unfortunately, not all schools appear to stress the Software Engineering aspects of programming in the introductory courses. When I went back to school for my Masters, I found that most of the students had very poor skills in designing and debugging programs. In one class (upper division), there was a team project to build an assembler. My two team members had only a vague idea of what an assembler did, and what its output was supposed to be. Not having taken the school's prerec assembler course myself, I can't say how it was structured. However, undergrad courses at that school typically used toy programs for lab assignments, and had very little to say about how programs should be organized. I do know that virtually all undergrads dreaded having to take the assembler course...