🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.misc
Article #5214

re: First Languages (yet again) [long: ~200 lines]

#5214
From: Janet: rick
Date: Thu, 03 Mar 1988 16:06
187 lines
9339 bytes
In response to Jonathan Eunice's response to Tony Cunningham's reponse to....

tjc>  CS1 courses exist to teach people about computer science. They are
tjc>  not in general service courses for other departments. 

jon>What makes you think that good programming techniques are going to be
jon>any different when found in physicists, say, than when found in
jon>computer scientists?  

I don't think Tony ever said they would be.  What he perhaps didn't make
clear was that Computer Science courses *qua* Computer Science courses
necessarily involve teaching good programming techniques. 

Another point is that physicists (for example) will require (for the
forseeable future) different programming techniques from computer
scientists. The most a computer science course can do for them is teach
them the essentials. After that, they get it from their own department.

This may reflect a difference between American and British universities;
any further thoughts about this from anyone?

>Programming is a SKILL, not a science.  

Agreed. However, like any skill, there are certain ways of doing things
which can be formalised into a 'scientific' basis. 

>You use "computer science" as though it is some higher religion that is
>defiled by teaching it to heathens, unbelievers, or people from
>other departments.

You mean it isn't? :-)

Seriously, though, you missed one of Tony's points. In this university,
we teach one first-year course for intending Computer Science graduates,
one for students of other science departments who need to be taught
computing, and one for non-scientists. That, at least, is how the three
courses (Computer Science 1A, Computer Science 1B and Information
Systems 1) are perceived. That is not to say that only intending
Computer Scientists take CS1A; I was an Arts student when I did the
course, but that's a whole 'nother posting. (Oh no not another they cry!)

Returning to the point, the contents of each course are different; in
particular the CS1A course (for intending Computer Science graduates)
contains theoretical material missing from the CS1B course. On the other
hand, CS1B covers more general issues (not in great detail) which are
missing from the CS1A course (most of which are covered in greater
detail in later years). Included in this is the existence of other
languages, like LISP and ML.

bill?>  [...] It would be nice if a physicist (for example) could stick 
bill?>  primarily to physics and not have to learn a second discipline 
bill?>  (computer science).  

Very nice. Unfortunately I don't see this happening in the too-near
future, although I feel it should be one of the goals of Computer
Science.

>Yes, but if a scientist is going to use a tool, like a computer, it
>would be a good idea to learn how to use it, to gain some skill at it.

Couldn't agree more. This is why the Computer Science department teaches
first year engineers how to program. And a bit about how the machines
work, as well.

jon>  Again, let's not confuse the art of programming with science.

H'm...does this mean "let's not call programming a science when it is
really an art", or does it mean "let's not confuse this art of
programming by bringing science into it"? (grin)

Seriously, again, there is a scientific element to certain areas of
computing, with effects in the field of programming. In particular,
things like algorithm analysis and formal methodologies can be of use to
the programmer. 

tjc>  Computer Science most certainly IS NOT engineering. If anything it's a 
tjc>  branch of mathematics.

jon>Then your computer science is different from the one I see.  The bulk
jon>of what people call computer science is people designing and building
jon>new operating systems, compilers, expert systems, hardware, languages,
jon>communication networks, and so on.  This is *engineering*...

