Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site cca.UUCP Path: utzoo!linus!decvax!cca!g-rh From: g-rh@cca.UUCP (Richard Harter) Newsgroups: net.cse Subject: Re: CS degrees, are they useful? Message-ID: <6350@cca.UUCP> Date: Sat, 22-Feb-86 18:44:56 EST Article-I.D.: cca.6350 Posted: Sat Feb 22 18:44:56 1986 Date-Received: Mon, 24-Feb-86 21:33:57 EST References: <> Reply-To: g-rh@cca.UUCP (Richard Harter) Organization: Computer Corp. of America, Cambridge Lines: 59 Summary: In article <> larry@jc3b21.UUCP (Lawrence F. Strickland) writes: > >Instead of this, how about coming up with a good CS program. I asked for >this a couple of months ago and got exactly two responses one of which had >to do with a course NOT to include, but no courses TO include. Great, huh! >Those people were helpful, but where was everyone else????????????????????? >What do we need and what don't we need to make a superior program?????????? > This is a fun kind of query. Here are some suggestions for an SE degree; I don't know if that counts: English: The usual year, plus either a course in writing poetry or one act plays. A technical writing course would be optional. Sciences: One year of chemistry and one year of physics. The physics courses should be from the Engineering track. EE/MATH: Statistical theory of communication and linear systems. Math: Calculus, advanced calculus for engineers, linear algebra, mathematical statistics (the hard core stuff, not "statistics for grade school teachers"), and numerical analysis. Software Engineering: (a) A course on the literature and how to use it. This course would familiarize the student with all of the major journals, the major collections of algorithms, and the major collected packages (proprietary and public domain) of utility programs. The student will be given the task of searching the literature for a desired algorithm and responding with a list of choices and a recommendation. (b) Class project: The class is given a large program (100,000+ lines of code) and the associated documentation and must make a specified enhancement. The documentation should be updated to reflect the enchancement. At least one third of the project should be a detailed critique of the errors made in designing and implementing the enchancement. (c) Design Methodologies Review: Review of the major current design methodologies with cross comparisons. (d) Surviving operating systems: A course in how to get on board a new operating system. Course emphasizes knowing what things you need to be able to do when you use a computer and determining with a minimum of fuss how to find out how to do them in a strange operating system. Course should cover the major operating systems from the viewpoint of the professional SE not yet familiar with the operating system in question. Computer Science: (a) Data structures: This is essential! (b) General Methods for Constructing Algorithms: Greedy, divide and conquer, et al. I could go on, but I won't. This will have to do as a starting point. Richard Harter, SMDS Inc.