Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!brl-adm!rutgers!cbmvax!hutch!rabbit1!barber From: barber@rabbit1.UUCP (Steve Barber) Newsgroups: comp.lang.misc Subject: Re: Teaching object-oriented paradigm to beginners? Message-ID: <265@rabbit1.UUCP> Date: Wed, 21-Jan-87 20:50:06 EST Article-I.D.: rabbit1.265 Posted: Wed Jan 21 20:50:06 1987 Date-Received: Thu, 22-Jan-87 20:39:06 EST References: <4000001@nucsrl.UUCP> <602@sdcc18.ucsd.EDU> <4153@utah-cs.UUCP> Organization: Rabbit Software Corp., Malvern PA Lines: 58 Summary: object oriented programming MIT computer science In article <4153@utah-cs.UUCP>, shebs@utah-cs.UUCP (Stanley Shebs) writes: > MIT for instance > starts all their CS freshcritters with Scheme, which is introduced as a sort > of fancy calculator with parens in all the wrong places :-). > > stan shebs > utah-cs!shebs This is partly true, and where it is wrong may be crucial to the argument about what to teach to beginners. While it is true that the MIT Scheme class is the first subject in the Computer Science curriculum there, an argument can be made that it is not a class for beginning programmers. First off, the class assumes that the student be a fairly fluent programmer already (not an unreasonable assumption for an MIT freshman who intends to be a CS major in the '80s), and they teach you all the Scheme you need to know in the first 2-3 weeks! (Just to nit-pick, it's not really a freshman class anyway, it's for sophomores. There's just a lot of overachievers at MIT with advisors that either don't care or suffer from the same myopia the students do.) The MIT CS department doesn't offer a course in "programming" at all (they dropped it claiming "lack of interest" or "lack of staff", depending whom you believe). The only "programming" classes at MIT are taught by Civil Engineering, Mechanical Engineering, or the Management School! Which is kind of as it should be, since programming is just a tool for these disciplines, not a central paradigm as it is for CS. What the "Scheme class" is all about is learning how to manage complexity in a problem by using modularization ("divide-and-conquer") and abstraction ("hide-the-details") which is absolutely the right way to program. It also happens to be a pretty good general methodology for technical (as opposed to social) problem solving. I don't think it is necessary to teach object oriented techniques to beginners as long as they are taught modularization and abstraction. An object oriented approach is just a very nice special case, to be taught to people who can reasonably be expected to either go on with CS studies or may get to use what you've taught them. If you teach a Mech E. structured Fortran, he'll thank you for it, but if you teach him Smalltalk, he'll drop the class to concentrate on design labs. (No sexism intended.) On the other hand, the only reason why I really appreciated learning all these techniques with the fancy names is because I started with BASIC, and learned the hard way how not to do things! (By the way, the MIT "Scheme Class", actually titled "The Structure and Interpretation of Computer Programs", was absolutely the best CS subject I ever took. If you don't have the opportunity to take it, get the book (with the same title) by Abelson and Sussman, published jointly by McGraw-Hill and The MIT Press.) -- Steve Barber Rabbit Software Corp. ...!ihnp4!{cbmvax,cuuxb}!hutch!barber ...!psuvax1!burdvax!hutch!barber (215) 647-0440 7 Great Valley Parkway East Malvern PA 19355