🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #4608

Re: Teaching object-oriented paradigm to beginners?

#4608
From: Steve Barber
Date: Thu, 22 Jan 1987 01:50
58 lines
3667 bytes
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
Technical Details
Message-ID: <265@rabbit1.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!mnetor!seismo!brl-adm!rutgers!cbmvax!hutch!rabbit1!barber
References: <4000001@nucsrl.UUCP> <602@sdcc18.ucsd.EDU> <4153@utah-cs.UUCP>

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!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