[comp.edu] First language taught in CSC degree track

shaffer@operations.dccs.upenn.edu (Earl Shaffer) (07/15/87)

I have a questions which should stir up a debate.

Which language should be taught first in the Computer Science
track for incoming freshman?

We are assuming that is possible to teach almost any (exceptions:
Snobol, C++, Forth, etc.) and that it is phyiscally possible to teach
any language (example: CICS COBOL, Burroughs Super Algol).

The point of all of this is that back when I was in school, Pascal
had just replaced Basic as the languages *generally* taught first
in a CSC 101 type class.  I hear that 'C' has gained in popularity
enough that schools are using C rather than Pascal for intro courses.

Remember, this is the course that will teach all the bad habits we
learned from our first language(s)! (happy face)  For example, I
still use "I" for counters because I learned Fortran first. (yech!)

Well, what do all of you think?

(flames to /dev/null)



		cheers,




==============================================================================
Earl Shaffer - University of Pennsylvania - Data Communications Department
"Time was invented so that everything wouldn't happen at once." Steven Wright
==============================================================================

jholbach@wright.EDU (Jim Holbach) (07/16/87)

in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says:
> Xref: wright soc.college:94 comp.edu:381
> 
> I have a questions which should stir up a debate.
> 
> Which language should be taught first in the Computer Science
> track for incoming freshman?
>

	English.



J. Holbach
 

gcm@mtgzz.UUCP (g.c.mccoury) (07/16/87)

In article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) writes:
> Which language should be taught first in the Computer Science
> track for incoming freshman?
> 
> Remember, this is the course that will teach all the bad habits we
> learned from our first language(s)! (happy face)  For example, I
> still use "I" for counters because I learned Fortran first. (yech!)

	Anybody know if they are still teaching Fortran as the intro CS class
at Penn State these days? Just wonderin because it was such a *fun* class for
me at the time ;-) Right after this class came IBM 360/370 assembler - this
class really thinned out the crowd :-}

	From your local PSU graduate.....

/***************************************************************************
*									   *
*      e N			Grover McCoury				   *
*    B     o			ATT Laboratories(?) [was ISL]		   *
*   y       r m a l  ??		...!ihnp4!mtgzz!gcm			   *
*   h									   *
*     W				I refuse to have a battle of wits	   *
*				  with an unarmed person...		   *
*									   *
****************************************************************************/

credmond@orchid.UUCP (07/17/87)

In article <1472@super.upenn.edu.upenn.edu> shaffer@operations.dccs.upenn.edu.UUCP (Earl Shaffer) writes:
>
>Remember, this is the course that will teach all the bad habits we
>learned from our first language(s)! (happy face)  For example, I
>still use "I" for counters because I learned Fortran first. (yech!)
>

And you think that's bad?  (Another round of old-timer stories.)  *I*
learned my first bits of programming in a language called FORGO, which
seems to have disappeared from the face of the earth.  I think it must
have been a subset of FORTRAN II.  Probably explains why I ended up
majoring in English and political science!

elg@killer.UUCP (Eric Green) (07/18/87)

in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says:
> Xref: killer soc.college:939 comp.edu:480
> 
> I have a questions which should stir up a debate.
> 
> Which language should be taught first in the Computer Science
> track for incoming freshman?

Scheme, of course! With _Structure and Interpretation of Computer Programs_
out there, why bother with squashing semi-colons in Pascal, fer chrissakes? I
spent most of my freshman year hitting errors like these:

  procedure barf (j:array[1..20] of char);
....
  if x > y and y < z then
     begin
        ...
     end;
  else
.....

Whoobay. I can think of funner things to do! Was almost a relief to learn PL/1
-- just put a semicolon at the end of each line, and it's happy as a lamb
(note that this was before Unix and "C" became popular).  As for learning "C"
as the first language... "C" has a fairly complex syntax, too.  For example,
if a freshsman first sees

  for(i=0;i<limit;i++) puts(trash[(i<maximum)?i:0]);

"uh....... gee, does that work?"

