From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=0.8 required=3.0 tests=BAYES_50 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 19 Jul 91 17:59:27 GMT From: agate!spool.mu.edu!news.nd.edu!thor.cc.nd.edu!wessels@ucbvax.Berkeley.EDU (Andy Wessels) Subject: Re: CS/SE curricula (was: Is CM important? (was: Use pragma I... Message-ID: <1991Jul19.175927.16632@news.nd.edu> List-Id: OK, here is my $0.02. Yes, it is true that I am a student, but there are some observations that I have made over the last couple of years and especially the lasst couple of weeks. Please bear in mind that this is from a computer engineering standpoint (the degree that I am working towards). First, calculus is important. Granted, I somewhat loathe doing it, but after taking calculus, I am able to recognize the math, even if all is not remembered . But, I do know where or more importantly, HOW to look up the answer. Second, the humanities are _very_ _very_ important. Engineering in a broad sense is 'applied physics'. Engineering is a combination of laws from physics and taking those laws and (attempting) to put those laws to good use. Good use is a judgment call made by humanity or the target group for the engineering. All of the physics/nature laws in the world will not make a good product. Nor will all humanities. But, there is a happy medium in there where all sorts of magic happens. Someone who understands the needs of others and someone who understands the laws of physics and nature has a higher probabilty of doing an exceptional job. Persons doing programming need to understand where the system is going in order to do a good job; understanding _why_ a triple redundant system is needed in air-traffic control and the potential for lost lives is a fundamental underlying problem in the design of such a system. Third, a broad base of programming languages is highly important, as well as th e history of programming languages. Knowing _why_ a language is the way it is leads to better use of that language whether it be Pascal, Ada, or C, or even Fortran or Cobol. These languages are just _tools_ to do a job, and some are better than others. As an example, one of the classes that I was in taught programming targeted for imbedded systems. The host language that was used was Pascal, and assembly, although C is also on the system. Pascal by itself could not do all; assembly was needed for parts of the program. Learning _how_ to interface other languages into a host language is very important in this arena, as there may not be an OS on the imbedded system. Another class that I was involved in was a surevey of programming languages. We covered something like seven major languages, and talked about the history and ramifications of ~24 others. Granted, there was no 'deep' understanding of the languages, but there was a general understanding of features/benefits of the language. Teaching only one or two languages is akin to showing someone how to use a hatchet, but not an axe. They do the same fundamental thing--they cut wood--but are different in there use and techniques. This is the type of teaching that need s to be done. I am a firm believer in making students think for themselves (in a classroom situation) and not babied. The interesting thing is that the profs. that are CS only tend to 'baby' students, whereas the engineering profs. tend to make the students think. Granted, this is a general oversimplification , but the trend is still there. And this is scarry to me, as I realize that many of my friends from 'other institutions' have similiar experiences. andy wessels@thor.cc.nd.edu flames to above address, if you wish.