[comp.lang.ada] Ada for undergrads - summary.

collberg@dna.lth.se (Christian S. Collberg) (06/04/90)

The following is a summary of the responses I got to my message regarding
the use of Ada as a teaching language for undergraduates. I haven't done 
much editing, and include the messages pretty much the way I got them.

Thanks to all who responded. 

Chris Collberg
collberg@dna.lth.se

--------------------------------------------------------------------------------
From: gvcormack@watdragon.waterloo.edu (Gordon V. Cormack)

At Waterloo, our main second-year course uses Ada.  I have tried the
following:

    Ada reference manual

    Barnes,  "Programming in Ada"

    Watt, "Ada language and methodology"

None of the above is perfect.  Barnes suffers from lack of complete
worked examples.  Watt has some examples, is better at general design 
principles, but doesn't necessarily explain language features in enough 
detail.  The LRM offends about half the class, but the other half like 
it, in conjunction with lectures that give motivation and show how the 
pieces fit together.

Some of the 'intro to programming with Ada' look interesting, but
wouldn't be appropriate for the course we teach.  Similarly, I often
show Gehani's book to my colleagues who want a tour through Ada, but
it doesn't quite fit as a text for this course.

There is a shareware ADA_TUTR program [Software Innovations Tech.,
1083 Mandarin Dr. NE, Palm Bay, FL  ... (407)951-0233].  I have made
this informally available, and it appears reasonable, but I haven't
expended the effort yet to decide whether we are going to start using
it as an aid to the course.
-- 
Gordon V. Cormack     CS Dept, University of Waterloo, Canada N2L 3G1
gvcormack@waterloo.EDU  gvcormack@uwaterloo.CA  gvcormac@water.BITNET

From mfeldman@seas.gwu.edu Tue May 15 05:56:17 1990

We have taught Ada in a data structures and algorithms course since 1984.
Since 1985 we have used "Data Structures with Ada" by Michael Feldman (yes
that's me, sorry to seem like I'm pushing my own book). You can get it
from Prentice Hall. I'd be glad to answer questions you may have about it.

[...]

Write to Carl Brandon (carlb@eleazar.dartmouth.edu) - he is the SIGAda
education chair and conducted the survey about 2 years ago. I don't think
there's anything more recent.

Prof. Michael Feldman
Department of Electrical Engineering and Computer Science
The George Washington University
Washington, DC 20052
+1-202-994-5253
mfeldman@seas.gwu.edu
---------------------------------------------------------------------------

From: karl@grebyn.com (Karl A. Nyberg)

I don't teach, but I have some thoughts on what I've heard.

Norm Cohen's Ada As A Second Language, from Prentice-Hall, I think.

My version of the Annotated Ada Reference Manual, complete with ISO
annotations.

I can send you literature on my book, including educational discounts, if
you'll send me a mailing address.

-- Karl --
-- 
Karl A. Nyberg			karl@grebyn.com	
Grebyn Corporation		+1-703-281-2194
Post Office Box 497
Vienna, VA 22183-0497 USA

--------------------------------------------------------------------------------
From ken@minster.york.ac.uk Wed May 16 10:57:40 1990

John Barnes' book (third edition)

Ken

--
Ken Tindell             UUCP:     ..!mcsun!ukc!minster!ken
Computer Science Dept.  Internet: ken%minster.york.ac.uk@nsfnet-relay.ac.uk
York University,        Tel.:     +44-904-433244
YO1 5DD
UK

--------------------------------------------------------------------------------

From: xanadu@ada2.crd.ge.com (Rick Conn)

I teach a Software Engineering with Ada course at the University of
Cincinnati, and I've found the combination of the Ada_TUTR shareware
program (available in the ASR) and "Rendezvous with Ada: A Programmer's
Introduction" by David Naiditch (published by Wiley, 1989) to be a useful
supplement.  Both the program and the book cover the same topics in
almost exactly the same order, and they supplement each other nicely.
They are clearly to be used to teach the language only, but since my
course is on SE with Ada, my main objective is the SE part, and students
lacking in Ada can study these on the side as we proceed through the
course.