[ the rest of Jonathon's lengthy bit about science v engineering deleted]

Ah. We have here, it seems to me, too great a distinction being drawn
between engineering and science. Engineering, in this context, seems to
me to be an application of science. This not to say that science is in
any way superior to engineering; more that they're different sides of
the same coin. A coin called technology.

Engineers require a certian amount of scientific knowledge. Chemical
engineers need to know chemistry, mechanical and electrical engineers
need to know a certain amount of physics. This material provides a
theoretical basis to the technology with which these people work.

Likewise, then, computer programmers require a certain theoretical basis
from which to work. From this we can build up a discipline which could
be called 'software engineering'. To quote from Jonathon:

jon>The bulk of CS, as it is generally talked about, is engineering --
jon>designing, working out practical problems, implementing, etc.  

I submit that this work is simplified by the existence and *use* of a
theoretical basis from which this engineering can proceed. I'm not sure,
but I think Jonathon agrees with this to some extent:

jon> There is no *science* being done in these applied areas, even
jon>though the application may further knowledge in the field.  

I think part of the overall problem is a difference in semantics. Engineers
in the States, if I recall rightly, are part of a highly respected
profession. Unfortunately in the UK, a certain snobbery still exists
which condemns engineers to being a lower form of life than scientists.
Hence, engineering is cognate with greasy hands and sweaty brows rather
than white coats and air-conditioned offices.

Back to Jonathon:
jon>The science of computers is the less-popular theory --
jon>the study of things like computability, decidability, and algorithms.

Returning briefly the issue of 'engineering vs mathematics', can I 
point out that issues such as computability and decidability arose from
work on formal systems which predates the existence of computers, and
which was largely carried out by logicians and mathematicians? It is
from this formal background that our present day notions of what is
computable are derived. In this sense, Computer Science is indeed a
branch of mathematics.

As Tony's pointed out in another article, perhaps if an interest in this
work was taken by more programmers, we would have better programs being
written. 

pcm> [ ... ]  I have just changed jobs.  In no interview was I asked
pcm> whether I knew ML; in every interview I was asked if I knew C.

bill?>  [...] I used to list ML on my resume as one of the programming languages 
bill?>  I know.  I finally removed it because (1) nobody had ever heard of it, 
bill?>  and (2) when I explained what it was, they didn't care.

tjc>   If they don't care then they ain't worth working for!

jon>Anthony is clearly not going to get a job in the US.  

Well, that's you told, Antoine! Mind you, I agree. (Fortunately, I have
no desire to work in the US.)

nevin1> Learn the good programming habits first

jon>YES YES YES YES YES 

Yes. Now we come back to the origin of the matter. As I said a few posting
back, I have found that learning other programming languages *helps*
learn good habits. First off, structure: This is enforced by languages
like Pascal and Modula, which therefore make them good ideas as teaching
languages. Languages like C , FORTRAN and IMP (another of our obscure
Edinburgh languages, but one of the most efficient OS's in the world is
written in it) do not enforce structure and therefore allow bad habits
to develop.

However, languages like Prolog and ML also have uses. The Artificial
Intelligence department uses Prolog for its undergraduate teaching. The
CS department teaches ML, partly to give a feel for other styles of
programming and partly to illustrate the some of the theoretical
material taught in the course. Having programmed in ML certainly makes
Computability Theory more understandable; it has also affected the way I
think about functions when I'm writing in procedural languages. Even if
my prospective employer has never heard of it, I am a better programmer
for the experience. Likewise, my current work with Smalltalk has led to
a change in the way I view data structures. I'm not likely to find a job
working with Smalltalk immediately I graduate, but the knowledge is
worthwhile.


Well, that's that said. How do I finish up? I think I'll just stick in my
signature and leave it at that....

	--Rick.


-- 
Janet: rick@uk.ac.ed
BITNET: rick%uk.ac.ed@UKACRL
ARPA: rick@ed.ac.uk
UUCP: rick%uk.ac.ed%ukc@mcvax

"Life would be so much easier if everyone read the manual."
Technical Details
Message-ID: <1038@its63b.ed.ac.uk>
Path: arc1-ca.pugleaf.net!utzoo!mnetor!uunet!mcvax!ukc!its63b!csrdi
References: <1016@its63b.ed.ac.uk> <2922@pitt.UUCP>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!mnetor!uunet!mcvax!ukc!its63b!csrdi
From: csrdi@its63b.ed.ac.uk (Janet: rick@uk.ac.ed)
Newsgroups: comp.lang.misc
Subject: re: First Languages (yet again) [long: ~200 lines]
Message-ID: <1038@its63b.ed.ac.uk>
Date: 3 Mar 88 16:06:26 GMT
References: <1016@its63b.ed.ac.uk> <2922@pitt.UUCP>
Reply-To: csrdi@its63b.ed.ac.uk (Rick Innis, CS4)
Organization: Computer Science, University of Edinburgh, Scotland.
Lines: 187
Keywords: engineering, science, programming.
Summary: Science, Technology and Engineering: a philosophical treatise.