Much easier to just wrap parentheses around everything and forget totally
about such nasty things...
--
Eric Green   elg%usl.CSNET     Ron Headrest: A President
{cbosgd,ihnp4}!killer!elg      for the Electronic Age!
Snail Mail P.O. Box 92191      
Lafayette, LA 70509            BBS phone #: 318-984-3854  300/1200 baud

dnk@bucsb.bu.edu.UUCP (Danny Kumamoto) (07/19/87)

In article <145@wright.EDU> jholbach@wright.EDU (Jim Holbach) writes:
>in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says:
>> Xref: wright soc.college:94 comp.edu:381
>> 
>> I have a questions which should stir up a debate.
>> 
>> Which language should be taught first in the Computer Science
>> track for incoming freshman?
>>
>
>	English.
>
>
>
>J. Holbach
> 

Right on!

English, English and more English, and throw in some extra grammar and
writing classes (e.g., technical writing).
-- 

Danny

ARPANET:  dnk@bucsb.bu.edu      BITNET:   cscjfsn@BOSTONU
CSNET:    dnk%bucsb@bu-cs       UUCP:     ..!harvard!bu-cs!bucsb!dnk
Phone:    (617) 547-5033        Voice:    "Hey Danny" will do
USnail:   14 Laurel St., Cambridge, MA  02139, U.S.A.

                  "Joy is in the ears that hear."
                     -- Saltheart Foamfollower

paradis@encore.UUCP (Jim Paradis) (07/20/87)

In article <1472@super.upenn.edu.upenn.edu> Earl Shaffer writes:
>Which language should be taught first in the Computer Science
>track for incoming freshman?
>
>Remember, this is the course that will teach all the bad habits we
>learned from our first language(s)! (happy face)  For example, I
>still use "I" for counters because I learned Fortran first. (yech!)

Believe it or not, at MIT they teach Lisp in their intro-CS course!
(6.001 for you techies out there).  When I was a froshling they used
a strange dialect called Ulisp that ran on a DEC-20.  By the time I
left they were using Scheme on HP micros, and I think they'll be doing
that for a while.  Anyway, one of the reasons that they did this was
because a LOT of MIT CS majors already had played with computers before
coming to MIT, and so were chock-full of bad habits from their various
"first languages".  By using a language unlike anything most anyone
had seen before, they hoped to be able to start on a cleaner slate.
Of course, that didn't prevent ME from speaking Lisp with a heavy Fortran
accent for a while... but I got over it eventually.

   +----------------+  Jim Paradis                  linus--+
+--+-------------+  |  Encore Computer Corp.       necntc--|
|  | E N C O R E |  |  257 Cedar Hill St.           ihnp4--+-encore!paradis
|  +-------------+--+  Marlboro MA 01752           decvax--|
+----------------+     (617) 460-0500             talcott--+
You don't honestly think ENCORE is responsible for this??!!

rterrell@ncoast.UUCP (Roger Terrell) (07/21/87)

>Which language should be taught first in the Computer Science
>track for incoming freshman?

Modula-2 is an excellent language; it is useful for teaching structured
programming techniques, is a high-level language (but can also do low-level
things), etc.  If one learns Modula-2 *properly*, then one has also learned
good software developement too.  It is much better than C (only my opinion)
for these things, and certainly better than pascal.  As powerful as Ada, 
but much easier to use and easier to learn.

Roger Terrell
Muskingum College

UUCP: ...cbosgd!musky2!terrell
CSNet: ccterrell%muskingum.edu@relay.cs.net

talbot@tc.fluke.COM (Todd Smith) (07/23/87)

In article <3263@ncoast.UUCP> rterrell@ncoast.UUCP (Roger Terrell) writes:
>>Which language should be taught first in the Computer Science
>>track for incoming freshman?
>
>Modula-2 is an excellent language;

Indeed. Rumor has it that, begining this fall, Stanford will begin teaching
Modula-2 in place of Pascal in it's 'Intro to Software Engineering' courses
(CS 106A & B). Why? Because Modula-2 is much better than Pascal when it
comes to modules and modular programming (In our implementation anyway) and
these courses (esp. B) are *very* module oriented.

					Todd

INTERNET: talbot@tc.fluke.COM, talbot@portia.stanford.edu
UUCP:     {uw-beaver, sun}!fluke!talbot