With this approach, by the time SE II comes around, all the Ada questions
are gone, and we can explore topics such as reuse with Ada in depth.

Rick

--------------------------------------------------------------------------------
From: kassover@jupiter.crd.ge.com (David Kassover)

In article <1869@sparko.gwu.edu> mfeldman@seas.gwu.edu () writes:
[much good and interesting text on teaching of Ada deleted]
|Really the best way to teach Ada to undergraduates is to skip the
|intermediate step of Pascal and plunge in, right from CS1. The books
|and the compilers are getting there. A problem we will face in
|dealing with _good_ freshmen is that many of them will be able to
|place out of CS1 through having taken an AP course in high school
|and scored high on the AP exam. AP courses are almost always Pascal.
|Suggestions for how to deal with these?

Generate a good, stiff, set of problems (data structures,
algorithms, software tools, software engineering issues), and
insist that the implementations, for the purposes of the course,
be written in an assembler or FORTRAN-66.

I believe this will separate the good programmer/analysts from the 
"neat-features-of-the-language" selectors.  To some extent, anyway.
--
David Kassover             "Proper technique helps protect you against
kassover@ra.crd.ge.com	    sharp weapons and dull judges."
kassover@crd.ge.com			F. Collins

--------------------------------------------------------------------------------
From: cathy@three.MV.COM (Cathy Segedy)

May I make a suggestion?  If you are going to teach Ada, don't teach it as
'just like Pascal except for....'  From what I've heard, courses like this
don't usually have the time to get to the 'except for..' parts, leaving the
students with very little real knowledge.  This is, by the way, not first
hand experience.  I saw little reason to take a course in it after helping
write a compiler for it...
					cathy segedy

cathy@three.mv.com    (formerly 3letter)


--------------------------------------------------------------------------------
From: mfeldman@seas.gwu.edu (Mike Feldman)

In article <310@three.MV.COM> cathy@three.MV.COM (Cathy Segedy) writes:
>
>May I make a suggestion?  If you are going to teach Ada, don't teach it as
>'just like Pascal except for....'  From what I've heard, courses like this
>don't usually have the time to get to the 'except for..' parts, leaving the
>students with very little real knowledge.  This is, by the way, not first

I will second Ms. Segedy's suggestion. I think the most important thing we
can do is to know our audience. I teach Ada quite regularly to undergrads,
grad students who haven't worked in industry, grad students who are
currently in industry, and industry folks in 5-day seminars. I find
that the more experienced students (rather, the ones who know other
languages) appreciate the _analogies_ between parts of Ada and parts of
other languages. A Pascal-er can see lots of Pascal in Ada, a Fortran-er
can see aspects of Fortran, exceptions are like in Pl/1 but different,
etc. etc.

We in the Ada community often make the mistake of over-selling Ada as
something NEW, UNIQUE, REVOLUTIONARY!! My experience with practitioners
is that they are more open-minded to what is _really_ new in Ada after
they understand that Ada is a nice integration of many things that are
tried and true in other languages. This is the best way to counter the
still-prevalent notion in industry that Ada is "risky" and "unproven."
(It does require that the teacher be experienced enough with other
languages to speak intelligently about them; it also helps to take
a balanced and non-religious approach to all these languages!)

Most of Ada is very well proven indeed; readers of this group know very 
well that many folks dump on Ada for being too _conservative_ to adopt 
each new thing that comes down the pike. It is no criticism of, say,
inheritance, to point out that it scarcely existed in 1979 when the first
Ada draft was published, and that Smalltalk was a proprietary (and
still experimental) Xerox thing in 1983 when 1815-A was adopted!

