Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!rice!uw-beaver!Teknowledge.COM!unix!hplabs!hp-sdd!ncr-sd!ncrlnk!ncratl!scotty!kcby From: kcby@scotty.Atlanta.NCR.COM (K. C. Yakemovic) Newsgroups: comp.edu Subject: Re: CS education Message-ID: <1049@scotty.Atlanta.NCR.COM> Date: 8 Nov 89 13:17:26 GMT References: <11064@cbnews.ATT.COM> <6961@hubcap.clemson.edu> <3152@hydra.gatech.EDU> Reply-To: kcby@scotty.UUCP (K. C. Yakemovic) Organization: NCR Corporation, E&M Atlanta Lines: 67 In article <3152@hydra.gatech.EDU> russ@prism.gatech.EDU (Russell Shackelford) writes: > >[stuff deleted about how CS education misses the boat] > >[stuff deleted about how CS education is probably going to get better >slowly] > >one of the problems is that we don;t really know what it is we're trying >to accomplish. we understand little about people and problems and >problem solving and etc., etc., etc. now, many folks disagree, claiming >that The Answer really lies in mathematical models or cognitive psych or >(fill in your religion here). > >what do you think CS education should try to DO? I think that maybe the 'common ground' between what industry needs and what computers science research needs may lie in the area of teaching students how to a) take a problem and figure out the (relevent) unknowns b) how to find the answers to those questions c) how to communicate what they are thinking (to other people or to machines). As a simple example of a, consider the word problems given in "math" tests. Life presents us with a lot of word problems. So learning to represent the relevent aspects of a problem in a 'mathematical' or other structured way is key to problem solving. Whether the problem is "design a software system which solves the problems of this class of customer" or "design a test of some piece of CS theory", the ability to do this type of analysis is critical. As far as how to find answers to questions, there are many sources for answers. Two general classifcations might be "stored" knowledge sources (such as books) and "living" knowledge sources (such as other people). We need to know how to get answers out of *both* types of sources. Learning how to apply answers given in other fields (languages/jargon) is also a useful skill for both researchers and industry. Cross domain fertilization is possible... but not if people haven't been exposed to the idea that getting ideas from other places is "good". And finally, what to me is perhaps the biggest "gotcha"... all the good ideas in the world, and even the solutions to problems, aren't worth anything if people can't communicate what they know to others. The reluctance of CS graduates to write things down is legendary. I've been told that communication skills should be taught "before" the undergraduate CS training begins. However, IMHO if a person can't express themselves in understandable English, the chances of their sucessfully explaining to a machine what they want *it* to do are slim. An exmpale of what could be done by the CS program here would be getting students to write so that people not directly involved with their area of study can understand it. (As a side benefit, this might help the poor industry programmer who hasn't learned the latest university jargon to make use of the ideas!) Since my CS degree is a 'few' years old, there wasn't much in the way of "basics" being taught at the time. Having learned, with the help of my teachers, how to learn, I was able to learn the "basics" on my own. I've found this ability to teach myself (by figuring out what I didn't know and then looking for the answers) and the ability to express my self in written (and spoken) communication have been extremely useful tools in industry... as well when I've done any post-graduate coursework. It might be useful to note that I wouldn't expect these things to be taught in standalone courses but rather as principals within all CS cousework. - KC Burgess Yakemovic kcby@Atlanta.ncr.com