[Edu-sig] Accessibility to non CS types?

Scott David Daniels Scott.Daniels at Acm.Org
Mon May 29 00:27:52 CEST 2006


Andre Roberge wrote:
> ... Let me give a concrete example explaining inheritance for non-computer
> scientists.
> ===
> class Father(object): ...
> class Mother(object): ...
> 
> class Child(Mother, Father): ...
> ===
> The computer scientists in the (virtual) room are probably horrified.  

Yup.  I am aghast.  You are using the "built-from" relationship.  For
yourself this is fine, but pedagogically it leads to very bad habits.
The reason I am appalled is that I have maintained code that was written
this way, and the mess that results over years of extending from such
a shaky foundation is scary.

> I would claim the above example would be appropriate for the average person.

I claim this is because you are a scientist, not a mathematician.  At
Penn, Mathematics was an Art, not a Science (I have great sympathy for
that classification).  You are in the habit of lying to your students
and, next course, telling them "you know, what you learned in the
previous course was wrong."  This is a reason for people leaving the
sciences.  Mathematicians tend to try to stick to truths, though they
expand the universe they talk about each time.  In part this distinction
in approaches makes sense because mathematicians who make mistakes are
corrected (and scorned) by other mathematicians, while physicists are
corrected by reality (and refine their models).

Computer Science is a funny field, reached from both mathematics and
engineering, so the ideas you see there can come from either of these
sides (and cause lovely fights in faculty meetings).  I consider CompSci
an architecture-like discipline, with mathematics holding the position
in CompSci that physics has in architecture.

> Words like "inheritance" have been borrowed and adapted by computer
> scientists for use in their own discipline.
While words like "spin" for physicists....  Natural languages seldom
have precise definitions, and Computer Science is not close to the
worst offender in this respect.

To follow up on Kirby's personal history suggestion:  I was a math
loving kid by fourth grade, came to computers by accident in summer
after 9th grade (in 1966) doing machine language on a vacuum tube
computer (LGP-30).  The following summer I spent full-time in an
NSF-sponsored class at Penn where we a language a week for the summer
(two programs per language).  The experience gave me a good feel for
what a programming language is in general, as well as specifically.

I decided around 1972 (after auditing a class or two from Knuth) that
I could be either a mediocre mathematician or a very good computer
programmer.  Twenty years ago I went back to school to attempt a PhD
as a teaching union card in CompSci, and got a "drop-out masters."
For my research I was trying to do Query Optimization in Object-Oriented
Databases, and glanced briefly at Python (the type system did not fit my
research needs).  After working in compilers and Databases after school,
I picked up Python as a way of pursuing a long-running personal project,
and had the most fun I've had in a new language in 30 years.

--Scott David Daniels
Scott.Daniels at Acm.Org



More information about the Edu-sig mailing list