The point is that Ada is a rather conservative and that this is generally 
a good thing because most of its features are tried, true, compilable, 
executable, etc.  So saying "this part of Ada was cribbed from Pascal 
(PL/1, C, Fortran...)" gives practitioners a frame of reference in which 
to understand where Ada came from, that it wasn't just cut from whole cloth.
In my experience the approach works like a charm and disarms many of
the criticisms right at the outset.

Well, it turns out this works with students as well. Especially if we are
doing Ada as a _second_ language, after Pascal. In fact, the "inner syntax"
of Ada is so close to Pascal (but better IMHO) that I don't bother to
teach it at all. I distribute a set of about 50 "little" programs that
introduce the inner syntax and the IO libraries, tell 'em to go
compile them and report back which ones don't work (1/3 or so of them
are booby-trapped with compilation errors). Then we can get on, quickly,
with what Ada is _really_ about. (Packages, generics, unconstrained arrays,
tasking, exceptions, repspecs,...)

(If anyone would like a copy of these programs, send me e-mail, and let
me know if you can unpack a Unix shell archive).

Really the best way to teach Ada to undergraduates is to skip the
intermediate step of Pascal and plunge in, right from CS1. The books
and the compilers are getting there. A problem we will face in
dealing with _good_ freshmen is that many of them will be able to
place out of CS1 through having taken an AP course in high school
and scored high on the AP exam. AP courses are almost always Pascal.
Suggestions for how to deal with these?

Prof. Michael Feldman
Department of Electrical Engineering and Computer Science
The George Washington University
Washington, DC 20052
+1-202-994-5253
mfeldman@seas.gwu.edu
---------------------------------------------------------------------------


From: westley@corsair.uucp (Terry J. Westley)

In article <1869@sparko.gwu.edu> mfeldman@seas.gwu.edu () writes:
> I teach Ada quite regularly to undergrads,
>grad students who haven't worked in industry, grad students who are
>currently in industry, and industry folks in 5-day seminars. I find
>that the more experienced students (rather, the ones who know other
>languages) appreciate the _analogies_ between parts of Ada and parts of
>other languages. A Pascal-er can see lots of Pascal in Ada, a Fortran-er
>can see aspects of Fortran, exceptions are like in Pl/1 but different,
>etc. etc.
>
>We in the Ada community often make the mistake of over-selling Ada as
>something NEW, UNIQUE, REVOLUTIONARY!! My experience with practitioners
>is that they are more open-minded to what is _really_ new in Ada after
>they understand that Ada is a nice integration of many things that are
>tried and true in other languages.

yes, Yes, YES.

I don't have as much experience teaching Ada as does Prof. Feldman, but
in teaching 5-day courses to "industry folks" and "practitioners," I
have come to the same conclusion.  I get so many students who, when the
light bulb really goes on, will come to me and exclaim over some feature
that is "just like" such and such a language, only better.  The "better"
is usually that it can be used in combination with other features of the
language to make the sum greater than the parts.  I think I've really
accomplished something when this happens.

>Really the best way to teach Ada to undergraduates is to skip the
>intermediate step of Pascal and plunge in, right from CS1. The books
>and the compilers are getting there. A problem we will face in
>dealing with _good_ freshmen is that many of them will be able to
>place out of CS1 through having taken an AP course in high school
>and scored high on the AP exam. AP courses are almost always Pascal.
>Suggestions for how to deal with these?

This is an interesting problem.  I don't have a suggestion.  If I could
get a cheap enough Ada compiler on the Mac (that can access the Toolbox,
etc.) for my 12-year-old son who knows BASIC and HyperTalk, I'd get it
instead of THINK C.  Then, at least, I wouldn't contribute to the problem.
Meridian and RR, are you listening?

Terry J. Westley
Arvin/Calspan Advanced Technology Center
P.O. Box 400, Buffalo, NY 14225
acsu.buffalo.edu!planck!hercules!westley


---------------------------------------------------------------------------------