Newsgroups: comp.edu,comp.lang.ada,comp.lang.c++,comp.lang.modula2,comp.lang.scheme
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news4.ner.bbnplanet.net!news3.near.net!paperboy.wellfleet.com!news-feed-1.peachnet.edu!gatech!news.sprintlink.net!uunet!in1.uu.net!psinntp!psinntp!psinntp!psinntp!merlin.hgc.edu!jcm
From: jcm@hgc.edu (James McKim)
Subject: Re: Comparison of languages for CS1 and CS2
Message-ID: <1995Jul13.180040.4435@merlin.hgc.edu>
Sender: usenet@merlin.hgc.edu (Action News Central)
Organization: The Hartford Graduate Center
References: <3tsp99$233@felix.seas.gwu.edu> <3tts2p$k2a@starbase.neosoft.com> <2440@rowan.ukc.ac.uk>
Date: Thu, 13 Jul 1995 18:00:40 GMT
Lines: 107
Xref: glinda.oz.cs.cmu.edu comp.edu:13273 comp.lang.ada:32606 comp.lang.c++:138310 comp.lang.modula2:12046 comp.lang.scheme:13175

In article <2440@rowan.ukc.ac.uk> I.A.Utting@ukc.ac.uk (iau) writes:
>In article <3tts2p$k2a@starbase.neosoft.com>,
>David Weller <dweller@Starbase.NeoSoft.COM> wrote:
>>1. Advocates of C++ in CS1/2 simply cannot argue on intellectual merits.
>
>I'm getting a little fed up of this repeated, unsupported, assertion.
>Let me just re-iterate some of the arguments I've heard made in favour
>of C/C++ in every iteration of this discussion I've been involved with.
>I guess they'll be derided as insufficiently "intellectual", as they're
>primarily involved with *educational* issues. But hey, that's my job.
>
>1. We should teach languages to CS students iff they contribute to the
>   overall educational experience. That is, there is no point teaching

Here we agree.

>   more than one language to do the same job. You'll recognise this as

I might agree here if you can define "same job". For example, I think
C++ is a good language for writing system level code, so it's a good
language to use in systems programming and architecture type classes.
There's no need to spend a _lot_ of time on any other low level language.

In fact, I'm a great believer in using the best tool for the job. When
the job is teaching good programming or software engineering principles,
C++ is not the best, or even a particularly good, choice.

>   Ockham's razor, it's made crucial by the expanding nature of the CS
>   discipline and the fixed size of the programmes we have to stuff it

The ever changing nature of the CS discipline is precisely why students
must be exposed to a variety of different languages, environments, points
of view, etc.

>   all in to. On the other hand, this is not to rule out "comparative
>   languages" courses -- their useful role is different and not focussed
>   on learning the languages involved as an end in itself.

Such necessarily superficial coverage of other languages is not sufficient
to provide the student with a _real_ understanding of alternatives.   

>
>2. Environmental support for a language is increasingly important as we
>   teach programming at a higher and higher level of abstraction.
>   We need to use a language which has supporting testing tools, metrics
>   generators, (code generating) CASE tools, component libraries (eg
>   numeric, data organisation and storage, GUI, distributed systems, etc,
>   etc) and, crucially, text books. Many languages have some of these,
>   few other than C/C++ have all of them.

Most of these are available for Ada, Eiffel, and Smalltalk to name three
that I'm familiar with. I will concede that such tools are more readily
available (typically cheaper, more selection) for C/C++. This is an important
issue and is IMHO, the one good argument for using C++ in CS1. It's just
not sufficiently compelling compared to issues like

  "Teaching Arrays in C++ is a nightmare"

The above line was posted recently in this group by a _supporter_ of
using C++ in CS1.

>
>3. It is difficult (impossible?) to teach students to program well in a
>   language which does not allow them to program badly. How do you teach
>   students about undisciplined use of multiple exits from functions when
>   they're writing in Pascal? Proliferation of global variables and function
>   side-effects in Miranda? We've long seen these problems when moving from
>   HLL's to assembler.

I'm sorry I can't take this as a serious argument for choosing C++, or
any other language, especially in a first course. Sure, students need to
learn about low level programming and that their code at this level should
be as well structured as they can make it. But teach 'em that _after_ they've
had experience with a good HLL.

>
>4. (A bit pragmatic, this one.) One of our goals in education is to motivate
>   students. An easy way to do this is to use (all else being equal) tools
>   which they believe will be useful to them in the future. Course
>   evaluation returns for my recent (final year) OO course have suggested
>   that the focus on C++ in the course is important for the majority of the
>   students. If I believe that the subject is important (which I do) then
>   using C++ is a positive way to increase students interest and commitment.

"A bit pragmatic..."? :-)
   ^^^
>
>At Kent, we are changing from Pascal to Modula-3 (both with Miranda),
>and although we're pretty happy with M3 on many counts, I don't think
>that we any more believe it to be a substantially smaller, cleaner and
>easier to learn/teach language than C/C++.

I can only assume you're changing to Modula-3 as opposed to C++ because
most members of your department feel that M3 is a superior teaching tool
to C++. Please correct me if I'm wrong.

>
>Ian.


Regards,
-- Jim
-- 

*------------------------------------------------------------------------------*
Jim McKim  (203)-548-2458     Co-editor of Eiffel Outlook 
Internet:  jcm@hgc.edu        Subscribe early and often!
