Path: utzoo!utgpu!watserv1!watmath!att!cbnewsc!kca From: kca@cbnewsc.ATT.COM (k.c.archie) Newsgroups: comp.software-eng Subject: Re: Assembler and teaching Software engineering Message-ID: <14451@cbnewsc.ATT.COM> Date: 16 Mar 90 16:19:21 GMT References: <1940@opus.cs.mcgill.ca> Organization: AT&T Bell Laboratories Lines: 74 From article <1940@opus.cs.mcgill.ca>, by peterd@opus.cs.mcgill.ca (Peter Deutsch): [ stuff deleted] > designs, but that's the whole point. I shouldn't be a > slave to fashion. I'm suppose to be teaching principles, > and as efficiently (and hopefully enjoyably) as possible. > [ stuff deleted] > There exist any number of companies that > promise to make you a "Systems Analyst/Programmer in only > three short months!" (So is that February, April and June? :-) > Presumably there is a reason university degrees take a > little longer? Right on! I have taught a couple of classes at a local college where many of the students complain that we shouldn't use Pascal because they all use C at work. What I try to teach is programming, not programming in C, Pascal, etc. That is one of the major differences between colleges and vocational schools. > [stuff deleted] > Note, I am NOT advocating that we develop large commercial > projects in assembler, but that exposure to a good sized > assembler project is a suitable microcosm for some of the > classic problems in software engineering for beginners in > a first assembler course. 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. > > For the record, I structure my programming assignments as > a series of progressively more complex specifications, > where assignment(n) assumes the availability of > assignment(n-1). [stuff deleted] > might change! ;-) So what do others think about using such > a course as a first exposure to software engineering. And > if it is such a bad idea, how _should_ it be done? > > Enquiring minds want to know.... > - peterd My first language was a kind of assembler from a book. The second was BASIC and the third was PDP-11 assembler. One of my most memorable classes as one on computer architecture. The first assignment was to develop code to simulate an and gate. This got built into a half-adder and then a full adder. The next assignment was to incorporate the adder into a micro computer simulator we had to write. Having to simulate the entire processor was a revelation for me. I was strictly a software type, but started to understand the hardware better by the time class was done. The last assignment had us modifying the microprocessor simulator to add new features, new operations, I/O or , in my case, change the instruction format from horizontal to vertical. All this was done in PDP-11 assembler and on cards under RT-11. Why, I remember having to debug programs from the front panel switches. You young people today have life so easy...:-) I completley agree with teaching assembler. It should be a simple architecture like the PDP-11. What you learn from this is not a direct commercial skill but knowledge of how your tools work. By building your own at least once, you know how to evaluate others when you buy them. You learn what you really can and cannot do with a computer. That class was one of the most valuable I had even though I have written no production assembler code since then. It is important to remember in all this that studying software engineering isn't about coding, any more than civil engineering is about riveting I beams together. I am lucky if I spend 20% of my time writing code. These days, most of the code I write is for the classes I take. My work is mostly product design and project control. Well enough rambling, us old codgers (MS in '81) get talking and you can't shut us up. Maybe that's what I like about teaching, the captive audience. **kent Kent Archie kca@cbnewsc.att.com