jcz@sas.UUCP (John Carl Zeigler) (07/24/87)

I have recently been convinced that the introductory language
courses in Computer Science should teach C, Fortran, and Pascal.
Lisp and Assembly should be demonstrated, but perhaps no assignments
given.    ONLY the languages' basic syntax differences and a discussion
of the different problems the languages were developed to solve would
Two or three simple assignments in each language would be presented.

Later courses could deal with more theoretical differences, but a 
background in several languages and some discussion of the motivations
behind their designs would more benficial than studying one particular
language.   At NCSU, we had a sequence of 3 hour courses that taught
fundamental concepts, with many 1 hour courses to chose from that
covered individual languages.   All fundamental courses used PL/I
(bleaaaa!), then later Pascal (arf, arf).    In general, project courses
allowed any language available to be used.

-- 
--jcz
John Carl Zeigler
SAS Institute Inc.
Cary, NC  27511           (919) 467-8000        ...!mcnc!rti!sas!jcz

roz@l.cc.purdue.edu (Vu Qui Hao-Nhien) (07/25/87)

In article <145@wright.EDU> jholbach@wright.EDU (Jim Holbach) writes:
>in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says:
>> I have a questions which should stir up a debate.
>> 
>> Which language should be taught first in the Computer Science
>> track for incoming freshman?
>	English.
Right.

And maybe even, God forbid, grammar and paragraph development too !!
It's true that many CS majors can't talk/write properly, but I guess
the damage is usually not hereditary and won't go past one generation
so it's OK :-)

Anyhow, to get back to the real meaning of the original article, at
Purdue, the intro course for CS majors (CS 230) teaches Pascal and C.
They have always been teaching Pascal, and they don't want students of
about the same class going on totally different tracks.

