Path: utzoo!mnetor!uunet!husc6!cca!g-rh From: g-rh@cca.CCA.COM (Richard Harter) Newsgroups: comp.software-eng Subject: Re: MS in Software Engineering Message-ID: <26960@cca.CCA.COM> Date: 14 Apr 88 05:38:40 GMT References: <17063@gatech.edu> Reply-To: g-rh@CCA.CCA.COM.UUCP (Richard Harter) Organization: Computer Corp. of America, Cambridge, MA Lines: 88 In article <17063@gatech.edu> rob@gatech.UUCP (Rob McCurley) writes: >Recent discussions in this newsgroup have considered the question of >what should be taught to students in undergraduate or PhD programs in >computer science and software engineering. I'm currently pondering a >related question: what should be taught to students in an MS in >Software Engineering (MSSE) program? Here's a few specific questions >to get the ball rolling: >1) In the spectrum ranging from vocational to theoretical education >(if such a spectrum exists), where should an MSSE program lie? The vocational/theoretical disjunction is a little misleading. I would say that a master's program should be aimed at producing someone who is a master practioner. This requires a knowledge both of theory and practice. >2) What should the incoming/outgoing student know about the >following areas: >programming languages The usual -- one should have a working acquaintance with half a dozen languages, with a knowledge of several based on a variety of principles. Sampler: Lisp, Ada, C, Fortran, Snobol, APL. Just as important as knowing languages is knowing how they work, the assumptions made, and the organizing principles around which they are built. The above list should also include a couple of more modern, high level languages. In practice one often ends up creating special purpose languages. There should be a fair bit on this. >programming methodologies Unfortunately, this probably belongs in the School of Theology. There are a number of schools among people who write about programming methodology. The relevance of their writings to practice is mostly unknown. >compiler technology An over rated field in Academia. The average SE should know what a compiler does to the HLL that goes in and what sort of stuff is likely to come out. As noted above, however, special purpose languages are quite common, and one should have a knowledge of interpreter technology. >management techniques This is important. I would focus on what the responsibilities and functions of middle management are. >software cost calculation This can be taught?? >technical writing This area is often dealt with in terms of trying to teach people how to be technical writers. Think in terms of knowing what is required, and criteria for evaluation of documentation. >program specification and verification >3) What areas are missing from the above list? 3.1 Configuration management. 3.2 Quality Assurance 3.3 Operating system architecture 3.4 Operating system technology 3.5 Algorithm design and analysis 3.6 General systems theory 3.7 Architecture of software systems Let me expand on the this one. If you are going to create a large system, you need an over all picture of how that system works and how the pieces are going to fit together. You don't have to invent the design de novo. -- In the fields of Hell where the grass grows high Are the graves of dreams allowed to die. Richard Harter, SMDS Inc.