Personally, I like that approach of teaching lisp if your students have
all had programming experience and picked up bad habits here and there.
-- 
"I tawt I taw a tootty tat"
Hao-Nhien Q. Vu (pur-ee!l.cc.purdue.edu!vu)
                (vu@l.cc.purdue.edu)
                [That's "ell", not "one"]

aaz@i.cc.purdue.edu (Pete-Bob) (07/27/87)

 In article <558@l.cc.purdue.edu> roz@l.cc.purdue.edu.UUCP (Vu Qui Hao-Nhien) writes:
 >In article <145@wright.EDU> jholbach@wright.EDU (Jim Holbach) writes:
 >>in article <1472@super.upenn.edu.upenn.edu>, shaffer@operations.dccs.upenn.edu (Earl Shaffer) says:
 >>> Which language should be taught first in the Computer Science
 >>> track for incoming freshman?
 >>	English.
 >Right.
 >
 >Anyhow, to get back to the real meaning of the original article, at
 >Purdue, the intro course for CS majors (CS 230) teaches Pascal and C.
 >They have always been teaching Pascal, and they don't want students of
 >about the same class going on totally different tracks.
 >
 >"I tawt I taw a tootty tat"
 >Hao-Nhien Q. Vu (pur-ee!l.cc.purdue.edu!vu)
 >                (vu@l.cc.purdue.edu)
 >                [That's "ell", not "one"]
 
 	When did Purdue start teaching C in their intro CS course
(cs230)?  Last I had heard, it consisted entirely of Pascal.  Many of
the courses at Purdue, even in the upper-division, require that students
use Pascal.  (For ease in compiling and grading)  In fact, until
recently, none of the C.S. courses taught C to undergraduates.  They
had to learn it on their own or take it from the EE department.  
(As I did.)

					Pete Apple
					aaz@i.cc.purdue.edu

jsnyder@uw-june.UUCP (J. R. Snyder) (07/29/87)

In article <1317@sputnik.COM> talbot@tc.fluke.COM (Todd Smith) writes:
>In article <3263@ncoast.UUCP> rterrell@ncoast.UUCP (Roger Terrell) writes:
>>>Which language should be taught first in the Computer Science
>>>track for incoming freshman?
>>
>>Modula-2 is an excellent language;
>
>Indeed. Rumor has it that, begining this fall, Stanford will begin teaching
>Modula-2 in place of Pascal in it's 'Intro to Software Engineering' courses
>(CS 106A & B). 

The University of Washington made this switch several years ago.

>Why? Because Modula-2 is much better than Pascal when it
>comes to modules and modular programming (In our implementation anyway) and
>these courses (esp. B) are *very* module oriented.

Yup, those are the reasons, among others.  Another way of saying it is that
Modula supports abstract data types better than Pascal.  (So does Ada,
but it's clearly not suitable as a first tongue for many reasons.)


jsnyder@june.cs.washington.edu.arpa         John R. Snyder
{ihnp4,decvax,ucbvax}!uw-beaver!jsnyder     Dept. of Computer Science, FR-35
                                            University of Washington
206/543-7798                                Seattle, WA 98195

mikey@rocky.STANFORD.EDU (Mike Yang) (07/29/87)

In article <2893@uw-june.UUCP>, jsnyder@uw-june.UUCP (J. R. Snyder) writes:
> In article <1317@sputnik.COM> talbot@tc.fluke.COM (Todd Smith) writes:
> >Why? Because Modula-2 is much better than Pascal when it
> >comes to modules and modular programming (In our implementation anyway) and
> >these courses (esp. B) are *very* module oriented.
> 
> Yup, those are the reasons, among others.  Another way of saying it is that
> Modula supports abstract data types better than Pascal.  (So does Ada,
> but it's clearly not suitable as a first tongue for many reasons.)
>

Actually, Todd's information was a little out of date.  Stanford was going
to switch to Modula-2, but has now decided to switch to Ada (yeech) as
the first language taught later next year. 

Apparently, the Assistant Chairman for Undergraduate Education at Stanford's
CS department feels that Modula-2 is on its way out.  I wonder if he's
aware of the many reasons why Ada is clearly not suitable as a first
tongue...

- Mike

jsnyder@uw-june.UUCP (J. R. Snyder) (07/30/87)

In article <455@rocky.STANFORD.EDU> mikey@rocky.STANFORD.EDU (Mike Yang) writes:
>Actually, Todd's information was a little out of date.  Stanford was going
>to switch to Modula-2, but has now decided to switch to Ada (yeech) as
>the first language taught later next year. 
>
>Apparently, the Assistant Chairman for Undergraduate Education at Stanford's
>CS department feels that Modula-2 is on its way out.  I wonder if he's
>aware of the many reasons why Ada is clearly not suitable as a first
>tongue...
>
Stanford may be a special case here.  My original comments about the 
unsuitability of Ada were the product of a thought experiment in which
I tried to imagine explaining (or avoiding having to explain) concepts
like overloading, generic packages, internal vs. external representations 
of data structures, and the like, to the same bemused sophomores at
the University of Kansas to whom I, once upon a time, could hardly
convey an understanding of where to put the "begins" and "ends" in
Pascal programs.  (I am assuming that we're talking about a small
subset of Ada and don't need to give ourselves nightmares by including
rendezvous in the above laundry list.)  If the folks at Stanford 
think that their students can handle it, I'm not in a position to
contradict them.  I'm confident (pace Dijkstra) that a really good 
teacher can teach good programming practice even with Fortran or Basic,
but that's getting away from the original question.

It does seem to me irrelevant that Modula may be "on its way out." 
On its way out of where?  Certainly no one has ever been able to
argue that Modula-specific knowledge was going to be of any use to
the student outside the academic environment.  (Much better to teach
Lisp, as someone suggested.)  The issue is whether or not another 
language better supports the learning (I almost said teaching) of 
what we currently see as fundamental to good programming practice.
I hope we are making these decisions rationally and not just jumping
on bandwagons.  I certainly hope that no one decides they have to have
Ada just because Stanford has it.

jsnyder@june.cs.washington.edu.arpa         John R. Snyder
{ihnp4,decvax,ucbvax}!uw-beaver!jsnyder     Dept. of Computer Science, FR-35
                                            University of Washington
206/543-7798                                Seattle, WA 98195

ann@decwrl.DEC.COM (Ann Mei Chang) (07/30/87)

After talking to some people at work about the relative virtues of 
Ada, Pascal, and Modula-2 as an intro programming language, I have become
more convinced that Stanford has made a reasonable choice in selecting
Ada as its intro language.

From what I gather, Ada contains all the "good" features that one would
look for in a structured programming language.  Of course, it contains many
other more complex/confusing features, but these would be most likely
avoided and discouraged in an intro course.  The major advantage both Ada
and Modula-2 have over Pascal is the concept of modules.  Ada may also
be considered a more reasonable language to teach than Modula-2 because
it is well supported, and much "real" work has been done on it.  One
problem I think the department was worried about with Modula-2 was that
they weren't sure if they could get a good compiler.  I believe that Ada
compilers are easy to come by, and the army will even give it to colleges 
for free.

I guess my conclusion is that Ada is at least a reasonable choice for an
intro language, provided that certain features are avoided.  In addition,
it is a reasonable language to use in some later classes for covering
such issues as concurrent programming (for which Stanford has used Ada and
C this past year).

By the way, CS majors at Stanford are also exposed to and write programs
in a number of languages other than the "intro" language.  Although a single
language, Pascal in the past, is often chosen for large projects, the
core sequence for CS majors includes work in Lisp, Prolog, C, assembly
language, and possibly others to a lesser degree.

dbcooper@violet.berkeley.edu.UUCP (07/31/87)

  I think that covering `just the important parts' of Ada, and
assigning `just the best parts' of several different languages
in one term, are essentially the same thing:  Feature Use 101.
This approach to teaching programming is what concentrating on
names and dates is to teaching history -- superficial, and
encouraging of plug-in responses rather than thought and analysis.
I can't understand why it is thought that programming badly in
n languages would be preferable to programming well in one.

  Certainly, when a language is too brain-damaged to illustrate the
currently major ideas of programming (like, say, BASIC or COBOL),
then teaching only a single, simple language causes problems.
However, a language like Modula-2 represents essentially the
best-known solution to an extremely large class of programming problems.
Its difficulty over Pascal, say, is in proportion to the increased
ability it allows.  On the other hand, while Ada solves a larger class
of problems, it does so only at the expense of a considerably more
complex solution set.

  As long as we remain willing to change the introductory language
every so often (and not just reupholster it, a la FORTRAN) it seems
reasonable to spend a term or two giving students the chance to
learn the use of a single language well.  There is plenty of time
in later terms to introduce special-purpose languages, or languages
that encompass a different world view.
 
  Maybe one question will help put this in perspective:  Whose
code would you rather read?  That of someone who has learned the
accessible parts of Ada (plus a few new features from last week)?
That of someone who knows the high points of languages X, Y, and Z?
Or that of somebody who is reasonably proficient in \all/ of one
general-purpose language?

elg@killer.UUCP (Eric Green) (08/01/87)

in article <455@rocky.STANFORD.EDU>, mikey@rocky.STANFORD.EDU (Mike Yang) says:
> 
> Apparently, the Assistant Chairman for Undergraduate Education at Stanford's
> CS department feels that Modula-2 is on its way out.  I wonder if he's
> aware of the many reasons why Ada is clearly not suitable as a first
> tongue...

Hmm: Some reasons:

  * SCale: ADA is *HUGE*. So huge that it will CERTAINLY bog down freshmen...
if Pascal causes "cancer of the semicolon", Ada causes "syntax overload
explosion". Related to which:

 * Ambiguous syntactic requirements. There's usually four or five different 
ways to declare any given  Ada data structure, all correct. For example,
"junk: array(1..20) of integer;"
"junk: array(integer range 1..20) of integer;"
etc....... at least the syntactic requirements of a language such as Pascal or
Modula ][ aren't so confusing to poor frosh.

I must admit to being biased. USL uses Ada for two of its introductory CS
courses (Pascal for the first, the rest in Ada), and frankly, I despise the
language -- but then, that might be the "C"/assembler hacker talking. Still,
recalling the talk of many years ago about the impossiblity of verifying the
correct operation of the compiler because the language was so complex, what do
they think that the language complexity does to the PROGRAMMER'S
reliability?!. 
--
Eric Green   elg%usl.CSNET     Ollie North for President:
{cbosgd,ihnp4}!killer!elg      A man we can believe (in).
Snail Mail P.O. Box 92191      
Lafayette, LA 70509            BBS phone #: 318-984-3854  300/1200 baud

 

beth@brillig (Beth Katz) (08/01/87)

One practical reason for not using Ada as the first language
is that most students run their programs through the compiler
over and over again to get rid of syntactic and semantic bugs.
You need fast compilers with descriptive error messages to
handle this type of load.  You also need a compiler that will
not swamp your machine right before assignments are due.  And
that compiler should be affordable and available on the machines
you use for classes.

Although I haven't checked into Ada compilers lately (I'm not
teaching Ada now, and the Ada compiler I am using for research
works well on the Vax and Sun), I don't think you'll find an
Ada compiler today that meets those requirements.  The best
(and closest to correct) Ada compilers are not cheap, and they
tend to run on Vaxes.

When I taught an upperlevel course on software design and
development with Ada, we had to use a research machine because
there wasn't a compiler available for our usual teaching machines
(IBM 4341 and Sperry 1100 whatever).  To keep the class from
overwhelming the Vax, we limited simultaneous Ada compiles for
class members (and kept it lower than we probably needed to, but
that was the agreement).  I thought the error messages were pretty
good, but some of my students complained.

Although I use both Ada and C for my own work, I don't believe
either is the best language for a first programming class.  I
tend to prefer Maryland's approach to teaching the mathematical
foundations of programming with a small subset of a language.
Mastery of English (or one's native language) is essential.

				Beth Katz
				Dept. of Computer Science
				Univ. of Maryland - College Park
				beth@brillig.umd.edu

ken@aiva.ed.ac.uk (Ken Johnson) (08/05/87)

Some readers may know that there has been considerable discussion of
this topic in Scotland. The reason is that the Scottish Education Department
has been specifying new examination requirements for Scottish schools.
Hence, the language they chose is likely to be commonly studied by
students prior to university entry. In some parts of Scotland it will
also become the only examinable computer language in schools.

The chosen language is called "COMAL", which is a structured Basic. 
It runs on the Commodore 64 and on the BBC Micro, to my knowledge.

I would be interested to hear any comments on the choice. (Personally
I would have considered Logo but I happen to work with it.)
What problems (other than purely administrative ones) does it solve?
What problems does it create?

Please E-mail to me: I'll summarise. Apposite responses may also be
used in the public consultation exercise. I happen to disagree with
their choice and it would be useful to have some more ammo in case
war breaks out again on this issue.

	Ken Johnson (ken@aiva.ed.ac.uk)


-- 

From Ken Johnson			| Phone 031-225 4464 Ext 212
     AI Applications Institute		| Email ken@aiva.edinburgh.ac.uk
     80 South Bridge			|
     The University			|
     EDINBURGH, Scotland EH1 1HN	|

elg@killer.UUCP (Eric Green) (08/08/87)

in article <126@aiva.ed.ac.uk>, ken@aiva.ed.ac.uk (Ken Johnson) says:
> 
> Some readers may know that there has been considerable discussion of
> this topic in Scotland. The reason is that the Scottish Education Department
> has been specifying new examination requirements for Scottish schools.

> The chosen language is called "COMAL", which is a structured Basic. 
> It runs on the Commodore 64 and on the BBC Micro, to my knowledge.

Comal solves only half the problems of structured programming. It allows for
structured flow-of-control, via if-then-else, while loops, case statements,
recursive procedures, etc. However, it doesn't allow structured data. The only
complex data structure in Comal is the array. Shades of Fortran. This does not
allow you to easily build linked lists, queues, or other such things which
inevitably become necessary in the course of human events. Logo is a semi-good
choice. The only problem I've seen is that most microcomputer Logo
implementations have been toys, good enough for playing with turtle graphics,
but useless for more complex programs, due to the lack of file i/o, etc. I
know for a fact that Logo on the Commodore 64 is as close to useless as
software can be. I don't know if BBC's Logo is any better, but I really doubt
it. 

I haven't the foggiest notion what language you should teach in the place of
Comal, though. As I recall, most school districts use 6502-based
microcomputers, which rules out any "real" high level language such as "C" or
Pascal (well, at least usable implementations of such). Comal's not THAT bad
(I once programmed a small recursively-defined game in it -- worked great),
but certainly is no winner, either. My first inclination would be to advise
the purchase of "real" computers and use Pascal, but, I really doubt the
funding would be available for such a drastic step....
--
Eric Green   elg%usl.CSNET     Ollie North for President:
{cbosgd,ihnp4}!killer!elg      A man we can believe (in).
Snail Mail P.O. Box 92191      
Lafayette, LA 70509            BBS phone #: 318-984-3854  300/1200 baud

kent@xanth.UUCP (Kent Paul Dolan) (08/08/87)

In article <126@aiva.ed.ac.uk> ken@aiva.ed.ac.uk (Ken Johnson) writes:

[edited for brevity:]

>Some readers may know that there has been considerable discussion of
>this topic in Scotland. The reason is that the Scottish Education
>Department has been specifying new examination requirements for
>Scottish schools.  The chosen language is called "COMAL", which is a
>structured Basic.  I would be interested to hear any comments on the
>choice. (Personally I would have considered Logo but I happen to work
>with it.)

Personally, having taught Logo to my 4 year old daughter, my seven
year old dyslexic son, and having watched my 10 year old son teach
himself Logo from the tutorial manual (the latter IN ONE AFTERNOON), I
would seriously propose this language to all CS curricula as the first
language.  We were using Apple Logo, I think the IBM PClone
environment provides a much larger LOGO workspace, though.  There has
just been a PD posting of Logo to USENet, but I have no experience
with it.

Logo is, from one point of view, a demystified LISP with an excellent
graphics interface.  Because it has both an immediate and an
interpretive mode of execution, and immediate visual feedback, it is
an excellent first language in which to program.  Because it supports
modular programming, recursion, lists, using the source as data,
garbage collection, and so on, it provides an excellent environment in
which to teach the first concepts of computing.

In spite of being simple enough to be picked up quickly by children,
Logo is a powerful language.  I ran out of room on the Apple, but I
was half way through writing a job shop control scheduling package in
Logo a few years ago - its expressive power helps big projects a lot.

Additionally, the visual interface, with its "turtle" metaphor, offers
an extremely powerful motivating mechanism for the student - Logo is
fun to use for programming!

I have noticed, having returned to the academic environment, that the
first computer course is usually exceptionally painful for the
majority of students, because they are fighting Pascal's semicolons,
or LISP's paranthesis, or FORTRAN's FORMAT statements, rather than
learning the concepts we want to teach to them.

Logo suffers from few of these diseases, and offers many benefits.  I
have not seen a programming assignment for a beginning computer course
(except COBOL!) that could not be accomplished easily in Logo.  We
just don't challenge our students much in the first classes!  

Please try it out and consider it for use in your program.  Logo -
it's not just for kids!  Turtle power!

[In response to the poster, I cringe at the thought of trying to teach
anything useful to anyone whose first exposure to programming is a
BASIC dialect, no matter how "structured".  This raises memories from
several years back; during a visit to a NASA facility, I ran across a
document creating a mandatory standard language for a NASA operation;
their "standard" was a BASIC dialect!  Bleech!  A decision only a long
term, computer illiterate bureaucrat could have made!]

Kent, the man from xanth.
--
Kent Paul Dolan, LCDR, NOAA, Retired; ODU MSCS grad student	 // Yet
UUCP  :  kent@xanth.UUCP   or    ...{sun,harvard}!xanth!kent	// Another
CSNET :  kent@odu.csnet    ARPA  :  kent@xanth.cs.odu.edu   \\ // Happy
USPost:  P.O. Box 1559, Norfolk, Virginia 23501-1559	     \// Amigan!
Voice :  (804) 587-7760    -=][> Last one to Ceres is a rotten egg! -=][>

I code reactor power plant control in C.
I add "count_of_recent_alarms" to "count_of_rods_to_lift".
C has weak type checking; the compiler doesn't notice.
A major coolant valve sticks, a spate of alarms occur.
All die.
Oh, the embarrassment!